【运维工程师必知必会】——MySql基础
一、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
07.8 磅
0
2false
false
falseEN-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基础的更多相关文章
- 运维工程师打怪升级进阶之路 V2.0
在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是 ...
- 运维工程师必会的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 ...
- Linux运维工程师必学必备的8项IT技能
如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版 ...
- 《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 ...
- 【MySQL 基础】MySQL必知必会
MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...
- 《MySQL 必知必会》读书总结
这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...
- 2015 前端[JS]工程师必知必会
2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...
- [ 学习路线 ] 2015 前端(JS)工程师必知必会 (2)
http://segmentfault.com/a/1190000002678515?utm_source=Weibo&utm_medium=shareLink&utm_campaig ...
- mysql学习--mysql必知必会1
例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
随机推荐
- web从入门开始(6)-----框架
普通框架 框架概念:就是将一个页面分割成小窗口,每个窗口都是一个网页 框架集和框架页 框架集:<frameset>:主要用来划分窗口的 框架页:<frame>:主要用来指定窗口 ...
- 关于php的flush在本机正常在服务器不灵的问题
这个问题网上很多,我就不重复那些了. 我的是关于进度条的应用.我最后遇到的问题是,在本机swampserver环境下的输出缓存很快,但是到了服务器上就是一段一段的了.我的服务器是Web服务器是IIS. ...
- 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)
经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...
- 【学习笔记】TCP通信的细节及TCP连接对HTTP事务处理性能影响
从三次握手的细节说起 刚开始尝试使用java等后端语言写IO流,或用套接字(socket)实现简单C/S通信的同学们,常常会接触到的一个概念:就是所谓的"三次握手",socket作 ...
- 《Django By Example》第十章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译本章过程中几次想放弃,但是既然 ...
- iOS用户行为追踪——无侵入埋点
本文章系作者原创文章,如需转载学习,请注明该文章的原始出处和网址链接. 在阅读的过程中,如若对该文章有不懂或值得优化的建议,欢迎大家加QQ:690091622 进行技术交流和探讨. 前言: 前几日 ...
- flex中创建弹出窗口,并传值
在flex页面中首先创建一个弹出窗口,代码如下: <?xml version="1.0" encoding="utf-8"?> <s:Titl ...
- Linux中的sed命令
sed - stream editor for filtering and transforming text 流编辑器的过滤和转换文本 sed [-nerf] [动作] 参数: -i 修改源文件 危 ...
- 解决虚拟机vmware安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
虚拟机使用的是VMware Workstation,并且首次在虚拟机体验64 位系统.在新建好虚拟机,运行时候就出现了VMware Workstation 的提醒:此主机支持 Intel VT-x,但 ...
- 编写你的第一个程序(HelloWorld)
1)安装. 2)打开我们的编译工具Xcode,会出现一些选项,我们只需要选中第2项(因为版本不同可能有些不同)“Create a new Xcode project ”如下图(其他的选项目前我们还没有 ...