-- 老师表
-- timestamp 时间戳
CREATE TABLE teachers(
	id    INT(11) PRIMARY KEY AUTO_INCREMENT, 
	uname VARCHAR(40) NOT NULL COMMENT '老师名',
	age   INT(3) NOT NULL COMMENT '年龄',
	sex   INT(1) NOT NULL DEFAULT 0 COMMENT '性别',
	create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
);
-- 班级表
CREATE TABLE class(
	id    INT(11) PRIMARY KEY AUTO_INCREMENT, 
	cname VARCHAR(40) NOT NULL COMMENT '班级',
	grade VARCHAR(20) NOT NULL COMMENT '年级'
);

-- 老师和班级的中间表
-- 中间表就会出现两个外键字段
CREATE TABLE class_and_teacher(
	id    INT(11) PRIMARY KEY AUTO_INCREMENT, 
	class_id INT(11) NOT NULL COMMENT '班级表的主键id',
	teacher_id INT(11) NOT NULL COMMENT '老师表的主键id'
);
-- 主外键约束写几个?
-- ALTER TABLE 外键表 ADD CONSTRAINT 外键名(自己定义) FOREIGN KEY(外键字段) REFERENCES 主键表(主键字段);
ALTER TABLE class_and_teacher ADD CONSTRAINT fk_cat_class FOREIGN KEY(class_id) REFERENCES class(id);
ALTER TABLE class_and_teacher ADD CONSTRAINT fk_cat_teachaer FOREIGN KEY(teacher_id) REFERENCES teachers(id);

/*
表数据创建
1、张老师带火箭班和实验班
2、李老师带平行班和实验班
3、王老师带火箭班平行班实验班
*/

-- 添加数据
INSERT INTO teachers(uname,age) VALUE ("张老师",50);
INSERT INTO teachers(uname,age) VALUE ("李老师",40);
INSERT INTO teachers(uname,age) VALUE ("王老师",30);
SELECT * FROM teachers;
-- 添加数据的第二种写法
INSERT INTO class(cname,grade) VALUES
("火箭班","一年级"),
("平行班","二年级"),
("实验班","二年级");
SELECT * FROM class;

-- 中间表的数据添加
-- 张老师带火箭班和实验班
INSERT INTO class_and_teacher(class_id,teacher_id) VALUES
(1,1),
(3,1);
-- 李老师带平行班和实验班
INSERT INTO class_and_teacher(class_id,teacher_id) VALUES
(2,2),
(3,2);
-- 王老师带火箭班平行班实验班
INSERT INTO class_and_teacher(class_id,teacher_id) VALUES
(1,3),
(2,3),
(3,3);



-- 多表查询练习  查询王老师带了哪几个班
-- 显示老师姓名 班级名称  年级名称
SELECT t.uname,c.cname,c.grade -- 显示哪些字段
FROM class AS c,class_and_teacher AS cat,teachers AS t -- 查询的表
WHERE cat.class_id = c.id -- 主外键
AND   cat.teacher_id = t.id -- 主外键
AND   t.uname = "王老师"; -- 条件



-- 讲几个特殊的查询
INSERT INTO teachers(uname,age) VALUE ("张亮老师",25);
INSERT INTO teachers(uname,age) VALUE ("李平老师",62);
INSERT INTO teachers(uname,age) VALUE ("王昊老师",22);
SELECT * FROM teachers;

-- LIKE 模糊查询  搭配%使用(通配符)
-- 姓张的老师有哪些
SELECT * FROM teachers WHERE uname LIKE "张%";

-- 查询年龄是整数(30 - 40 - 50)的有哪些
SELECT * FROM teachers WHERE age LIKE "%0";

-- 查询名字中有平字的有哪些
SELECT * FROM teachers WHERE uname LIKE "%平%";


-- 排序
-- ORDER BY 字段名称 DESC(倒序)/ASC(正序)
-- 查询学校老师年龄 按住大到小查看
SELECT * FROM teachers ORDER BY age DESC;

-- 查看姓王的老师有哪些,并且按照时间倒序
SELECT * FROM teachers WHERE uname LIKE "王%" ORDER BY create_time DESC;



-- 分页查询 
-- LIMIT a,b 
-- a 起始条数  b显示多少条
SELECT * FROM teachers LIMIT 0,2;-- 从0条开始显示2条
-- 翻页公式
-- a = (a-1) * b;
SELECT * FROM teachers LIMIT 4,2;

 

最后修改于 2022-12-14 19:04:03
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