1、创建表格时
create table test( id int(4) zerofill -- zerofill 零填充 );
2、timestamp
create table test( id int, data1 timestamp );
timestamp为时间戳,建表时在最后添加一个timestamp字段,每更新一条记录时,系统会自动加上该记录更新时的时间
3、主键自增长
CREATE TABLE test( id INT PRIMARY KEY AUTO_INCREMENT,-- 主键自增 NAME VARCHAR(20) , gender VARCHAR(2) DEFAULT '男' );
4、truncate
删除带有自增的字段数据后,再次插入数据时会按照删除之前的数据排序自增,即会出现自增数据跳跃的情况,可用truncate来删除数据,这样可避免自增跳跃,但是会删除整张表格的所有数据且无法恢复
5、外键约束
CREATE TABLE empe( id INT PRIMARY KEY AUTO_INCREMENT,-- 主键自增 NAME VARCHAR(20) , deptID int, constraint empe_dept_fk foreign key empe(deptID) references dept(id) -- 外键约束 ); CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT,-- 主键自增 depte varchar(20) );
外键约束:constraint+外键名+foreign key+从表(外键约束字段名)+references+主表(参考字段名)
constraint empe_dept_fk foreign key empe(deptID) references dept(id)
此处外键约束作用:在给empe表增加数据时,deptID字段的值 必须在dept表中id字段的取值范围内,否则报错
6、多表等值联查
假设有三张表 ax,bx,cx(字段随意)
select a.name,b.age,c.sex from ax a join bx b on a.id = b.id join cx c on b.name = c.id;
7、级联
级联删除:on delete cascade
级联修改:on update cascade
作用:操作主表的参考字段数据时,从表的外键字段数据自动随之改变
8、数据库设计三大范式
1)要求表的每一个字段,必须是独立的不可分割的单元
2)在第一范式的基础上,要求表的除主键以外的其他字段都要和主键有依赖关系。
例如创建员工表,表中除主键以外,其他所有字段应当都与员工直接相关
3)在第二范式的基础上,要求除主键以外,其他所有字段只能和主键有直接决定的依赖关系
以上三种范式最少满足前两个范式要求,第三范式则根据实际需要, 分表可以节省储存空间降低冗余,但同时也会降低相应的查询效率,因此在实际设计中,则要根据需求来对存储空间和查询效率进行取舍
9、MySql数据库三种变量
1)全局变量
mysql内置的变量,随着数据库的启动,全局变量即开始存在内存中,当数据库关闭时,全局变量才会消失。
查看某个全局变量:select @@变量名
修改某个全局变量:set @@变量名 = 值
2)会话变量
会话变量只在某次登录的会话中有效,退出连接之后,会话变量就失效
查看某个会话变量:select @变量名
修改某个会话变量:set @变量名 = 值
3)局部变量
局部变量在存储过程中定义的变量。存储过程结束,局部变量失效
查看某个局部变量:select 变量名
修改某个局部变量:set 变量名 = 值
定义某个局部变量:declare 变量名 数据类型 default 初始值
一般使用会话变量和局部变量
10、MySql权限问题
1)mysql 数据库:存放mysql配置信息,包括用户信息
use mysql;
2)用户表
select * from user;
3)加密函数(md5算法-单向加密)
select password('root');
4)修改用户密码
update user set password =password('新密码') where user = 'root';
5) 分配权限给不同的用户
grant 功能 on 库名.表名 to '用户名'@'localhost' identified by '密码' ;
例如分配一个查询功能给 新的用户 hei 密码为 123,只能查询 数据库中的student表
grant select on hf2.student to 'hei'@'localhost' identified by '123';
6)取消已分配的权限
revoke select on hf2.studnet from 'hei'@'localhost' identified by '123';
11、备份与恢复
数据库的备份与恢复必须在进入数据库之前进行,在dos窗口中执行相应命令
备份
mysqldump -u root -p 数据库名 > d:/数据库名.sql
恢复
mysql -u root -p 数据库名>d:/数据库名.sql