images\cherry_red.png1 实训二前期LNMP简易架构
      images\cherry_blue.png1.1 php server安装
      images\cherry_blue.png1.2 安装初始化数据库
   images\cherry_red.png2 Mysql数据库
      images\cherry_blue.png2.1 Mysql5.7安装
         images\cherry_orange.png2.1.1 rpm安装
         images\cherry_orange.png2.1.2 yum安装
         images\cherry_orange.png2.1.3 源码安装
         images\cherry_orange.png2.1.4 编译好的非rpm包安装
         images\cherry_orange.png2.1.5 my.cnf常见选项
      images\cherry_blue.png2.2 Mysql基础
         images\cherry_orange.png2.2.1 MySql数据库操作
         images\cherry_orange.png2.2.2 MySql数据类型
            images\cherry_cyan.png2.2.2.1 整型
            images\cherry_cyan.png2.2.2.2 浮点数和定数
            images\cherry_cyan.png2.2.2.3 字符串类型
            images\cherry_cyan.png2.2.2.4 日期和时间类型
            images\cherry_cyan.png2.2.2.5 字段修饰和约束
            images\cherry_cyan.png2.2.2.6 业务建表练习
         images\cherry_orange.png2.2.3 MySql表操作
         images\cherry_orange.png2.2.4 MySql体系结构
         images\cherry_orange.png2.2.5 MySql存储引擎
      images\cherry_blue.png2.3 MySql操作
         images\cherry_orange.png2.3.1 MySql数据操作
         images\cherry_orange.png2.3.2 MySql单表查询
         images\cherry_orange.png2.3.3 MySql多表查询
         images\cherry_orange.png2.3.4 MySql存储过程与函数
      images\cherry_blue.png2.4 MySql操作-2
         images\cherry_orange.png2.4.1 MySql安全机制
         images\cherry_orange.png2.4.2 MySql日志管理
         images\cherry_orange.png2.4.3 MySql复制概述
         images\cherry_orange.png2.4.4 主从同步
      images\cherry_blue.png2.5 最基本sql语句及主从架构
      images\cherry_blue.png2.6 MyCat中间件
         images\cherry_orange.png2.6.1 部署Mycat
         images\cherry_orange.png2.6.2 配置读写分离
            images\cherry_cyan.png2.6.2.1 安全的读写分离
         images\cherry_orange.png2.6.3 XML语法格式
         images\cherry_orange.png2.6.4 mycat 分表分库
      images\cherry_blue.png2.7 Mysql MHA
         images\cherry_orange.png2.7.1 MHA-部署
         images\cherry_orange.png2.7.2 MHA-故障切换VIP透明
            images\cherry_cyan.png2.7.2.1 VIP切换脚本内容
            images\cherry_cyan.png2.7.2.2 VIP-手动在线切换脚本
         images\cherry_orange.png2.7.3 MHA+Mycat高可用Mysql读写分离
         images\cherry_orange.png2.7.4 MHA+VIP+Mycat
         images\cherry_orange.png2.7.5 MHA-故障切换邮件报警
         images\cherry_orange.png2.7.6 自动配置Slave主机
   images\cherry_red.png3 实验
      images\cherry_blue.png3.1 mysql授权问题
      images\cherry_blue.png3.2 1.单节点数据库
      images\cherry_blue.png3.3 2.主从同步
      images\cherry_blue.png3.4 3.实验(高可用)
         images\cherry_orange.png3.4.1 高可用keepalived
            images\cherry_cyan.png3.4.1.1 keepalived install
      images\cherry_blue.png3.5 4.实验(高可用+大并发)
         images\cherry_orange.png3.5.1 HAproxy代理
      images\cherry_blue.png3.6 4.实验(mycat-读写分离)
         images\cherry_orange.png3.6.1 mycat安装部署
         images\cherry_orange.png3.6.2 读写分离高可用
         images\cherry_orange.png3.6.3 mycat管理端口命令
      images\cherry_blue.png3.7 5.双主双从-读写分离-高可用
      images\cherry_blue.png3.8 6.mycat分库操作
      images\cherry_blue.png3.9 7.mycat分表
      images\cherry_blue.png3.10 8.mycat分库分表之下实现读写分离
   images\cherry_red.png4 Shell脚本编程
   images\cherry_red.png5 Zabbix监控
      images\cherry_blue.png5.1 zabbix设置邮件报警--自定义报警媒介
      images\cherry_blue.png5.2 zabbix解决中文界面乱码问题
      images\cherry_blue.png5.3 ziabbix自带的template Linux OS
      images\cherry_blue.png5.4 zabbix-agent自定义收集数据
      images\cherry_blue.png5.5 zabbix监控Nginx性能
      images\cherry_blue.png5.6 综合配置
      images\cherry_blue.png5.7 实验:监控nginx端口实现告警
   images\cherry_red.png6 ELK日志分析
      images\cherry_blue.png6.1 PS
      images\cherry_blue.png6.2 es-head插件安装
      images\cherry_blue.png6.3 安装filebeat nginx日志模板



