一、SQL语句

1.分类

  • DDL(data definition language)数据定义语言(create、alter、drop),管理基础数据。例如:库、表     #运维要熟练,开发也要熟练
  • DCL(data control language)数据控制语言(grant、revoke、commit、rollback)用户授权,权限收回,数据提交,回滚等。 #运维要熟练运用
  • DML(data manipulation language)数据操作语言(select、insert、delete、update)针对表里的数据进行操作、记录。  #开发要熟练,运维要了解

二、命令详解

1.修改数据库密码

1)库外修改

 #将原密码:rootpwd 修改为:test123
[root@mysql-db01 ~]# mysqladmin -uroot -prootpwd password test123

2)库内修改

 #登录数据库
[root@mysql-db01 ~]# mysql -uroot -ptest123
#将root密码修改为test456
mysql> update mysql.user set password = password('test456') where user = 'root' and host = 'localhost';
#刷新系统授权表
mysql> flush privileges;

2.库的基础操作

1)创建数据库

 #语法
create database <数据库名>
#创建一个库名为test1的库
mysql> create database test1;

2)查看所有库

 #查库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| test1              |#之前创建的test1库
+--------------------+

3)查看建库语句

 #语法
show create database <数据库名>\G
#查看test1的建库语句
mysql> show create database test1\G
*************************** 1. row ***************************
Database: test1
Create Database: CREATE DATABASE `test1` /*!40100 DEFAULT CHARACTER SET utf8 */ #默认字符集是utf-8

4)指定字符集建库

 #语法
create database <数据库名> character set <字符集> collate <全称>;
#创建数据库:test2,字符集为:gbk
mysql> create database test2 character set gbk collate gbk_chinese_ci;
#查看test2的建库语句
mysql> show create database test2\G
*************************** 1. row ***************************
Database: test2
Create Database: CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET gbk */ #默认字符集是gbk

5)查找指定数据库

 #语法
show databases like <条件>;
#查找test库
mysql> show databases like 'test';
+-----------------+
| Database (test) |
+-----------------+
| test |
+-----------------+
#查找test1库
mysql> show databases like 'test1';
+------------------+
| Database (test1) |
+------------------+
| test1 |
+------------------+
#模糊匹配,查找带te的库
mysql> show databases like '%te%';
+-----------------+
| Database (%te%) |
+-----------------+
| test |
| test1 |
| test2 |
+-----------------+

6)切换数据库

 #语法
use <数据库名>
#切换到test1
mysql> use test1;
Database changed
#切换到test2
mysql> use test2
Database changed

7)查看当前所在库

 #查看当前所在库
mysql> select database();
+------------+
| database() |
+------------+
| test2 |
+------------+
#切换到test1
mysql> use test1
Database changed
#查看当前所在库
mysql> select database();
+------------+
| database() |
+------------+
| test1 |
+------------+

8)查看库内的表

 #查看test1库中的表
mysql> show tables;
#库里没有表
Empty set (0.00 sec)
#切换到mysql库
mysql> use mysql
#查看mysql库中的表
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
#模糊匹配,查找带有slave的表名
mysql> show tables like '%slave%';
+---------------------------+
| Tables_in_mysql (%slave%) |
+---------------------------+
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
+---------------------------+

9)查询用户

 mysql> select user,host from mysql.user;
+------+------------+
| user | host |
+------+------------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | mysql-db01 |
| root | mysql-db01 |
+------+------------+

10)删除用户

 #语法
drop user <user> <host>;
#删除root连接IPv6的用户
mysql> drop user root@'::1';
#查询用户
mysql> select user,host from mysql.user;
+------+------------+
| user | host |
+------+------------+
| root | 127.0.0.1 |
| | localhost |
| root | localhost |
| | mysql-db01 |
| root | mysql-db01 |
+------+------------+

****** 当 drop 无法删除的时候 ******

 #语法
delete from mysql.user where user='<用户>' and host='<主机>';
#删除root连接IPv6的用户
mysql> delete from mysql.user where user='root' and host='::1';
+------+------------+
| user | host |
+------+------------+
| root | 127.0.0.1 |
| | localhost |
| root | localhost |
| | mysql-db01 |
| root | mysql-db01 |
+------+------------+

11)用户授权

 #语法
