触发器:
约束:用于限制表中的数据,为了保证表中的数据的准确和可靠性
六大约束:
NOT NULL:非空
default:默认,用于保证该字段有默认值
primary key:主键,字段唯一且非空
unique:唯一,可以为空
check:检查约束(mysql中不支持)
foreing key:外键,用于限制两个表的关系,保证该字段来自主表关联列的值,,主表的关联列必须为key
约束添加分类:
列级约束:六大约束都支持,但外键没有效果
表级约束:除了非空、默认,其他的都支持
列级约束:
表级约束:
修改表时添加约束:
添加列级约束:alter table 表名 modify column 字段名 字段类型 新约束
添加表级约束:alter table 表名 add【constraint 约束名】约束类型(字段名)【外键的引用】
添加非空约束:
添加默认约束:
添加主键:
外键联级删除:
添加唯一:
修改表时删除约束:
1、删除非空约束:
2、删除默认约束:
3、删除主键:
4、删除唯一:
5、删除外键:
标识列(自增)特点:
1、标识列不一定和主键搭配,但要求一定是一个key
2、一个表至多有一个标识列
3、标识列只能是数值型
4、标识列可以通过set auto_increment_increment=3,设置步长
可以通过手动插入值,设置起始值。
set @@auto_increment_increment=2; --设置步长为2
set @@auto_increment_offset=2; --设置初始值
开启事务:
1、开启事务
set autocommit=0;
start transacion (可以省略)
2、编写一组逻辑sql语句(insert、update、delete)
设置回滚点:savepoint 回滚点名
3、结束事务
提交:commit
回滚:rollback
回滚到指定地方:rollback to 回滚点名;
创建视图:
方式一:create or replace view 视图名
as
查询语句
方式二:alter view 视图名
as
查询语句
删除视图:drop view 视图1,视图2...
查看视图: desc 视图名
show create view 视图。
注意:视图一般用于查询,而不是用于更新,所以具备以下特点的视图都不允许更新
1、包含分组函数:group by、distinct、having、union.
2、join
3、常量视图
4、where后的子查询用到from中的表
5、用到了不可更新的视图
联级删除:
联级置空:
修改视图:
删除视图:
存储过程:
1.参数模式:in,out,inout,其中in可以省略
2.存储过程的每一条sql语句都要用分号结束
call:存储过程名(实参列表)
in:call sq1(‘值’)
out:set @name;call sq1(@name)
inout:set @name=值;call sq1(@name);select @name;
查看:show create procedure 存储过程名
删除:drop proceduce 存储过程名
函数:
使用delimiter语句设置结束标记
函数体只有一句,则可以省略begin end
注意:函数一定有return语句
调用:select 函数名(实参列表)
查看函数:show create function 函数名
删除函数:drop function 函数名
if函数:
if(表达式1,表达式2,表达式3)
执行顺序:如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值
可用于任何地方。
case:
特点:可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,bigin end 中或begin en的外面
可以作为独立的语句去使用,只能放在begin end中
else可以省略,如果else省略了,并且所有when条件都不满足,则返回null
循环结构:while、loop、repeat
iterate类似于 continue,
leave类似于 break
while:
loop:
repeat:
区别:
存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新
函数:有且仅有1个返回,适合做处理数据后返回一个结果