考试信息:
1.不规定使用指定查询。抓到老鼠就是好猫。
2.考试时间紧张,给出表的结构,用create建表,给出insert语句,数据就可以载入
3.10道题左右,会有一个题考触发器
4.主要是创建和查询
5.不涉及授权
6.创建表、创建视图、创建索引了解一下
7.创建表时可能涉及到完整性约束,
包括主码、外码和用户定义的约束
8.大家复习时把删除数据delete语句也掌握一下
9.其他班情报:考试范围:SQL语句、完整性约束、触发器
一、SQL语句增删改查(尤其是删除和修改)
增:insert into 表名 values 数据元组
格式1(通用):insert into 表名 values(数据1,数据2,...,数据n)
格式2:insert into 表名(列名1,列名2) values(列名1对应的数据,列名2对应的数据)
删:delete from 表名 where 条件
删前先用select确认要删的东西!!!
格式:delete from 表名 where 条件
删掉了。
改:update 表名 set 赋值逻辑
格式update 表名 set 赋值逻辑
李丽的名字不小心打错成了丽丽,试着改回来吧。
UPDATE student SET sname='李丽' where sname='丽丽'
查:select * from 表名 where 条件 group by 列名 having 聚集函数条件 order by 列名接limit和offset
二、触发器
教材上的写法:一执行就报错
软件班学来的写法:可以运行很舒服
例1
CREATE TRIGGER test
AFTER
INSERT ON student
FOR EACH ROW
UPDATE answer SET answer.totalStudent= answer.totalStudent + 1
意思是如果有人在学生表student中插入数据,就在answer表中的每一行
执行answer.totalStudent= answer.totalStudent + 1
也就是学生总数+1
例2
再来一个
CREATE TRIGGER test5
AFTER
INSERT ON student
FOR EACH ROW
INSERT INTO answer values(5);
INSERT INTO student VALUES('20180012','dd','女','2022-01-01','能动')
SELECT*FROM answer;
三、完整性约束
增
create table 表名(
ssex char(6);
constraint check(ssex='女')
);
ALTER TABLE t表名 ADD CONSTRAINT c33 CHECK(sage>34)
或者alter table t表名
删
alter table t表名 drop c1
啊哦,前面忘在constraint后面写c1了。没关系,用这个
上面这个图里面漏了一个constraint
下面这个ok。
改
先删再增即可
或者
ALTER TABLE t表名 MODIFY CONSTRAINT c33 CHECK (sage>33 OR sage IS NULL);
modify用不了。一直报错。
查
*处显示后通常关注constraint_name,这部分是一个constraint的名字。不找到名字没法删除。
SELECT *
FROM information_schema.table_constraints
WHERE table_name = 't表名' AND constraint_type = 'CHECK';
四、创建视图
核心格式:create view 视图名 as 查询语句
CREATE VIEW top10 AS
SELECT * FROM sc WHERE grade>90
SELECT * FROM top10;
DROP VIEW IF EXISTS top10;
CREATE VIEW top10 AS
SELECT * FROM sc ORDER BY grade DESC LIMIT 10
SELECT * FROM top10;