grant <权限> on <数据库>.<表> to <用户>@<主机> identified by <密码>;
#创建一个user用户密码为123456
mysql> grant all on *.* to user@'10.0.0.%' identified by '';
#检查用户是否创建成功
mysql> select user,host from mysql.user;
+------+------------+
| user | host |
+------+------------+
| user | 10.0.0.% |
| root | 127.0.0.1 |
| | localhost |
| root | localhost |
| | mysql-db01 |
| root | mysql-db01 |
+------+------------+

3.表的基础操作

1)建表语法

 create table student(                      #<== create  table 表示创建表的固定关键字,student为表名
id int() not null, #<== 学号列,数字类型,长度为4,不为空值。
name char() not null, #<== 名字列,定长字符类型,长度20,不为空值。
age tinyint() NOT NULL default '', #<== 年龄列,很小的数字类型,长度为2,不为空,默认为0值。
dept varchar() default NULL #<== 系别列,变长字符类型,长度16,默认为空。
) ENGINE=InnoDB DEFAULT CHARSET=latin1; #<== 引擎和字符集,引擎默认为innodb,字符集,继承库的latin1
  • 数字类型

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
table.MsoTableGrid
{mso-style-name:网格型;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-priority:39;
mso-style-unhide:no;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

列类型

需要的存储量

TINYINT

1字节

SMALLNT

2个字节

MEDIUMINT

3个字节

INT

4个字节(4294967296)

BIGINT

8个字节

FLOAT(X)

4如果X <=24 或 8 如果25<=x <=53

FLOAT

4个字节

  • 日期类型

列类型

需要的存储量

DATE

3字节

DATETIME

8个字节

TIMESTAMP

4个字节

TIME

3个字节

YEAR

1个字节

  • 字符串类型

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
table.MsoTableGrid
{mso-style-name:网格型;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-priority:39;
mso-style-unhide:no;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

列类型

需要的存储量

CHAR(M)

M字节,1<=M<=255字节

VARCHAR(M)

L+1字节,在此L<=M和1<=M<=255

TINYBLOB,TINYTEXT

L+1字节,在此L< 2 ^ 8

BLOB,TEXT

L+2字节,在此L< 2 ^ 16

  • CHAR 和 VARCHAR的区别

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
table.MsoTableGrid
{mso-style-name:网格型;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-priority:39;
mso-style-unhide:no;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

CHAR(4)

存储需求

VARCHAR

存储需求

‘ ‘

’    ‘

4个字节

‘ ‘

1个字节

’ab’

‘ab  ‘

4个字节

‘ ab’

3个字节

‘abcd’

‘abcd’

4个字节

‘ abcd’

5个字节

‘abcdefgh’

‘abcd’

4个字节

‘abcd’

5个字节

2)创建索引

  • Normal
    0

    7.8 磅
    0
    2

    false
    false
    false

    EN-US
    ZH-CN
    X-NONE

    /* Style Definitions */
    table.MsoNormalTable
    {mso-style-name:普通表格;
    mso-tstyle-rowband-size:0;
    mso-tstyle-colband-size:0;
    mso-style-noshow:yes;
    mso-style-priority:99;
    mso-style-parent:"";
    mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
    mso-para-margin:0cm;
    mso-para-margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:10.5pt;
    mso-bidi-font-size:11.0pt;
    font-family:"Calibri",sans-serif;
    mso-ascii-font-family:Calibri;
    mso-ascii-theme-font:minor-latin;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;
    mso-font-kerning:1.0pt;}

    主键索引:要求列的内容是唯一的。

 #使用test1库
mysql> use test1
#创建主索引
mysql> CREATE TABLE `student` (
-> `id` int() NOT NULL auto_increment,
-> `name` char() NOT NULL,
-> `age` tinyint() NOT NULL DEFAULT '',
-> `dept` varchar() DEFAULT NULL,
-> primary key(id)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果在建表的时候,没有创建索引可以使用alter来创建索引:

 #增加索引
mysql> alter table student add primary key(id);
#查看索引
mysql> desc student;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
| age | tinyint(2) | NO | | 0 | |
| dept | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
#将索引改为自增
mysql> alter table student change id id int() auto_increment;
  • 普通索引:一个表内可以创建多个。
 #创建普通索引
mysql> CREATE TABLE `student1` (
-> `id` int() NOT NULL auto_increment,
-> `name` char() NOT NULL,
-> `age` tinyint() NOT NULL DEFAULT '',
-> `dept` varchar() DEFAULT NULL,
-> primary key(id),
-> KEY index_name(name)
-> );
  • 联合索引:多个表创建一个索引,加大唯一性
 #创建联合索引
create index ind_name_dept on student(name,dept);
#根据前八个字符来创建联合索引
create index ind_name_deptnew on student(name(),dept());
#查看索引
mysql> show index from student;
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | ind_name_dept | 1 | name | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | ind_name_dept | 2 | dept | A | 0 | NULL | NULL | YES | BTREE | | |
| student | 1 | ind_name_deptnew | 1 | name | A | 0 | 8 | NULL | | BTREE | | |
| student | 1 | ind_name_deptnew | 2 | dept | A | 0 | 8 | NULL | YES | BTREE | | |
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
  • 唯一索引:生产使用不多,但是针对登录账号可以选择
 #创建唯一索引
mysql> create unique index uni_index_name on student(name);
#查看索引
mysql> show index from student;
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| student | 0 | uni_index_name | 1 | name | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | ind_name_dept | 1 | name | A | 0 | NULL | NULL | | BTREE | | |
| student | 1 | ind_name_dept | 2 | dept | A | 0 | NULL | NULL | YES | BTREE | | |
| student | 1 | ind_name_deptnew | 1 | name | A | 0 | 8 | NULL | | BTREE | | |
| student | 1 | ind_name_deptnew | 2 | dept | A | 0 | 8 | NULL | YES | BTREE | | |
+---------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

问题1:既然索引可以加快查询速度,那就给所有列建索引吧?

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

解答:因为索引不但占用存储空间,而且更新数据时还需要维护索引数据的,因此,索引是一把双刃剑,并不是越多越好,例如:数十到数百行的小表上无需建立索引,插入更新频繁,读取比较少的表要尽量不建立索引。


问题2:需要在哪些列上创建索引才能加快查询速度呢?

解答:

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

select user,host from mysql.user where password=…,索引一定要创建在where后的条件上,而不是select后的选择数据的列上,另外,我们要尽量选择在唯一值多的大表上的列建立索引,例如,男女性别列唯一值少,不适合建立索引。


创建索引知识小结:

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

  • 索引类似书籍的目录,会加快查询数据的速度。
  • 要在表的列(字段)上创建索引。
  • 索引会加快查询的速度,但是也会影响更新的速度,因为更新要维护索引数据。
  • 索引列并不是越多越好,要在频繁查询的表语句where后的条件列上创建索引。
  • 小表或重复值很多的列上可以不创建索引。要在大表以及重复值少的条件列上创建索引。
  • 多个联合索引有前缀生效特性。
  • 当字段内容前N个字符已经接近唯一时,可以对字段的前N个字符创建索引。
  • 索引从工作方式区分,有主键,唯一,普通索引。
  • 索引类型会有BTREE(默认)和hash(适合做缓存(内蕴数据库))等

创建索引相关命令小结:

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

  • 创建主键索引
 alter table student change id id int primary key auto_increment; 
  • 删除主键索引(主键列不能自增)
 alter table student drop primary key;
  • 创建普通索引:
 alter table student add index index_dept(dept);
  • 根据列的前n个字符创建普通索引:
 create index index_dept on student(dept());
  • 根据多个列创建联合普通索引:
 create index ind_name_dept on student(name,dept);
  • 根据多个列的前n个字符创建联合普通索引:
 create index ind_name_dept on student(name(),dept());
  • 创建唯一索引:
 create unique index uni_ind_name on student(name);
  • 查看索引:
 desc student;
show index from student;
  • 删除普通索引与唯一索引:
 alter table student drop index index_dept;
drop index index_dept on student;
  • 查看表记录唯一值的数量:
 select count(distinct user) from mysql.user;
select count(distinct (user,host)) from mysql.user;

3)增删改表的字段

 #创建一个练习用的表
mysql> CREATE TABLE `test` (
-> `id` int() NOT NULL AUTO_INCREMENT,
-> `name` char() NOT NULL,
-> PRIMARY KEY (`id`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  • 查看表的信息
 #查看表
mysql> show tables;
+-----------------+
| Tables_in_test2 |
+-----------------+
| test |
+-----------------+
#查看表结构
mysql> desc test;
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
+-------+----------+------+-----+---------+----------------+
  • 增加一个字段
 #增加sex这个字段
mysql> alter table test add sex char();
#查看增加的字段
mysql> desc test;
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
| sex | char(4) | YES | | NULL | |
+-------+----------+------+-----+---------+----------------+
  • 插入一个字段
 #在name后面增加一个age字段
mysql> alter table test add age int() after name;
#查看字段
mysql> desc test;
+-------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
| age | int(4) | YES | | NULL | |
| sex | char(4) | YES | | NULL | |
+-------+----------+------+-----+---------+----------------+
  • 在第一行插入字段
 #在第一行加入一个QQ字段
mysql> alter table test add qq varchar() first
#查看字段
mysql> desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| qq | varchar(15) | YES | | NULL | |
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
| age | int(4) | YES | | NULL | |
| sex | char(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+

4)修改字段类型

 #把age字段类型改成char4
mysql> alter table test modify age char() after name;
#查看字段类型
mysql> desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| qq | varchar(15) | YES | | NULL | |
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
| age | char(4) | YES | | NULL | |
| sex | char(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+

5)修改字段名

 #讲age字段名改为testage
mysql> alter table test change age testage char() after name;
#查看字段
mysql> desc test;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| qq | varchar(15) | YES | | NULL | |
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | NULL | |
| testage | char(4) | YES | | NULL | |
| sex | char(4) | YES | | NULL | |
+---------+-------------+------+-----+---------+----------------+

6)插入数据

 #语法
insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
#添加id为1,名字为zzgx的数据到test表中
mysql> insert into test(id,name) values(,'zzgx');
#查询表中内容
mysql> select * from test;
+------+----+------+---------+------+
| qq | id | name | testage | sex |
+------+----+------+---------+------+
| NULL | 1 | zzgx | NULL | NULL |
+------+----+------+---------+------+

7)批量插入多条数据

 #插入数据,id:3 name:zuma和id:4 name:kaka
mysql> insert into test(id,name) values(,'zuma'),(,'kaka');
#查看表中数据
mysql> select * from test;
+------+----+------+---------+------+
| qq | id | name | testage | sex |
+------+----+------+---------+------+
| NULL | 1 | zzgx | NULL | NULL |
| NULL | 3 | zuma | NULL | NULL |
| NULL | 4 | kaka | NULL | NULL |
+------+----+------+---------+------+

8)删除数据

 #删除id为3的数据
mysql> delete from test where id=;
#查看表中数据
mysql> select * from test;
+------+----+------+---------+------+
| qq | id | name | testage | sex |
+------+----+------+---------+------+
| NULL | 1 | zzgx | NULL | NULL |
| NULL | 4 | kaka | NULL | NULL |
+------+----+------+---------+------+

9)查表语句

 #查询test表里前两行数据
