2020.7.24英谷实训日志

更新更新

这几天电脑出毛病了,连不上网,重启也不好使,换网络也不好使,也不知道为啥,后来关机等了一晚上,第二天自己又好使了,奇奇怪怪,拖更了很抱歉…
来来来,步入正题了,温习一下老师上课讲的内容

常见约束

NOT NULL:非空
该字段的值是必填的,如果不设置该约束,该字段默认是可以为空
DEFAULT:默认
该字段有默认值
CHECK:检查,mysql语法支持,但效果不支持
该字段值可以加以限制,比如年龄可以控制在0-120之间

PRIMARY KEY:主键
该字段值不可以重复
1、不可以为空
2、一个表中只能有一个主键,但是可以多个字段做组合主键
UNIQUE:唯一约束
该字段值不可以重复
1、可以为空
2、一个表中可以有多个唯一键,可以有组合唯一键
FOREIGN KEY:外键
用于限制多表的关系
1、从表的该字段值必须来自于主表的关联列的值
2、从表和主表的关联列的类型必须一样
3、主表的关联列必须是主键
4、在从表中设置外键
5、一个表中可以添加多个外键
6、插入数据时,先插入主表
删除数据时,先删除从表

分类:
位置 支持
列级约束 列的后面 除了外键
表级约束 表的后面 除了非空和默认

#一、★★★★★★★★★★★创建表时添加约束 ★★★★★★★★★★★ √
#CREATE TABLE 表名(
#字段名 字段类型 列级约束,
#字段名 字段类型 列级约束,
#1.添加非空
ALTER TABLE stuinfo MODIFY COLUMN gender CHAR NOT NULL;

#2.添加默认
ALTER TABLE stuinfo MODIFY COLUMN age INT UNSIGNED DEFAULT 18;

#3.添加主键
#①方式一:列级约束的做法
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;

#②方式二:表级约束的做法
#语法:
#ALTER TABLE 表名 ADD [CONSTRAINT 约束名] 约束类型 (字段);

#案例:
ALTER TABLE stuinfo ADD PRIMARY KEY(id);

#4.添加唯一

#①方式一:列级约束的做法
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) UNIQUE;

#②方式二:表级约束的做法
ALTER TABLE stuinfo ADD CONSTRAINT uq_stuinfo UNIQUE(stuname);

#5.添加外键
ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_grade FOREIGN KEY(gradeid) REFERENCES grade(id);

1、事务的概念

事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。

事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。

为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。

2、事务的特点

事务的ACID(acid)属性 (1) 原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
(2)一致性(Consistency)
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

(3)隔离性(Isolation)
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

(4)持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响

3、事物的使用

以第一个 DML 语句的执行作为开始 以下面的其中之一作为结束: COMMIT 或 ROLLBACK 语句 DDL 或 DCL 语句(自动提交) 用户会话正常结束 系统异常终了

SET autocommit=0;#取消自动提交
START TRANSACTION;#开启事务
ROLLBACK;#回滚事务
COMMIT;#提交事务

存储过程:事先经过编译并存储在数据库中的一段sql语句的集合。

使用好处:
1、简化应用开发人员的很多工作
2、减少数据在数据库和应用服务器之间的传输
3、提高了数据处理的效率

调用存储过程或函数

(1)调用存储过程
call 存储过程名(参数列表)
(2)调用函数 Select 函数名(参数列表)

修改存储过程或函数

修改存储过程: alter procedure 存储过程名 [charactristic…]
修改函数: alter function 函数名 [charactristic…] characteristic: {contains sql|no sql|reads sql data|modifies sql data} |sql security{definer|invoker} |comment ‘string’
删除存储过程或函数
说明:一次只能删除一个存储过程或者函数,并且要求有该过程或函数的alter routine 权限 删除存储过程: drop procedure [if exists] 存储过程名 删除函数: drop function [if exists] 函数名

查看存储过程或函数
1.查看存储过程或函数的状态: show {procedure|function} status like 存储过程或函数名 2.查看存储过程或函数的定义: show create {procedure|function} 存储过程或函数名
3.通过查看information_schema.routines了解存储过程和函数的信息(了解) select * from rountines where rounine_name =存储过程名|函数名

视图

视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的。
(1)包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
(2)常量视图
(3)Select中包含子查询
(4)join
(5)from一个不能更新的视图
(6)where子句的子查询引用了from子句中的表
视图的好处:
1、提高查询语句的重用性,调用简单
2、安全
3、独立

视图的应用场景:
1、多个地方用到相同的查询结果
2、查询结果使用了比较复杂的sql语句
创建视图:
create [or replace] view 视图名
as
select 语句;

特点:
1、视图的使用和表的使用是一致的,都支持增删改查,而且语法一样
2、如果视图的查询语句中包含一些特殊关键字,则不支持增删改
分组函数、distinct、group by、having、union或者union all
常量视图
Select中包含子查询
join
from一个不能更新的视图
where子句的子查询引用了from子句中的表

这个周晚上的事情比较多,
所以更新并不是很多或者原创的东西也不是很多,
基本上都是老师上课讲的东西,
有些是引用的英谷刘老师的Word文档,
下周就可以持续更新辣~~

猜你喜欢

转载自blog.csdn.net/Aigtbb/article/details/107597002