配合随堂笔记一起查看,不懂重新来过。
数据类型中:
varchar和char区别
varchar长度是可变地,char是固定的。比如,varchar(10)的value是"abc",那么varchar长度是3;char(10)的value是“abc”,那么长度还是10。
英文是占有1个字节;中文是2个字节。
1- truncasr table :先删除表,再创建个空表
2-select from 表明 order by 列名1 asc ,列名2 asc:
先执行最第一个排序命令,如果前面的属性有一样的时候,再执行第二个
3-count*主要有一行不是为空,都算null
count count(ifnull 列名,0)把那个列名为null值改为0
用count计算非空列(主建)
4-分组的查询语句中,只能出现被分组的字段(列名)和聚合函数
5-where和having区别。前者是对分组前进行筛选,满足才参与分组;后者是对分组后的结果进行筛选。
where后面不能跟聚合函数判断,having可以。
而且having可以使用查询聚合函数命令的别名来简化代码。
select sex,count(id),avg(math) 人数 from student where math >70 group by sex having 人数>=2
6-limit 从哪开始显示,每页显条数 --第1页
其中,"从哪开始显示"=(当时页数-1)×每页显示条数
7-对于非空约束,一般分2种方式来添加:
one.创建表的时候,加非空约束
two.创建完表再用alter修改约束
8-唯一约束不能使用alter modify来删除(添加可以),要使用alter …drop index 列名
9-主键=非空+唯一。删除主键:alter table 表名 drop primary key
自动增长
自动增长是什么?
答:如果某一列是数值类型的,使用auto_increment 可以来完成值得自动增长
注意:当设置了自动增长,我insert inito value时是可以设置null的,但是设置null不是null,而是根据表的列中最后一位进行自动增长。
为什么用自动增长?
答:一般id是连续的数值,如果没有设置,自己要一个一个地加,那是不是很麻烦?
外键
“主表名称”一般为主键。
(外键)级联操作:
什么是级联?
用来设计“一对多”关系。多要关联一,一什么它们就是什么。
为什么要设置关联?
比如:有1张员工表(姓名、年龄、部门),另一张表部门表(部门ID)
如果员工表没有设置级联操作,那么它设置“部门”的时候,要一个一个打自己打。那表中数据多了,是不是很蛋疼?所以,当我设置了级联操作之后,“员工表”中的“部门”关联了“部门表中“的”部门ID”,”员工表“中的”部门“就自动填补了关联的数据。
如图,不使用级联的情况。先把dep_id设置为空(它 是表中外键,里面的值除非是关联表中的主键值or NULL,其他值不行。)
怎么设置联动操作?
在设置外键的时候设置,如图
级联更新
当设置了级联更新的时候,如果主键的值修改了,那么外键的值也对应修改。
级联删除 —【谨慎】
当设置了级联删除,如果主键的值删除了,那么对应的外键的信息全部删除。
多表关系
一对多
多对多
一对一
一对一关系的表很少很少这样,如果有我们为什么不把它拼在一起。
案列
主要是:
- 知道【实体】就是一个表
- 找到表与表之间的关系(一对一,一对多,多对多)