mysql> select * from test limit ;
+------+----+------+---------+------+
| qq | id | name | testage | sex |
+------+----+------+---------+------+
| NULL | 1 | zzgx | NULL | NULL |
| NULL | 4 | kaka | NULL | NULL |
+------+----+------+---------+------+
 #升序查询
mysql> select * from test where id> or name='zuma' order by id;
+------+----+------+---------+------+
| qq | id | name | testage | sex |
+------+----+------+---------+------+
| NULL | 4 | kaka | NULL | NULL |
+------+----+------+---------+------+
 #按id倒叙查询
mysql> select * from test where id> or name='zuma' order by id desc;
+------+----+------+---------+------+
| qq | id | name | testage | sex |
+------+----+------+---------+------+
| NULL | 4 | kaka | NULL | NULL |
+------+----+------+---------+------+

10)连表查询

首先需要创建三个表:

 #第一张表
mysql> create table student(
-> Sno int() NOT NULL COMMENT '学号',
-> Sname varchar() NOT NULL COMMENT '姓名',
-> Ssex char() NOT NULL COMMENT '性别',
-> Sage tinyint() NOT NULL default '' COMMENT '学生年龄',
-> Sdept varchar() default NULL COMMENT '学生所在系别',
-> PRIMARY KEY (Sno) ,
-> key index_Sname (Sname)
-> ) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=UTF8;
 #第二张表
