目录一. 表的约束1. 空属性2. 默认值3. 列描述4. zerofill5. 主键6. 自增长7. 唯一键8. 外键二. 基本查询1. Create(1)单行数据 + 全列插入(2)多行数据 + 指定列插入(3)插入否则更新(4)替换2. Retrieve(1)SELECT 列(2)WHRER 条件(3)结果排序(4)筛选分页结果3. Update4. Delete5. 聚合函数总结一. 表的约束1. 空属性表创建的时候默认属性为null。null 表示当用户插入数据时,该字段允许为空。反之,not
创建表时,每个字段默认都是允许为空的。也就是说,如果插入数据时不给这个字段赋值,系统会自动填入null。但有时候,我们希望某些字段必须要有值,这时候就需要用到not null约束了。
来看个实际例子:

一旦给字段设置了not null约束,插入数据时如果漏填这个字段,数据库就会直接报错,拒绝这次操作。
默认值这个功能很实用,它相当于给字段设置了一个保底选项。如果插入数据时没有指定这个字段的值,系统就会自动填入预设的默认值。
实际操作一下:

设置好默认值后,即使插入数据时跳过了某些字段,系统也会自动用默认值补全,避免了数据缺失的问题。
列描述就像给字段加了个注释标签,虽然不影响数据库的实际运行,但对于开发者来说却很有用。特别是当表结构复杂或者多人协作时,这些描述能让人快速理解每个字段的用途。
举个例子:

zerofill这个功能主要用在数字类型的字段上,它的作用是用0来填充数字前面的空位。这在需要统一数字显示格式的场景下特别有用。
看看实际效果:

比如设置了int(5),数字18本来只占2位,启用zerofill后,系统会自动在前面补3个0,变成00018。
主键可以说是表中最重要的约束了。它要满足两个硬性要求:一是值不能重复,二是不能为空。通常情况下,一张表只能有一个主键,它就像是每条数据的身份证。
实际体验一下:

给id字段设置主键后,第一次插入id=1的数据没问题,但第二次再插入id=1的数据时,系统就会提示重复,拒绝插入。

如果想取消主键约束,用drop操作就能轻松移除。另外,主键还可以由多个字段组合而成,这就是所谓的复合主键。
自增长功能简直就是懒人福音。当你不给这个字段赋值时,系统会自动取当前最大值然后加1。不过要注意,自增长字段必须是整数类型,而且一张表最多只能有一个自增长字段。
来看个例子:

比如插入a时id自动设为1,接着插入b时,系统会自动把id设为2,完全不用手动操心。
唯一键和主键有点像,都是保证字段值的唯一性,但两者有个重要区别:主键除了保证唯一,还要承担标识每条数据的重任;而唯一键只需要保证业务逻辑上的唯一性就行。
实际操作一下:

用unique标识唯一键后,这个字段的值就不能重复了,但在业务上它可能并不是数据的主标识。
外键就像是表与表之间的桥梁,通过foreign key (字段名) references 主表(列)的语法,把两个表关联起来,建立数据之间的引用关系。
举个例子就明白了:

如果要插入一个班级号为30的学生,但班级表里根本没有30这个班级,插入操作就会失败,这样就保证了数据的一致性。
这种插入方式要求比较严格,插入数据的数量和顺序必须跟表定义时完全一致。
看看具体操作:

这种方式相对灵活,可以一次插入多条记录,而且可以只指定部分列插入。
实际操作:

on duplicate key update这个语法很智能,它会先检查表中是否存在相同主键的数据:如果没有冲突就直接插入,如果有冲突就更新现有数据。
来看个例子:

怎么判断操作结果呢?主要看影响的行数:0行受影响表示有冲突但值没变;1行受影响表示成功插入;2行受影响表示数据被更新了。
replace into这个操作更直接,有冲突就整个替换,没冲突就直接插入,简单粗暴但很有效。
实际操作:

全列查询用select * from 【表名】最方便,一把抓取所有数据。
看看效果:

指定列查询更精准,只取需要的列,select 【列】,【列】from 【表】。
实际操作:

表达式查询可以在select里做计算,select 【表达式】from 【表】。
举个例子:

去重查询用select distinct 【列】from【表】,能把重复值过滤掉。
看看效果:

where子句就像是数据的过滤器,它会先执行条件判断,然后再进行其他操作。
比如要筛选数学和英语成绩都达标的学生:

like配合通配符很好用,like '【样式】%'能找出符合特定模式的数据。
比如找所有姓孙的学生:

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述