1、char(N) 和 varchar(N)的区别?
1、都是用来存储字符串的,只是他们的保存方式不一样罢了。
2、char:定长,其余位置用空字符填充,处理速度快,效率高,但是费空间,一般用于固定长度的表单提交数据存储 ;例如:身份证号,手机号。
varchar:不定长,效率偏低。
// varchar(10)如果你存abc,需要空间为4,3个存abc,1个存长度,varchar是可变长度
3、超过10的部分,都会被截断
如何选择使用?
答:所以对存储字符串长度不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型。
2、如果要删除所有记录:
- delete from 表名; ‐‐ 不推荐使用。效率差,有多少条记录就会执行多少次删除操。会保存自增状态。
- truncate table 表名; ‐‐ 推荐使用,效率更高 先删除表,然后再创建一张一样的表。会清除自增的状态。
3、查询结果去重复
distinct
4、where 和 having的区别?
- where 是对所有记录的刷选,在group by分组之前进行的限定。
having是对分组后的多个组进行筛选,如果 不满足结果,则不会被查询出来。- where 后不可以跟聚合函数,having可以进行聚合函数的判断。
5、分页查询
-
语法:
limit 开始展示的记录索引,每页查询的条数;
-
公式:开始的索引 = (当前的页码 ‐ 1) * 每页显示的条数
-
‐‐ 每页显示3条记录
SELECT * FROM student LIMIT 0,3; ‐‐ 第1页 SELECT * FROM student LIMIT 3,3; ‐‐ 第2页 SELECT * FROM student LIMIT 6,3; ‐‐ 第3页
6、约束之——唯一约束unique
结论: 在mysql中unique约束列可以含有多个null!
7、约束之——外键约束foreign key
外键,可以为null值,但是不允许为参照表列中没有的值。
外键,参照的是主表的 唯一约束的列(unique列)。
8、数据库的设计(多表之间的关系)
1)一对一关系:
- 一般而言,若两张表为一对一的关系,则把两张表合并为一张表。
2)一对多关系:
- 如:部门和员工
- 实现方式:在多的一方建立外键,指向一的一方的主键。
-
3)多对多关系:
- 如:学生和课程
- 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,且这两个字段要作为联合主键。这两个字段作为第三张表的外键,分别指向两张表的主键。
-