mysql> create table course(
-> Cno int() NOT NULL COMMENT '课程号',
-> Cname varchar() NOT NULL COMMENT '课程名',
-> Ccredit tinyint() NOT NULL COMMENT '学分',
-> PRIMARY KEY (Cno)
-> ) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=UTF8;
 #第三张表
mysql> CREATE TABLE `SC` (
-> SCid int() NOT NULL auto_increment COMMENT '主键',
-> `Cno` int() NOT NULL COMMENT '课程号',
-> `Sno` int() NOT NULL COMMENT '学号',
-> `Grade` tinyint() NOT NULL COMMENT '学生成绩',
-> PRIMARY KEY (`SCid`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
 #查看刚才创建的三张表
mysql> show tables;
+-----------------+
| Tables_in_test2 |
+-----------------+
| course |
| sc |
| student |
+-----------------+
 #往student表中插入数据
mysql> INSERT INTO student values(,'宏志','男',,'计算机网络');
mysql> INSERT INTO student values(,'王硕 ','男',,'computer');
mysql> INSERT INTO student values(,'oldboy','男',,'物流管理');
mysql> INSERT INTO student values(,'脉动','男',,'computer');
mysql> INSERT INTO student values(,'oldgirl','女',,'计算机科学与技术');
mysql> INSERT INTO student values(,'莹莹','女',,'护士');
#查询数据
mysql> select * from student;
+-----+---------+------+------+--------------------------+
| Sno | Sname | Ssex | Sage | Sdept |
+-----+---------+------+------+--------------------------+
| 1 | 宏志 | 男 | 30 | 计算机网络 |
| 2 | 王硕 | 男 | 30 | computer |
| 3 | oldboy | 男 | 28 | 物流管理 |
| 4 | 脉动 | 男 | 29 | computer |
| 5 | oldgirl | 女 | 26 | 计算机科学与技术 |
| 6 | 莹莹 | 女 | 22 | 护士 |
+-----+---------+------+------+--------------------------+
 #往course表中插入数据
mysql> INSERT INTO course values(,'Linux中高级运维',);
mysql> INSERT INTO course values(,'Linux高级架构师',);
mysql> INSERT INTO course values(,'MySQL高级Dba',);
mysql> INSERT INTO course values(,'Python运维开发',);
mysql> INSERT INTO course values(,'Java web开发',);
#查询数据
mysql> select * from course;
+------+----------------------+---------+
| Cno | Cname | Ccredit |
+------+----------------------+---------+
| 1001 | Linux中高级运维 | 3 |
| 1002 | Linux高级架构师 | 5 |
| 1003 | MySQL高级Dba | 4 |
| 1004 | Python运维开发 | 4 |
| 1005 | Java web开发 | 3 |
+------+----------------------+---------+
 #往SC表中插入数据
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
mysql> INSERT INTO SC(Sno,Cno,Grade) values(,,);
#查询数据
mysql> select * from SC;
+------+------+-----+-------+
| SCid | Cno | Sno | Grade |
+------+------+-----+-------+
| 1 | 1001 | 1 | 4 |
| 2 | 1002 | 1 | 3 |
| 3 | 1003 | 1 | 1 |
| 4 | 1004 | 1 | 6 |
| 5 | 1001 | 2 | 3 |
| 6 | 1002 | 2 | 2 |
| 7 | 1003 | 2 | 2 |
| 8 | 1004 | 2 | 8 |
| 9 | 1001 | 3 | 4 |
| 10 | 1002 | 3 | 4 |
| 11 | 1003 | 3 | 2 |
| 12 | 1004 | 3 | 8 |
| 13 | 1001 | 4 | 1 |
| 14 | 1002 | 4 | 1 |
| 15 | 1003 | 4 | 2 |
| 16 | 1004 | 4 | 3 |
| 17 | 1001 | 5 | 5 |
| 18 | 1002 | 5 | 3 |
| 19 | 1003 | 5 | 2 |
| 20 | 1004 | 5 | 9 |
+------+------+-----+-------+

开始连表查询

 #连表查询
mysql> select student.Sno,student.Sname,course.Cname,SC.Grade from student,course,SC where student.Sno=SC.Sno and course.Cno=SC.Cno;
+-----+---------+----------------------+-------+
| Sno | Sname | Cname | Grade |
+-----+---------+----------------------+-------+
| 1 | 宏志 | Linux中高级运维 | 4 |
| 2 | 王硕 | Linux中高级运维 | 3 |
| 3 | oldboy | Linux中高级运维 | 4 |
| 4 | 脉动 | Linux中高级运维 | 1 |
| 5 | oldgirl | Linux中高级运维 | 5 |
| 1 | 宏志 | Linux高级架构师 | 3 |
| 2 | 王硕 | Linux高级架构师 | 2 |
| 3 | oldboy | Linux高级架构师 | 4 |
| 4 | 脉动 | Linux高级架构师 | 1 |
| 5 | oldgirl | Linux高级架构师 | 3 |
| 1 | 宏志 | MySQL高级Dba | 1 |
| 2 | 王硕 | MySQL高级Dba | 2 |
| 3 | oldboy | MySQL高级Dba | 2 |
| 4 | 脉动 | MySQL高级Dba | 2 |
| 5 | oldgirl | MySQL高级Dba | 2 |
| 1 | 宏志 | Python运维开发 | 6 |
| 2 | 王硕 | Python运维开发 | 8 |
| 3 | oldboy | Python运维开发 | 8 |
| 4 | 脉动 | Python运维开发 | 3 |
| 5 | oldgirl | Python运维开发 | 9 |
+-----+---------+----------------------+-------+

三、mysql优化

优化大纲:

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

1、硬件层面优化

1.1 数据库物理机采购:

1.2 服务器硬件配置调整

1.2.1 服务器BIOS调整:

1.2.2 阵列卡调整:

2、软件层优化

2.1 操作系统层面优化

2.1.1 操作系统及MySQL实例选择

2.1.2 文件系统层优化

2.1.3 linux内核参数优化

2.2 mysql数据库层面优化

2.2.1 my.cnf参数优化

2.2.2 关于库表的设计规范

2.2.3 SQL语句的优化

3、网站集群架构上的优化

4、流程,制度,安全优化

  • SQL语句优化

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

1、抓慢查询SQL语句方法

a、救火:紧急且重要:show full processlist;(登录数据库现场抓,连续执行2次,超过2秒)

mysql –uroot –poldboy –S /data/3306/mysql.sock –e “show full processlist;”|egrep –vi “sleep”

b、未雨绸缪:重要不紧急,记录意思分析慢查询日志。

配置参数记录慢查询语句:

long_query_time = 2                    ### 超过2秒,记录到Slow Log里。

log_queries_not_using_indexes           ### 没有走索引的语句,记录到Slow Log里。

log-slow-queries = /data/3306/slow.log     ### Slow Log 文件。

min_examined_row_limit                ### 记录结果集大于指定值的SQL语句,5.6-5.7都可以使用

2、

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

explain语句检查索引执行情况

 mysql> explain select * from student where Sname='oldboy'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: student
type: ref
possible_keys: index_Sname
key: index_Sname
key_len: 50
ref: const
rows: 1
Extra: Using index condition
 mysql> explain select SQL_NO_CACHE * from student where Sname='oldboy'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: student
type: ref
possible_keys: index_Sname
key: index_Sname
key_len: 50
ref: const
rows: 1
Extra: Using index condition

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

3、对需要建索引的条件列建立索引

生产场景,大表高峰期不能建立索引,例如:300玩记录。

4、分析慢查询SQL的工具mysqlsla(每天早很发邮件给核心开发、运维、CTO)

5、按天切割慢查询日志,如果并发太大可以按小时,去重分析后发给大家。

a.mv然后flush进程。

b.cp复制,然后利用>清空。

c.定时任务 mv /data/3306/slow.log /opt/$(date +%F)_slow.log

d.mysqladmin –uroot –poldboy –S /data/3306/mysql.sock flush-logs

6、日常优化

dba、总监、开发、CTO联合解决。

  • 索引优化

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

1)白名单机制 – 百度,项目开发,DBA暗语,减少上线后的慢SQL数量;

抓出慢SQL

配置my.cnf

long_query_time = 2

log_queries_not_using_indexes

log-slow-queries = /data/3306/slow.log

min_examined_row_limit

按天轮询:slow-log

2)慢查询日志分析工具 -----mysqlsla 或 pt-query-digest(推荐);

