电子商务网站建设开题报告,wordpress 小工具移动,jsp商务网站开发,那里有正规网站开发培训学校https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注#xff01; 欢迎关注微信公众号#xff1a;宝藏女孩的成长日记 如有转载#xff0c;请注明出处#xff08;如不注明#xff0c;盗者必究#xff09; 目录一、表的创建1.1创建学生表student_one1.2创建教师表t… https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注 欢迎关注微信公众号宝藏女孩的成长日记 如有转载请注明出处如不注明盗者必究 目录一、表的创建1.1创建学生表student_one1.2创建教师表teacher_one1.3创建课程表course_one1.4创建成绩表score_one二、基于多表的连接查询2.1笛卡尔积交叉连接2.2 内连接2.2.1显示内连接2.2.2隐式内连接2.3外连接查询2.3.1左外连接2.3.2右外连接2.4子查询2.4.1普通子查询2.4.2使用EXISTS的子查询2.4.3使用 NOT EXISTS的子查询2.5 组合查询使用UNION运算符组合多个结果一、表的创建
1.1创建学生表student_one
Sql语句
create table student_one(
sno varchar(20) not null primary key,
sname varchar(20) not null,
ssex varchar(20) not null,
sbirthday datetime,
class varchar(20)
)charsetutf8;
加入数据
insert into student_one values(1,陈奇,男,2000-11-02,1);
insert into student_one values(2,陈飞,男,1999-12-05,2);
insert into student_one values(3,周杰,女,1989-03-01,3);
insert into student_one values(4,昆凌,男,1989-04-15,4);
insert into student_one values(5,王丽,女,1999-05-16,5);
insert into student_one values(6,蔡蔡,男,2000-08-17,6);运行结果
1.2创建教师表teacher_one
Sql语句
create table teacher_one
(
tno varchar(20) not null primary key,
tname varchar(20) not null,
tsex varchar(20) not null,
depart varchar(20) not null
)charsetutf8;
加入数据
insert into teacher_one values(100,斯内普,男,计算机);
insert into teacher_one values(101,哈利波特,男,土木工程);
insert into teacher_one values(102,德拉科,男,中文);
insert into teacher_one values(103,郝敏,女,历史);
insert into teacher_one values(104,莉莉,女,舞蹈);
运行结果
1.3创建课程表course_one
Sql语句
create table course_one(
cno varchar(20) not null primary key,
cname varchar(20) not null,
tno varchar(20) not null,
foreign key(tno) references teacher_one(tno)
)charsetutf8;
加入数据
insert into course_one values(0-1,计算机导论,100);
insert into course_one values(1-5,混凝土结构,101);
insert into course_one values(2-1,古代文论,102);
insert into course_one values(3-2,世界古代史,103);
insert into course_one values(4-2,蒙古舞,104);
运行结果
1.4创建成绩表score_one
Sql语句
create table score_one(
sno varchar(20) not null,
foreign key(sno) references student_one(sno),
cno varchar(20) not null,
foreign key(cno) references course_one(cno),
degree decimal
)charsetutf8;
加入数据
insert into score_one values(1,0-1,99);
insert into score_one values(2,1-5,88);
insert into score_one values(3,2-1,77);
insert into score_one values(4,3-2,66);
insert into score_one values(5,4-2,98);
insert into score_one values(6,3-2,99);
运行结果
二、基于多表的连接查询
多表查询的连接谓词 Join:将两个表连接在一起可进行笛卡尔积、内连接、外连接
2.1笛卡尔积交叉连接
举例 目的将teacher_one表和course_one表做笛卡尔积 Sql语句
SELECT *
FROM teacher_one
CROSS JOIN course_one;
运行结果
2.2 内连接
内连接是最常见的一种连接它也被称为普通连接和自然连接但是只连接匹配的行所以内连接可能丢失信息
2.2.1显示内连接
语法
SELECT 查询的字段
FROM table1 JOIN table2
ON table_b ON table_a.外键 table_b.主键;
举例 目的将学生学号名字成绩查询出来 Sql语句
SELECT student_one.sno, student_one.sname, score_one.degree
FROM score_one JOIN student_one
ON score_one.sno student_one.sno;
运行结果
2.2.2隐式内连接
语法
SELECT 查询的字段
FROM table_a , table_b
WHERE table_a.外键 table_b.主键;
举例 目的将学生学号名字成绩查询出来 Sql语句
SELECT student_one.sno, student_one.sname, score_one.degree
FROM score_one, student_one
WHERE score_one.sno student_one.sno;
运行结果
2.3外连接查询
外连接查询扩充了内连接查询的功能包含全外连接、左外连接、右外连接
2.3.1左外连接
保留第一个表所有行而第二个表只包含与第一个表匹配的行第二个表相应的空行为NULL值 语法
SELECT 查询的字段
FROM table1 LEFT JOIN table2
ON 条件
举例 目的将每位老师的所教的课程查询出来 Sql语句
SELECT teacher_one.tname,course_one.cname
FROM teacher_one LEFT JOIN course_one
ON course_one.tno teacher_one.tno
运行结果
2.3.2右外连接
保留第二个表所有行而第一个表只包含与第二个表匹配的行第一个表相应的空行为NULL值与左外连接相反
语法
SELECT 查询的字段
FROM table1 RIGHT JOIN table2
ON 条件
举例 目的将学生的学号姓名成绩查询出来 Sql语句
SELECT student_one.sno,student_one.sname,score_one.degree
FROM student_one RIGHT JOIN score_one
ON score_one.snostudent_one.sno
运行结果
2.4子查询
2.4.1普通子查询
一条select语句结果作为另一条select语句的查询条件查询结果等。
语法
SELECT 查询的字段
FROM table_a
WHERE 字段 (SELECT 字段 FROM table_a [WHERE 条件])
举例 目的将sno小于3的同学的成绩查询出来 Sql语句 SELECT student_one.sname, score_one.degree
FROM student_one LEFT JOIN score_one
ON score_one.sno student_one.sno
WHERE student_one.sno IN (SELECT sno FROM student_one WHERE student_one.sno 3)
注意当子查询产生一系列的值时用IN,如果只有单个的值就用 运行结果
2.4.2使用EXISTS的子查询
EXISTS EXISTS搜索条件并不真正使用子查询的结果它仅仅测试子查询是否产生任何结果 语法
SELECT 查询的字段
FROM table
WHERE EXISTS (条件)
举例 目的查询teacher_one表里面是否存在教师编号小于105的教师不存在返回NULL Sql语句
SELECT teacher_one.tname, course_one.cname
FROM teacher_one LEFT JOIN course_one
ON course_one.tno teacher_one.tno
WHERE EXISTS (SELECT tno FROM teacher_one WHERE teacher_one.tno 105)
运行结果
2.4.3使用 NOT EXISTS的子查询
NOT EXISTS 与 EXISTS的作用相反如果子查询没有返回行则满足 NOT EXISTS的WHERE子句 语法
SELECT 查询的字段
FROM table
WHERE NOT EXISTS (条件)
举例 目的查询teacher_one表里面是否存在教师编号等于109的教师存在返回NULL不存在返回数据 Sql语句
SELECT *
FROM teacher_one
WHERE NOT EXISTS (SELECT tno FROM teacher_one WHERE tno109)运行结果
2.5 组合查询使用UNION运算符组合多个结果
语法
查询语句A
UNION
查询语句B举例 目的将性别为男学号为5的同学的学号姓名年龄都查询出来 Sql语句
SELECT sno,sname,YEAR(from_days(datediff(now(), sbirthday))) AS 年龄
FROM student_one
WHERE ssex男
UNION ALL
SELECT sno,sname,YEAR(from_days(datediff(now(), sbirthday))) AS 年龄
FROM student_one
WHERE sno5运行结果