一、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. web从入门开始(6)-----框架

    普通框架 框架概念:就是将一个页面分割成小窗口,每个窗口都是一个网页 框架集和框架页 框架集:<frameset>:主要用来划分窗口的 框架页:<frame>:主要用来指定窗口 ...

  2. 关于php的flush在本机正常在服务器不灵的问题

    这个问题网上很多,我就不重复那些了. 我的是关于进度条的应用.我最后遇到的问题是,在本机swampserver环境下的输出缓存很快,但是到了服务器上就是一段一段的了.我的服务器是Web服务器是IIS. ...

  3. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  4. 【学习笔记】TCP通信的细节及TCP连接对HTTP事务处理性能影响

    从三次握手的细节说起 刚开始尝试使用java等后端语言写IO流,或用套接字(socket)实现简单C/S通信的同学们,常常会接触到的一个概念:就是所谓的"三次握手",socket作 ...

  5. 《Django By Example》第十章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译本章过程中几次想放弃,但是既然 ...

  6. iOS用户行为追踪——无侵入埋点

    本文章系作者原创文章,如需转载学习,请注明该文章的原始出处和网址链接.  在阅读的过程中,如若对该文章有不懂或值得优化的建议,欢迎大家加QQ:690091622 进行技术交流和探讨. 前言:  前几日 ...

  7. flex中创建弹出窗口,并传值

    在flex页面中首先创建一个弹出窗口,代码如下: <?xml version="1.0" encoding="utf-8"?> <s:Titl ...

  8. Linux中的sed命令

    sed - stream editor for filtering and transforming text 流编辑器的过滤和转换文本 sed [-nerf] [动作] 参数: -i 修改源文件 危 ...

  9. 解决虚拟机vmware安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题

    虚拟机使用的是VMware Workstation,并且首次在虚拟机体验64 位系统.在新建好虚拟机,运行时候就出现了VMware Workstation 的提醒:此主机支持 Intel VT-x,但 ...

  10. 编写你的第一个程序(HelloWorld)

    1)安装. 2)打开我们的编译工具Xcode,会出现一些选项,我们只需要选中第2项(因为版本不同可能有些不同)“Create a new Xcode project ”如下图(其他的选项目前我们还没有 ...