3)每天晚上0点定时分析慢查询,发到核心开发,DBA分析,及高级运维,CTO的邮箱里;

DBA分析给出优化建议 à核心开发确认更改 à DBA线上操作处理;

4)定期使用pt-duplicate-key-checker检查并删除重复的索引;

定期使用pt-index-usage工具检查并删除使用频率很低的索引;

5)使用pt-online-schema-change来完成大表的ONLINE DDL 需求;

6)有时候mysql会使用错误的索引,对于这种情况使用USE INDEX;

7)使用explain及set profile 优化SQL语句;

8)打的复杂的SQL语句拆分成多个小的SQL语句;

子查询,JOIN连表查询,某个表4000万条记录;

9)数据库是存储数据的地方,但是不是计算数据的地方;

对于数据计算、应用处理、都要拿到前端应用解决、禁止在数据库上处理;

10)使用连接(JOIN)来代替子查询;

11)避免在整个表上使用count(*),他可能锁住整张表;

12)多表连接查询时,把结果集小的表作为驱动表;

13)多表联接并且有排序时,排序字段必须是驱动表里的,负责排序列无法用到索引;

14)尽量去掉”IN”  ”OR”  “<>”

15)类似分页功能的SQL,建议先用主键关联,然后返回结果集,效率会高很多;

