```sql
-- 在数据库中所有的字符串类型,必须使用单引号!
-- 对齐表格
mysql --default-character-set=latin1 -uroot -proot
-- 去除乱码
set names gbk;
use sport;-- Mysql语法顺序,即当sql中存在下面的关键字时,它们要保持这样的顺序:
select[distinct]
from
join(如left join)
on
where
group by
having -- 在分组统计和起别名后使用
union
order by
limit -- 分页下标从0开始
-- Mysql执行顺序,即在执行时sql按照下面的顺序进行执行:
from
on
join
where
group by
having
select
distinct
union
order by
-- MySQL退出
\c 可以退出当前行命令
\q或者exit、quit退出mysql命令行
between 闭区间[]-- ##################### 字符集: #######################
-- 查看字符集
show variables like 'character_set%';-- 快捷设置字符集
set names gbk;-- 修改服务器认为的客户端数据的字符集为GBK
set character_set_client = gbk;-- 修改服务器给定数据的字符集为GBK
set character_set_results = gbk;-- ##################### 校对集: #######################
-- 查看校对集
show collation;-- 修改校对集(无效)
alter table 表名 collate = utf8_bin;
alter table 表名 collate = utf8_general_ci;-- !多表视图不能进行插入删除。增删改对基表也会发生修改(且删改只能对视图中存在的数据有效,不论基表中是否含有,只要视图看不到,就不能修改它)-- 外键注意事项:
/*
1.外键要存在: 首先必须保证表的存储引擎是innodb(默认的存储引擎): 如果不是innodb存储引擎,那么外键可以创建成功,但是没有约束效果.
2.外键字段的字段类型(列类型)必须与父表的主键类型完全一致.
3.一张表中的外键名字不能重复(外键可以重复)
4.增加外键的字段(数据已经存在),必须保证数据与父表主键要求对应.
(1)外键只能指向 主表的主键列,或者 unique
(3)外键的值,要么为NULL,要么是指向的那列中存在值.(可有多个NULL)
(4)外键可以指向本表的主键列,或者unique
(5)外键可以为非主键
外键约束有三种约束模式: 都是针对父表的约束
district: 严格模式(默认的), 父表不能删除或者更新一个已经被子表数据引用的记录
cascade: 级联模式: 父表的操作, 对应子表关联的数据也跟着被删除
set null: 置空模式: 父表的操作之后,子表对应的数据(外键字段)被置空
通常的一个合理的做法(约束模式): 删除的时候子表置空, 更新的时候子表级联操作
指定模式的语法:删除置空,更新级联
constraint 别名 foreign key(外键字段) references 父表(主键字段) on delete set null on update cascade;
*/-- Unicode与UTF8
Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储.
UTF8字符集是存储Unicode数据的一种可选方法。mysql同时支持另一种实现ucs2。
-- 每个汉字对应字节数
GBK\GB2312 2个字节
unicode\utf-83个字节?
-- 分组查询显示的字段中必须包含被分组字段
-- 适合索引使用的字段:
1.具有唯一值
2.经常被当做where条件查询