CREATE TABLE `students` (`SID` int(10) unsigned NOT NULL AUTO_INCREMENT,`姓名` char(10) NOT NULL,`性别` enum('M','F') NOT NULL DEFAULT 'M',`年龄` tinyint(3) unsigned NOT NULL,`身份证号码` char(20) NOT NULL,`手机号码` char(15) NOT NULL,`期数` varchar(15) NOT NULL,`所选课程` char(4) NOT NULL DEFAULT '1',`入学时间` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,`就业薪资` decimal(8,2) unsigned NOT NULL DEFAULT '5000.00',PRIMARY KEY (`SID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;


mysql -e

INSERT INTO `students` (`姓名`, `年龄`, `身份证号码`, `手机号码`, `期数`, `所选课程`, `入学时间`, `就业薪资`) VALUES ('张飞', '30', '452701198855668899', '15055009900', '12期', '2', '2018-05-18 10:42:37', '12000')


DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程。。。例如 CREATE DROP ALTER SHOW DESC
DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
DCL语句 数据库控制语言: 例如控制用户的访问权限 GRANT、REVOKE


MySQL表操作 DDL

========================================================

是数据库存储数据的基本单位,由若干个字段组成,主要用来存储数据记录。
表的操作包括创建表、查看表、修改表和删除表。
这些操作都是数据库管理中最基本,也是最重要的操作。本节内容包括:


创建表 create table
查看表结构 desc tableshow create table(显示创建表的时候的SQL语句)
表完整性约束
修改表 alter table
modify change drop add
复制表 create table ...
删除表
drop table


一、创建表(表的基本操作) -------------------------------------------------------------


表school.student1
字段 字段 字段
id name sex age
1 tom male 23 记录
2 jack male 21 记录
3 alice female 19 记录

语法:

create table 表名(
字段名1 类型[(宽度) 约束条件]
,
字段名2 类型[(宽度) 约束条件]
,
字段名3 类型[(宽度) 约束条件]
) [存储引擎 字符集]
;

==在同一张表中,字段名是不能相同
==宽度和约束条件可选
==字段名和类型是必须的

mysql> CREATE DATABASE school; //创建数据库school
mysql> use school;
mysql> create table student1(id int,name varchar(50), sex enum('m','f'),age int);

Query OK, 0 rows affected (0.03 sec)


mysql> show tables; //查看表(当前所在库)
+------------------+
| Tables_in_school |
+------------------+
| student1 |
+------------------+
1 row in set (0.00 sec)

mysql> select * from student1; //查询表中所有字段的值
Empty set (0.00 sec)

mysql> select name,age from student1; //查询表中指定字段的值
Empty set (0.00 sec)



二 、向表中插入内容 ------------------------------------------------------------

语法:
insert into 表名(字段1,字段2...) values (值1,值2 ...);

查看表结构
顺序插入 \ 只向指定的字段插入值

表school.student2
id id int
姓名 name varchar(50)
出生年份 born_year year
生日 birthday date
上课时间 class_time time
注册时间 reg_time datetime

mysql> create table student2(
-> id int,
-> name varchar(50),
-> born_year year,
-> birthday date,
-> class_time time,
-> reg_time datetime
-> );
mysql> desc student2;
mysql> insert into student2 values(1,'tom',now(),now(),now(),now());
mysql> insert into student2 values(2,'jack',1982,19821120,123000,20140415162545);


表school.student3
id id int
姓名 name varchar(50)
性别 sex enum('male','female')
爱好 hobby set('music','book','game','disc')

mysql> create table student3( id int,name varchar(50), sex enum('m','f'), hobby set('music','book','game','disc') );

mysql> desc student3;
mysql> show create table student3\G
mysql> insert into student3 values (1,'tom','male','book,game');
mysql> insert into student3 values (2,'jack','male','film');
mysql> select * from student3;



三、查看表结构 -------------------------------------------------------------

### show tables; #表名

DESCRIBE 查看表结构 ##查看表结构
DESCRIBE 表名;
### DESC 表名;

### mysql> show create table student3\G ##显示建表详情

*************************** 1. row ***************************
Table: student3
Create Table: CREATE TABLE `student3` (
`name` varchar(50) default NULL,
`sex` enum('m','f') default NULL,
`hobby` set('music','book','game','disc') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)


### mysql> SHOW TABLE STATUS ; 查看表状态信息

表状态信息 解析 :
Row_format: Dynamic, Fixed, Compressed, compact
Rows: 表中的行数;
Avg_row_length: 行的平均字节数;
Data_length: 表的数据量,单位为字节;
Max_data_length: 表的容量上限;
Index_length: 索引数据量,单位字节;
Data_free: 已经分配出去,但未存储数据的存储空间;
Auto_increment: 具有自动增长属性的字段上,下一个自动增长的值;
Create_time: 表的创建时间;
Update_time: 数据最近一次的更新时间;
Check_time: 使用CHECK命令最近一次检查表的时间;myisamchk;
Checksum: 表的校验和;
Create_options: 创建表时指定的其它选项;
Comment: 对于MyISAM表,存储的是创建表时的comment表选项指定的信息;
对InnoDB表来讲,存储对应的表空间剩余的表空间信息;




四、表完整性约束 -------------------------------------------------------------


作用:用于保证数据的完整性和一致性
==============================================================
约束条件 说明
PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录,不可以为空 UNIQUE + NOT NULL
FOREIGN KEY (FK) 标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
NOT NULL 标识该字段不能为空
UNIQUE KEY (UK) 标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键
DEFAULT 为该字段设置默认值
UNSIGNED 无符号,正数
ZEROFILL 使用0填充,例如0000001

说明:
1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
sex enum('male','female') not null default 'male'
age int unsigned NOT NULL default 20 必须为正值(无符号) 不允许为空 默认是20
3. 是否是key
主键 primary key
外键 forengn key
索引 (index,unique...)
==============================================================

书 出版社



五、修改表ALTER TABLE -------------------------------------------------------------


########### 修改字段 属性 ###################

语法:

1. 修改表名:---------------------------------------------------------------------

ALTER TABLE 表名
RENAME 新表名;

2. 增加字段:---------------------------------------------------------------------
ALTER TABLE 表名
ADD 字段名1 数据类型 [完整性约束条件…],
ADD 字段名2 数据类型 [完整性约束条件…];

ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;

  ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

3. 删除字段:---------------------------------------------------------------------
ALTER TABLE 表名
DROP 字段名;


4. 修改字段:---------------------------------------------------------------------

ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];





1. 修改表的存储引擎
mysql> alter table service engine=innodb; //engine=myisam|memore|....


2. 增加约束(针对已有的主键增加auto_increment)
mysql> alter table student10 modify id int not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

3. 增加复合主键
mysql> alter table service2 add primary key(host_ip,port);

4. 增加主键
mysql> alter table student1 add primary key(id);

5. 增加主键和自动增长
mysql> alter table student1
-> modify id int not null primary key auto_increment;

6. 删除主键[primary key auto_increment]

1) 先删除主键字段上的 自增约束, 使用 modify 。
2) 再 删除主键
mysql> alter table student10 drop primary key;




复制表:==========================================

复制表结构+记录 (key不会复制: 主键、外键和索引)

mysql> create table new_service select * from service;

只复制表结构

mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记录

复制表结构,包括Key
mysql> create table t4 like employees;
|
新表 旧表