【开源是一种精神,分享是一种美德】

— By GoodCook

— 笔者QQ:253097001

— 欢迎大家随时来交流

—原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
table.MsoTableGrid
{mso-style-name:网格型;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-priority:39;
mso-style-unhide:no;
border:solid windowtext 1.0pt;
mso-border-alt:solid windowtext .5pt;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-border-insideh:.5pt solid windowtext;
mso-border-insidev:.5pt solid windowtext;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

【运维工程师必知必会】——MySql基础的更多相关文章

  1. 运维工程师打怪升级进阶之路 V2.0

    在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是 ...

  2. 运维工程师必会的109个Linux命令

    运维工程师必会的109个Linux命令 版本1.0 崔存新 更新于2009-12-26 目录 1 文件管理 6 1.1 basename 6 1.2 cat 6 1.3 cd 7 1.4 chgrp ...

  3. Linux运维工程师必学必备的8项IT技能

    如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版 ...

  4. 《MySQL必知必会》整理

    目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...

  5. 【MySQL 基础】MySQL必知必会

    MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...

  6. 《MySQL 必知必会》读书总结

    这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...

  7. 2015 前端[JS]工程师必知必会

    2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...

  8. [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)

    http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...

  9. mysql学习--mysql必知必会1

     例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...

  10. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...

随机推荐

  1. (19)IO流之字符流FileReader和FileWriter,缓冲字符流---缓冲输入字符流BufferedReader和缓冲输出字符流BufferedWriter

    字符流,读取的文件是字符的时候,有两个基类一个是Reader,一个是Writer这有点拟人的感觉,人直接看懂的是文字 字符流 字节流:读取的是文件中的二进制字节流并不会帮你转换成看的懂得字符 字符流: ...

  2. 交叉编译Python-2.7.13到ARM(aarch32)—— 支持sqlite3

    作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 环境 主机: ubuntu14.04 64bit 开发板: qemu + vexpress-a9 (参考: ...

  3. ios 个推推送集成

    个推推送总结: 个推第三方平台官网地址:http://www.getui.com/cn/index.html 首先去官网注册账号,创建应用,应用的配置信息,创建APNs推送证书上传 P12证书(开发对 ...

  4. 给angularJs grid列上添加自定义按钮

    由于项目需要在angular 显示的表格中添加按钮,多次查询资料终于找到解决方法.就是给columnDefs 上的列增加 cellTemplate,同时绑定对应的触发事件,代码如下 columnDef ...

  5. lsusb命令

    运行 yum install libusb usbutils

  6. Asp.net SignalR 应用并实现群聊功能 开源代码

    ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务 ...

  7. Android -- 贝塞尔使圆渐变为桃心

    1,我们上一篇介绍了贝塞尔曲线推到原理和在Android里的简单使用,今天就和来写写贝塞尔曲线的实际应用,今天实现的效果图如下: 2,思路分析 我们知道首先我们的view是一个圆,这里的圆其实是由四块 ...

  8. 浅谈HTTP中Get与Post的区别[转载]

    Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...

  9. vue.js如何在标签属性中插入变量参数

    html的标签的属性,比如id.class.href需要动态传递参数,拼接字符串,查了一些资料,并没有找到合适的解决方法,琢磨了一上午,终于试出了方法: v-bind:属性=" '字符串'+ ...

  10. 老李分享:android手机测试之适配(1)

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...