SQL语句之2约束
约束
约束定义:添加在列上的,对该列进行各种各样的限制。
1、 主键约束(唯一标识) primary key
非空
唯一
可以被引用(外键的时候说)
主键的添加方式:
建表的时候,直接加主键
2、 主键自增长 AUTO_INCREMENT
指的是添加数据的时候,不用管主键的值,所谓的自增长,就是在上一条数据(找主键值最大的那条数据)的主键值上+1
3、 非空约束 not null
4、 唯一约束 unique
第一次执行成功,第二次失败
5、 模型概念(Oracle讲)
6、 外键约束
一个表的外键必须是另一个表的主键(1表的外键需要引用2表的主键)
外键的值可以重复
一张表中可以有多个外键(一般不用,太麻烦,容易出现耦合)
语法:CONSTRAINT外键名字 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键)
如何添加外键:在创建表的时候,直接添加外键
删除外键:需要知道外键的名字,
显示建表的SQL语句
接下来删除外键,语法如下:
提示:sqlyog无法看出是否删除成功,验证方式为,显示建表语句,外键被删除
额外的去添加外键
ALTER TABLE 需要添加外键的表名 ADD CONSTRAINT 外键名字 FOREIGN KEY
(需加外键表的字段名) REFERENCES 关联表(关联表的主键)
外键最主要的作用是:把两个表联系起来进行查询(多表联查,最难的)
编码问题
1、 查看mysql数据库的编码
character_set_client:mysql使用指定的编码方式解读客户端发送过来的数据
character_set_results:mysql使用指定的编码方式解读结果集,再发送给客户端
数据库的备份问题
完全备份:把所有的数据(包括以前的,包括更改的sql语句)都备份,一星期备份一次
差异备份:根据版本来备份 V1.0 V2.0(一个月一个版本),一天备份一次
增量备份:根据修改的内容来备份(包括SQL语句),2-3小时备份一次
1、 数据库导出SQL脚本
mysqldump -u用户名 -p密码 库名>导出地址\文件名.sql
注意:结束的时候,不加分号。不能登录mysql,直接在dos下执行
2、 执行导出后的SQL脚本
mysql –uroot –p123 库名 < 路径\文件名.sql
操作流程:
A 先导出数据库的表,得到.sql文件(注意:该文件中没有建库语句)
B 在客户端删除该库的所有的表
C 执行导入sql文件
D 查看该数据库,表和数据是否已经导入