2.4 KiB
2.4 KiB
第一套
#1 插入记录
/*
主键自增字段:DEFAULT
设置成空值:NULL
*/
INSERT INTO t_employee()
VALUES('e0013', '刘红', '女', 22, '实习生', 'd0002', NULL);
#2.修改表结构
/*
修改表中字段的数据类型
ALTER TABLE 表名 MODIFY 字段名 数据类型 [约束];
*/
ALTER TABLE t_employee MODIFY sex ENUM('男', '女');
#3 创建外键
/*
学生表(学号、姓名、班级编号)
班级表(班级编号、班级名称)
外键表:学生表 主键表:班级表
ALTER TABLE 学生表 ADD CONSTRAINT fk_st FOREIGN KEY(班级编号) REFERENCES 班级表(班级编号);
FOREIGN KEY(字段) 外键表中的字段
REFERENCES 表名(字段) 字段是表中的主键
*/
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(字段名) REFERENCES 表名(主键字段名);
ALTER TABLE t_employee ADD CONSTRAINT fK_did FOREIGN KEY(did) REFERENCES t_department(did);
#4 排序、分页查询 tj11
/*
基础查询
SELECT 字段
FROM 表
ORDER BY 需要排序的字段 ASC/DESC(升序/降序)
LIMIT 起始位置,个数;
*/
#查询出员工的所有信息
SELECT *
FROM t_employee;
#在基础查询之上对年龄进行降序排序
SELECT *
FROM t_employee
ORDER BY age DESC;
#在排序的基础之上,进行分页
SELECT *
FROM t_employee
ORDER BY age DESC
LIMIT 5, 8;#第0个代表第一个 第六个使用的位置是5
#5条件查询 tj12
/*
SELECT 字段
FROM 表
WHERE 条件;
*/
SELECT *
FROM t_salary
WHERE money >= 5000 AND money <= 8000;
#6
#9 触发器
DELIMITER $$
DROP TRIGGER IF EXISTS tri_updateGroup;
CREATE TRIGGER tri_updateGroup
BEFORE UPDATE ON t_employee
FOR EACH ROW
BEGIN
IF NEW.age != OLD.age THEN
IF NEW.age<30 THEN
SET NEW.groups = '青年';
ELSEIF NEW.age<50 THEN
SET NEW.groups = '中年';
ELSE
SET NEW.groups = '老年';
END IF;
END IF;
END $$
DELIMITER ;
#10 存储过程
DELIMITER $$ #改变代码结束符
DROP PROCEDURE IF EXISTS pro_GetTopSalary;#创建存储过程之前先删除
#设置存储过程名,传入传出参数名和数据类型
CREATE PROCEDURE pro_GetTopSalary(IN in_did CHAR(10), OUT out_ename VARCHAR(30))
BEGIN
#连接查询+排序+分页
SELECT e.ename INTO out_ename
FROM t_employee e, t_salary s
WHERE e.eid = s.eid AND e.did = in_did
ORDER BY s.money DESC
LIMIT 1;
END $$
DELIMITER ;
#调用存储过程 传入用户变量接收传出数据并使用打印出来
CALL pro_GetTopSalary('d0001', @result);
SELECT @result;