mysql笔记语法顺序 执行顺序

本文详细介绍了Mysql的语法顺序与执行顺序,探讨了字符集与校对集的设置方法,包括如何查看和设置字符集,以及外键约束的注意事项。同时,文章还解释了Unicode与UTF8的区别,并提供了分组查询和索引字段选择的建议。

```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-8		3个字节?

-- 分组查询显示的字段中必须包含被分组字段

-- 适合索引使用的字段:
1.具有唯一值
2.经常被当做where条件查询







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值