From d7eb2e8c43615608b084febf51f958d0264166d9 Mon Sep 17 00:00:00 2001 From: Gui ze yu <2970307356@qq.com> Date: Mon, 27 Feb 2023 23:13:39 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\344\270\216\345\241\253\345\200\274 .md" | 36 +- ...14\350\277\220\347\256\227\347\254\246.md" | 103 ++++ .../\344\275\234\344\270\232.docx" | Bin 0 -> 28529 bytes .../\344\275\234\344\270\232.md" | 555 ++++++++++++++++++ 4 files changed, 680 insertions(+), 14 deletions(-) create mode 100644 "09 \346\241\202\346\263\275\347\205\234/SELECT\350\257\255\345\217\245\345\222\214\350\277\220\347\256\227\347\254\246.md" create mode 100644 "09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.docx" create mode 100644 "09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" diff --git "a/09 \346\241\202\346\263\275\347\205\234/DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274 .md" "b/09 \346\241\202\346\263\275\347\205\234/DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274 .md" index 938941b..f10d8fc 100644 --- "a/09 \346\241\202\346\263\275\347\205\234/DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274 .md" +++ "b/09 \346\241\202\346\263\275\347\205\234/DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274 .md" @@ -284,26 +284,34 @@ B. 雇员表(emoloyee):雇员编号(empid),姓名(name),性 * ​ 雇员编号为主键; * ​ 部门编号为外键,外键约束等级为(on update cascade 和on delete set null); * ​ 性别默认为男; -mysql> CREATE TABLE emoloyee( - -> empid int PRIMARY key , +mysql> set @@foreign_key_checks =0; +Query OK, 0 rows affected (0.00 sec) + +mysql> create table emoloyee( + -> empid int primary key, -> name varchar(10), - -> sex enum('男','女') not null DEFAULT '男', - -> title varchar(10), + -> sex varchar(1) default'男', + -> title int, -> birthday date, -> depid int, - -> constraint fk_department - -> FOREIGN key (depid) REFERENCES department(depid) on UPDATE cascade on delete set null - -> )comment 'emoloyee' ; + -> foreign key(depid) references department(depid) on update cascade on delete set null + -> ) comment 'emoloyee'; +Query OK, 0 rows affected (0.06 sec) C. 工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)。其中雇员编号为主键。 3、给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和on delete cascade): -mysql> CREATE table salary( - -> empid int PRIMARY KEY, - -> basesalary int , - -> titlesalary int , - -> deduction int null, - -> constraint fk_emoloyee - -> FOREIGN KEY (empid) REFERENCES emoloyee(empid) on update cascade on delete cascade +mysql> create table salary( + -> empid int primary key, + -> basesalary varchar(10), + -> titlesalary varchar(20), + -> deduction int -> ) comment 'salary' ; +Query OK, 0 rows affected (0.05 sec) +mysql> alter table salary + -> add foreign key(empid) + -> references emoloyee(empid); +Query OK, 0 rows affected (0.01 sec) +Records: 0 Duplicates: 0 Warnings: 0 + 添加数据: mysql> INSERT INTO department VALUES(111,'生产部',null), -> (222,'销售部',null), diff --git "a/09 \346\241\202\346\263\275\347\205\234/SELECT\350\257\255\345\217\245\345\222\214\350\277\220\347\256\227\347\254\246.md" "b/09 \346\241\202\346\263\275\347\205\234/SELECT\350\257\255\345\217\245\345\222\214\350\277\220\347\256\227\347\254\246.md" new file mode 100644 index 0000000..5fdf4c8 --- /dev/null +++ "b/09 \346\241\202\346\263\275\347\205\234/SELECT\350\257\255\345\217\245\345\222\214\350\277\220\347\256\227\347\254\246.md" @@ -0,0 +1,103 @@ +## 第1题:员工表 + +```mysql +drop table if exists `employee`; +#创建employee表 +CREATE TABLE employee( + id INT, + `name` VARCHAR(20), + sex VARCHAR(20), + tel VARCHAR(20), + addr VARCHAR(50), + salary FLOAT +); + +#添加信息 +INSERT INTO employee(id,`name`,sex,tel,addr,salary)VALUES +(10001,'张一一','男','13456789000','广东韶关',10010.58), +(10002,'刘小红','女','13454319000','广东江门',12010.21), +(10003,'李四','男','0751-1234567','广东佛山',10040.11), +(10004,'刘小强','男','0755-5555555','广东深圳',15010.23), +(10005,'王艳','男',NULL,'广东广州',14050.16); +``` + +| **id** | **name** | **sex** | **tel** | **addr** | **salary** | +| ------ | -------- | ------- | ------------ | -------- | ---------- | +| 10001 | 张一一 | 男 | 13456789000 | 广东韶关 | 10010.58 | +| 10002 | 刘小红 | 女 | 13454319000 | 广东江门 | 12010.21 | +| 10003 | 李四 | 男 | 0751-1234567 | 广东佛山 | 10040.11 | +| 10004 | 刘小强 | 男 | 0755-5555555 | 广东深圳 | 15010.23 | +| 10005 | 王艳 | 女 | NULL | 广东广州 | 14050.16 | + +**要求1:**查询出薪资在12000~13000之间的员工信息。 + +**要求2:**查询出姓“刘”的员工的工号,姓名,家庭住址。 + +**要求3:**将“李四”的家庭住址改为“广东韶关” + +**要求4:**查询出名字中带“小”的员工 + +**要求5:**查询出薪资高于11000的男员工信息 + +**要求6:**查询没有登记电话号码的员工 + +**要求7:**查询薪资高于12000或者家是广东深圳、广州的男员工 + +**要求8:**查询每个员工的年薪,显示“姓名、年薪” + +```sql +查询出薪资在12000~13000之间的员工信息: +SELECT * from employee WHERE salary <=13000 and salary >=12000; +查询出姓“刘”的员工的工号,姓名,家庭住址: +SELECT id,name,addr from employee WHERE name like '刘%'; +SELECT id,name,addr from employee WHERE name like '刘__'; +将“李四”的家庭住址改为“广东韶关”: +update employee set name ="李四",addr ="广东韶关" where id =10003; + +``` + +## 第2题:国家信息表 + +countries_info表中存储了国家名称、所属大陆、面积、人口和 GDP 值。 + + + +表数据样例: + + +-------------+-----------+---------+------------+--------------+ + | name | continent | area | population | gdp | + +-------------+-----------+---------+------------+--------------+ + | Afghanistan | Asia | 652230 | 25500100 | 20343000000 | + | Albania | Europe | 28748 | 2831741 | 12960000000 | + | Algeria | Africa | 2381741 | 37100000 | 188681000000 | + | Andorra | Europe | 468 | 78115 | 3712000000 | + | Angola | Africa | 1246700 | 20609294 | 100990000000 | + +-------------+-----------+---------+------------+--------------+ + +**要求1:** 查询大国 的国家名称、人口和面积。 + +如果一个国家满足下述两个条件之一,则认为该国是 大国 : + +* 面积至少为 300万平方公里(即,3000000 km2) + +* 人口至少为 2500 万(即 25000000) + +**要求2:**查询属于亚洲的国家名称、所属大陆、面积、人口和 GDP 值 + +**要求3:**查询国土面积不足1万平方公里且人口不走10万人的国家信息 + +**要求4:**查询国家名字中包含“o“字母的国家信息 + +**要求5:**查询GDP值超过10000000000的国家信息 + +**要求6:**查询每个国家的人均贡献GDP值(GDP/人口总数)并显示为“国家名、人口、GDP值、人均贡献GDP值” + +**要求7:**查询人均贡献GDP值低于1000的国家信息。 + +**要求8:**查询每个国家的人均国土面积(面积/人口总数)并显示为“国家名、面积、人口、人均国土面积值” + +```sql + +``` + + diff --git "a/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.docx" "b/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.docx" new file mode 100644 index 0000000000000000000000000000000000000000..73235ab3037f2b6414001022a3554a43124a493c GIT binary patch literal 28529 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 literal 0 HcmV?d00001 diff --git "a/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" "b/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" new file mode 100644 index 0000000..7673772 --- /dev/null +++ "b/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" @@ -0,0 +1,555 @@ +```mysql +drop database users; +create database users charset=utf8; +use users; +create table Student( +Sno varchar(20) not null primary key comment'学号', +Sname varchar(20) not null comment'学生姓名', +Ssex varchar(20) not null comment'学生性别', +Sbirthday datetime null comment'学生出生年月', +Class varchar(20) null comment'学生所在班级' +) comment'学生表'; +create table Course( +Cno varchar(20) not null primary key comment'课程号', +Cname varchar(20) not null comment'课程名称', +Tno varchar(20) not null comment'教工编号' +) comment'课程表'; +create table Score( +Sno varchar(20) not null comment'学号', +Cno varchar(20) not null comment'课程号', +primary key(Sno,Cno), +Degree Decimal(4,1) null comment'成绩' +) comment'成绩表'; +create table Teacher( +Tno varchar(20) not null primary key comment'教工编号', +Tname varchar(20) not null comment'教工姓名', +Tsex varchar(20) not null comment'教工性别', +Tbirthday datetime null comment'教工出生年月', +Prof varchar(20) null comment'职称', +Depart varchar(20) not null comment'教工所在部门' +) comment'教师表'; +alter table Course +add FOREIGN key(Tno) references Teacher(Tno); +insert into Student +(Sno,Sname,Ssex,Sbirthday,class) +values +(108,"曾华","男","1977-9-1",95033), +(105,"匡明","男","1975-10-2",95031), +(107,"王丽","女","1976-1-23",95033), +(101,"李军","男","1976-2-20",95033), +(109,"王芳","女","1975-2-10",95031), +(103,"陆君","男","1974-6-3",95031); +set foreign_key_checks = 0; +insert into Course +(Cno,Cname,Tno) +values +(3-105,"计算机导论",825), +(3-245,"操作系统",804), +(6-166,"数字电路",856), +(9-888,"高等数学",831); +insert into Score +(Sno,Cno,Degree) +values +(103,3-245,86), +(105,3-245,75), +(109,3-245,68), +(103,3-105,92), +(105,3-105,88), +(109,3-105,76), +(101,3-105,64), +(107,3-105,91), +(108,3-105,78), +(101,6-166,85), +(107,6-166,79), +(108,6-166,81); +insert into Teacher +values +(804,"李城","男","1958-12-2","副教授","计算机系"), +(856,"张旭","男","1969-3-12","讲师","电子工程系"), +(825,"王萍","女","1972-5-5","助教","计算机系"), +(831,"刘冰","女","1977-8-14","助教","电子工程系"); +-- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ +select * from Student inner join Course; +-- 2,查询没有学生的教师的所有信息 +select DISTINCT Sname,Tname from Student cross join Teacher WHERE Sname is null; +4 .查询 + ① 查询Score表中的最高分的学生学号和课程号。 + select min(Sno),Cno from Score; + ② 查询所有学生的Sname、Cno和Degree列。 + select Sname,Cno,Degree from Student inner join Score; +③ 查询所有学生的Sno、Cname和Degree列。 +select Student.Sno,Cname,Degree from Student inner join Course Cross join Score; + +④ 查询所有学生的Sname、Cname和Degree列。 +select Sname,Cname,Degree from Student inner join Course cross join score; +⑤ 查询“95033”班学生的平均分。 +⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 +select Cno,Degree from Score WHERE Cno <=> (3-105) or Degree >109; +⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 +select min(Degree) from Score; +⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 +select Student.Sno,Course.Cno from Student inner join Course cross join Score WHERE Course.Cno =3-105 or Student.Sno >109; +⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 +select Sno,Sname,Sbirthday from Student where Sbirthday = 1977-9-1 xor Sno = 108; +⑩ 查询“张旭“教师任课的学生成绩。 +select Tname,Degree from Student inner join Score cross join Teacher where Tname ="张旭"; +11 查询选修某课程的同学人数多于5人的教师姓名。 +select DISTINCT Tname from Student inner join Teacher cross join Course WHERE Sno>5 ; +12 查询出“计算机系“教师所教课程的成绩表。 +select Tname,Cname,Degree,Depart from Teacher inner join Score cross join Course where Depart ="计算机系"; +13 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 +select Tname,Prof,Depart from Teacher WHERE Depart ='计算机系' or Depart ='电子工程系'; +14 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 +select Cno,Sno,Degree from Score WHERE Cno <=>(3-105) xor Cno > (3-245) ORDER BY Degree DESC; +15 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. +select Cno,Sno,Degree from Score WHERE Cno =(3-105) xor Cno >(3-245); +16 查询成绩比该课程平均成绩低的同学的成绩表。 +select *from Student Score inner join Course ; +17 查询所有任课教师的Tname和Depart. +select Tname,Depart from Teacher ; +18 查询所有未讲课的教师的Tname和Depart. +select Tname,Depart from Teacher inner join Course WHERE not Cname; +19 查询“男”教师及其所上的课程。 +select Tname,Cname,Tsex from Teacher inner join Course WHERE Tsex ='男'; +20 查询最高分同学的Sno、Cno和Degree列。 +select Student.Sno,Cno,Degree from Score inner join Student ; +21 查询和“李军”同性别的所有同学的Sname. +select Sname ,Ssex from Student WHERE Ssex ='男'; +22 查询和“李军”同性别并同班的同学Sname. +select Sname ,Ssex,class from Student WHERE Ssex ='男' and class =95033; +23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 +select Cname,Ssex,Degree from Course inner join Score cross join Student HAVING Cname='计算机导论' and Ssex='男'; +``` + +笔记 + +- **什么是分组查询?** + +> 将查询结果按照1个或多个字段进行分组,字段值相同的为一组 +> 其实就是按照某一列进行分类 + +- **分组使用** + +> **SELECT gender from employee GROUP BY gender;** +> +> 根据gender字段来分组,gender字段的全部值只有两个('男'和'女'),所以分为了两组 +> 当group by单独使用时,只显示出每一组的第一条记录 +> 所以group by单独使用时的实际意义不大 + +![img](https://pic3.zhimg.com/80/v2-2dd056cc432e89898c80cbacf78c3dda_720w.webp) + +对这个表进行GROUP BY操作 + +```text +SELECT * FROM employee; +``` + +![img](https://pic3.zhimg.com/80/v2-650d569e895acc26b20d0a0edc2596e6_720w.webp) + +只显示了每一组第一条记录 + +男生的第一个人是张三 女生的第一个人是王五 + +![img](https://pic2.zhimg.com/80/v2-a289b4d4803b3e9869656420f5c87d75_720w.webp) + +所以说GROUP BY 一般不单独使用 + + + +**一般来说 你按照什么分组 就查询什么东西** + +**比如:** + +```text +select department from employee group by department; +``` + +![img](https://pic2.zhimg.com/80/v2-9f78a7bd599627321b0323af525d6ff9_720w.webp) + +查询结果如上。 + +**分完组然后呢?** + +- **如何对分组后的结果进行查询?** + +**关键字:group_concat()** + +将职员表 按照部门分组 查询每个部门职员的姓名 + +```text +select department,group_concat(name) from employee group by department; +``` + +结果如下: + +![img](https://pic2.zhimg.com/80/v2-ae5227cf66ecdc638e79980dede53499_720w.webp) + +------ + +- **GROUP BY + 聚合函数** + +**for example:** + +将职员表 按照部门分组 查询每个部门职员的薪水 和 **薪水总数** + +```text +select department,group_concat(salary),sum(salary) from employee group by department; +``` + +![img](https://pic1.zhimg.com/80/v2-9b5ca13455b29ebcf2e598d38ea87754_720w.webp) + +> 查询每个部门的名称 以及 每个部门的人数 + +```mysql +select department,group_concat(name),count(*) from employee group by department; +``` + +> 查询每个部门的部门名称 以及 每个部门工资大于1500的人数 + +PS:**先把大于1500的人查出来 再做分组** + +```text +select department,group_concat(salary),count(*) from employee group by department; +``` + +------ + +**group by + having** + +- 用来分组**查询后**制定一些条件来输出查询结果 +- having的作用和where一样,但having只能用于group by +- 查询工资总和大于9000的部门名称以及工资和 + +```text +SELECT department,GROUP_CONCAT(salary),SUM(salary) FROM employee +GROUP BY department HAVING SUM(salary) > 9000; +``` + +- having和where的区别 + +> having是在分组后对数据进行过滤 +> where是在分组前对数据进行过滤 +> having后面可以使用分组函数(统计函数) +> where后面不可以使用分组函数 +> where是对分组前记录的条件,如果某行记录没有满足where子句的条件,那么这行记录不会参加分组;而having是对分组后数据的约束 + + + +- 查询工资和大于2000的 工资总和大于6000的部门名称以及工资和 + +```text +SELECT department,GROUP_CONCAT(salary).SUM(salary) FROM employee +WHERE salary > 2000 +GROUP BY department +HAVING SUNM(salary) > 9000 +ORDER BY SUM(salary) DESC; +//降序排列 +``` + +------ + +**书写顺序** + +![img](https://pic3.zhimg.com/80/v2-166d3cee10b01a68e90af2a5d5ed9866_720w.webp) + +------ + +**Limit的使用** + +![img](https://pic3.zhimg.com/80/v2-cc55920af6e230cfe251bf53dd35a9c6_720w.webp) + +```text +SELECT * FROM employee LIMIT 3,3; +``` + +**从第三行开始 取三条数据** + +**PS:行是从0开始数的** + +![img](https://pic3.zhimg.com/80/v2-320efb37091a14d6e9b35e997c81941a_720w.webp) + +![img](https://pic1.zhimg.com/80/v2-29ecf40b5281d6f98d6a78ecac889ab8_720w.webp) + +------ + +**limit可以用于分页操作** + +![img](https://pic3.zhimg.com/80/v2-71ce51c3e1d647067bc562f362b88ee6_720w.webp) + +- **什么是分组查询?** + +> 将查询结果按照1个或多个字段进行分组,字段值相同的为一组 +> 其实就是按照某一列进行分类 + +- **分组使用** + +> **SELECT gender from employee GROUP BY gender;** +> +> 根据gender字段来分组,gender字段的全部值只有两个('男'和'女'),所以分为了两组 +> 当group by单独使用时,只显示出每一组的第一条记录 +> 所以group by单独使用时的实际意义不大 + +![img](https://pic3.zhimg.com/80/v2-2dd056cc432e89898c80cbacf78c3dda_720w.webp) + +对这个表进行GROUP BY操作 + +```text +SELECT * FROM employee; +``` + +![img](https://pic3.zhimg.com/80/v2-650d569e895acc26b20d0a0edc2596e6_720w.webp) + +只显示了每一组第一条记录 + +男生的第一个人是张三 女生的第一个人是王五 + +![img](https://pic2.zhimg.com/80/v2-a289b4d4803b3e9869656420f5c87d75_720w.webp) + +所以说GROUP BY 一般不单独使用 + + + +**一般来说 你按照什么分组 就查询什么东西** + +**比如:** + +```text +select department from employee group by department; +``` + +![img](https://pic2.zhimg.com/80/v2-9f78a7bd599627321b0323af525d6ff9_720w.webp) + +查询结果如上。 + +**分完组然后呢?** + +- **如何对分组后的结果进行查询?** + +**关键字:group_concat()** + +将职员表 按照部门分组 查询每个部门职员的姓名 + +```text +select department,group_concat(name) from employee group by department; +``` + +结果如下: + +![img](https://pic2.zhimg.com/80/v2-ae5227cf66ecdc638e79980dede53499_720w.webp) + +------ + +- **GROUP BY + 聚合函数** + +**for example:** + +将职员表 按照部门分组 查询每个部门职员的薪水 和 **薪水总数** + +```text +select department,group_concat(salary),sum(salary) from employee group by department; +``` + +![img](https://pic1.zhimg.com/80/v2-9b5ca13455b29ebcf2e598d38ea87754_720w.webp) + +> 查询每个部门的名称 以及 每个部门的人数 + +```mysql +select department,group_concat(name),count(*) from employee group by department; +``` + +> 查询每个部门的部门名称 以及 每个部门工资大于1500的人数 + +PS:**先把大于1500的人查出来 再做分组** + +```text +select department,group_concat(salary),count(*) from employee group by department; +``` + +------ + +**group by + having** + +- 用来分组**查询后**制定一些条件来输出查询结果 +- having的作用和where一样,但having只能用于group by +- 查询工资总和大于9000的部门名称以及工资和 + +```text +SELECT department,GROUP_CONCAT(salary),SUM(salary) FROM employee +GROUP BY department HAVING SUM(salary) > 9000; +``` + +- having和where的区别 + +> having是在分组后对数据进行过滤 +> where是在分组前对数据进行过滤 +> having后面可以使用分组函数(统计函数) +> where后面不可以使用分组函数 +> where是对分组前记录的条件,如果某行记录没有满足where子句的条件,那么这行记录不会参加分组;而having是对分组后数据的约束 + + + +- 查询工资和大于2000的 工资总和大于6000的部门名称以及工资和 + +```text +SELECT department,GROUP_CONCAT(salary).SUM(salary) FROM employee +WHERE salary > 2000 +GROUP BY department +HAVING SUNM(salary) > 9000 +ORDER BY SUM(salary) DESC; +//降序排列 +``` + +------ + +**书写顺序** + +![img](https://pic3.zhimg.com/80/v2-166d3cee10b01a68e90af2a5d5ed9866_720w.webp) + +------ + +**Limit的使用** + +![img](https://pic3.zhimg.com/80/v2-cc55920af6e230cfe251bf53dd35a9c6_720w.webp) + +```text +SELECT * FROM employee LIMIT 3,3; +``` + +**从第三行开始 取三条数据** + +**PS:行是从0开始数的** + +![img](https://pic3.zhimg.com/80/v2-320efb37091a14d6e9b35e997c81941a_720w.webp) + +![img](https://pic1.zhimg.com/80/v2-29ecf40b5281d6f98d6a78ecac889ab8_720w.webp) + +------ + +**limit可以用于分页操作** + +![img](https://pic3.zhimg.com/80/v2-71ce51c3e1d647067bc562f362b88ee6_720w.webp) + +```mysql +inner join,full outer join,left join,right jion +内部连接 inner join 两表都满足的组合 +full outer 全连 两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有 +A表没有的显示为(null) +A表 left join B表 左连,以A表为基础,A表的全部数据,B表有的组合。没有的为null +A表 right join B表 右连,以B表为基础,B表的全部数据,A表的有的组合。没有的为null + + +查询分析器中执行: +--建表table1,table2: +create table table1(id int,name varchar(10)) +create table table2(id int,score int) +insert into table1 select 1,'lee' +insert into table1 select 2,'zhang' +insert into table1 select 4,'wang' +insert into table2 select 1,90 +insert into table2 select 2,100 +insert into table2 select 3,70 +如表 +------------------------------------------------- +table1|table2| +------------------------------------------------- +idname|idscore| +1lee|190| +2zhang|2100| +4wang|370| +------------------------------------------------- + +以下均在查询分析器中执行 + +一、外连接 +1.概念:包括左向外联接、右向外联接或完整外部联接 + +2.左连接:left join 或 left outer join +(1)左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。 +(2)sql语句 +select * from table1 left join table2 on table1.id=table2.id +-------------结果------------- +idnameidscore +------------------------------ +1lee190 +2zhang2100 +4wangNULLNULL +------------------------------ +注释:包含table1的所有子句,根据指定条件返回table2相应的字段,不符合的以null显示 + +3.右连接:right join 或 right outer join +(1)右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。 +(2)sql语句 +select * from table1 right join table2 on table1.id=table2.id +-------------结果------------- +idnameidscore +------------------------------ +1lee190 +2zhang2100 +NULLNULL370 +------------------------------ +注释:包含table2的所有子句,根据指定条件返回table1相应的字段,不符合的以null显示 + +4.完整外部联接:full join 或 full outer join +(1)完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。 +(2)sql语句 +select * from table1 full join table2 on table1.id=table2.id +-------------结果------------- +idnameidscore +------------------------------ +1lee190 +2zhang2100 +4wangNULLNULL +NULLNULL370 +------------------------------ +注释:返回左右连接的和(见上左、右连接) + +二、内连接 +1.概念:内联接是用比较运算符比较要联接列的值的联接 + +2.内连接:join 或 inner join + +3.sql语句 +select * from table1 join table2 on table1.id=table2.id +-------------结果------------- +idnameidscore +------------------------------ +1lee190 +2zhang2100 +------------------------------ +注释:只返回符合条件的table1和table2的列 + +4.等价(与下列执行效果相同) +A:select a.*,b.* from table1 a,table2 b where a.id=b.id +B:select * from table1 cross join table2 where table1.id=table2.id (注:cross join后加条件只能用where,不能用on) + +三、交叉连接(完全) + +1.概念:没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生3*3=9条记录) + +2.交叉连接:cross join (不带条件where...) + +3.sql语句 +select * from table1 cross join table2 +-------------结果------------- +idnameidscore +------------------------------ +1lee190 +2zhang190 +4wang190 +1lee2100 +2zhang2100 +4wang2100 +1lee370 +2zhang370 +4wang370 +------------------------------ +注释:返回3*3=9条记录,即笛卡尔积 + +4.等价(与下列执行效果相同) +A:select * from table1,table2 +``` + + + + + -- Gitee From dd8d4ce104f59bf2380b75dac7940b2e4abf45f0 Mon Sep 17 00:00:00 2001 From: Gui ze yu <2970307356@qq.com> Date: Tue, 28 Feb 2023 16:36:05 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...34\344\270\232\347\255\224\346\241\210.md" | 145 +++++++++--------- 1 file changed, 73 insertions(+), 72 deletions(-) rename "09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" => "09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" (81%) diff --git "a/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" "b/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" similarity index 81% rename from "09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" rename to "09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" index 7673772..74da7dd 100644 --- "a/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232.md" +++ "b/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" @@ -3,122 +3,123 @@ drop database users; create database users charset=utf8; use users; create table Student( -Sno varchar(20) not null primary key comment'学号', +Sno varchar(20) not null comment'学号', Sname varchar(20) not null comment'学生姓名', Ssex varchar(20) not null comment'学生性别', -Sbirthday datetime null comment'学生出生年月', -Class varchar(20) null comment'学生所在班级' +primary key(Sno), +Sbirthday datetime comment'学生出生年月', +Class varchar(20) comment'学生所在班级' ) comment'学生表'; create table Course( -Cno varchar(20) not null primary key comment'课程号', +Cno varchar(20) not null comment'课程号', Cname varchar(20) not null comment'课程名称', +primary key(Cno), Tno varchar(20) not null comment'教工编号' ) comment'课程表'; create table Score( Sno varchar(20) not null comment'学号', Cno varchar(20) not null comment'课程号', primary key(Sno,Cno), -Degree Decimal(4,1) null comment'成绩' +Degree Decimal(4,1) comment'成绩' ) comment'成绩表'; create table Teacher( -Tno varchar(20) not null primary key comment'教工编号', +Tno varchar(20) not null comment'教工编号', Tname varchar(20) not null comment'教工姓名', Tsex varchar(20) not null comment'教工性别', -Tbirthday datetime null comment'教工出生年月', -Prof varchar(20) null comment'职称', +Tbirthday datetime comment'教工出生年月', +Prof varchar(20) comment'职称', +primary key(Tno), Depart varchar(20) not null comment'教工所在部门' ) comment'教师表'; -alter table Course -add FOREIGN key(Tno) references Teacher(Tno); +alter table Course +add foreign key(Tno) references Teacher(Tno); insert into Student -(Sno,Sname,Ssex,Sbirthday,class) -values -(108,"曾华","男","1977-9-1",95033), -(105,"匡明","男","1975-10-2",95031), -(107,"王丽","女","1976-1-23",95033), -(101,"李军","男","1976-2-20",95033), -(109,"王芳","女","1975-2-10",95031), -(103,"陆君","男","1974-6-3",95031); -set foreign_key_checks = 0; +values +(108,'曾华','男','1977-9-1',95033), +(105,'匡明','男','1975-10-2',95031), +(107,'王丽','女','1976-1-23',95033), +(101,'李军','男','1976-2-20',95033), +(109,'王芳','女','1975-2-10',95031), +(103,'陆君','男','1974-6-3',95031); +set @@foreign_key_checks=0; insert into Course -(Cno,Cname,Tno) -values -(3-105,"计算机导论",825), -(3-245,"操作系统",804), -(6-166,"数字电路",856), -(9-888,"高等数学",831); +values +('3-105','计算机导论',825), +('3-245','操作系统',804), +('6-166','数字电路',856), +('9-888','高等数学',831); insert into Score -(Sno,Cno,Degree) -values -(103,3-245,86), -(105,3-245,75), -(109,3-245,68), -(103,3-105,92), -(105,3-105,88), -(109,3-105,76), -(101,3-105,64), -(107,3-105,91), -(108,3-105,78), -(101,6-166,85), -(107,6-166,79), -(108,6-166,81); -insert into Teacher values -(804,"李城","男","1958-12-2","副教授","计算机系"), -(856,"张旭","男","1969-3-12","讲师","电子工程系"), -(825,"王萍","女","1972-5-5","助教","计算机系"), -(831,"刘冰","女","1977-8-14","助教","电子工程系"); +(103,'3-245',86), +(105,'3-245',76), +(109,'3-245',68), +(103,'3-105',92), +(105,'3-105',88), +(109,'3-105',76), +(101,'3-105',64), +(107,'3-105',91), +(108,'3-105',78), +(101,'6-166',85), +(107,'6-166',79), +(108,'6-166',81); +insert into Teacher +values +(804,'李诚','男','1958-12-2','副教授','计算机系'), +(856,'张旭','男','1969-3-12','讲师','电子工程系'), +(825,'王萍','女','1972-5-5','助教','计算机系'), +(831,'刘冰','女','1977-8-14','助教','电子工程系'); +set @@foreign_key_checks=1; -- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ -select * from Student inner join Course; +select * from Student inner join Course; -- 2,查询没有学生的教师的所有信息 -select DISTINCT Sname,Tname from Student cross join Teacher WHERE Sname is null; -4 .查询 - ① 查询Score表中的最高分的学生学号和课程号。 - select min(Sno),Cno from Score; - ② 查询所有学生的Sname、Cno和Degree列。 - select Sname,Cno,Degree from Student inner join Score; +select Tname from Student inner join Teacher WHERE Sno <=> null; +4. 查询 +① 查询Score表中的最高分的学生学号和课程号。 +select Sno,Cno from Score where Degree =92; +② 查询所有学生的Sname、Cno和Degree列。 +select distinct Sname,Cno,Degree from Student cross join Score; ③ 查询所有学生的Sno、Cname和Degree列。 -select Student.Sno,Cname,Degree from Student inner join Course Cross join Score; - +select distinct Student.Sno,Cname,Degree from Student inner join Course cross join Score; ④ 查询所有学生的Sname、Cname和Degree列。 -select Sname,Cname,Degree from Student inner join Course cross join score; +select distinct Sname,Cname,Degree from Student inner join Course cross join Score; ⑤ 查询“95033”班学生的平均分。 +select AVG(Degree),Class from Student inner join Score where Class=95033; ⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 -select Cno,Degree from Score WHERE Cno <=> (3-105) or Degree >109; +select Degree from Score where Degree > 76; ⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 -select min(Degree) from Score; +select MIN(Degree) from Score; ⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 -select Student.Sno,Course.Cno from Student inner join Course cross join Score WHERE Course.Cno =3-105 or Student.Sno >109; +select * from Score where Degree >76; ⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 -select Sno,Sname,Sbirthday from Student where Sbirthday = 1977-9-1 xor Sno = 108; +select Sno,Sname,Sbirthday from Student where Sbirthday=1977; ⑩ 查询“张旭“教师任课的学生成绩。 -select Tname,Degree from Student inner join Score cross join Teacher where Tname ="张旭"; +select Degree from Teacher inner join Score where Tname='张旭'; 11 查询选修某课程的同学人数多于5人的教师姓名。 -select DISTINCT Tname from Student inner join Teacher cross join Course WHERE Sno>5 ; +select distinct Tname from Score inner join Teacher where Sno >5; 12 查询出“计算机系“教师所教课程的成绩表。 -select Tname,Cname,Degree,Depart from Teacher inner join Score cross join Course where Depart ="计算机系"; +select distinct Degree from Teacher inner join Score where Depart ='计算机系'; 13 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 -select Tname,Prof,Depart from Teacher WHERE Depart ='计算机系' or Depart ='电子工程系'; +select Tname,Prof from Teacher where Depart ='计算机系' or Depart ='电子工程系'; 14 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 -select Cno,Sno,Degree from Score WHERE Cno <=>(3-105) xor Cno > (3-245) ORDER BY Degree DESC; +select Cno,Sno,Degree from Score where Cno ='3-105' xor Degree > Cno ='3-245' xor Degree order by Degree desc ; 15 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. -select Cno,Sno,Degree from Score WHERE Cno =(3-105) xor Cno >(3-245); +select Cno,Sno,Degree from Score where Cno ='3-105' xor Degree > Cno ='3-245' xor Degree; 16 查询成绩比该课程平均成绩低的同学的成绩表。 -select *from Student Score inner join Course ; +select Degree from Score group by Degree having AVG(Degree); 17 查询所有任课教师的Tname和Depart. -select Tname,Depart from Teacher ; +select Tname,Depart from Teacher; 18 查询所有未讲课的教师的Tname和Depart. -select Tname,Depart from Teacher inner join Course WHERE not Cname; +select Tname,Depart from Teacher inner join Course where Cname is null; 19 查询“男”教师及其所上的课程。 -select Tname,Cname,Tsex from Teacher inner join Course WHERE Tsex ='男'; +select Tname,Tsex,Cname from Teacher inner join Course where Tsex ='男'; 20 查询最高分同学的Sno、Cno和Degree列。 -select Student.Sno,Cno,Degree from Score inner join Student ; +select Sno,Cno,Degree from Score where Degree =92; 21 查询和“李军”同性别的所有同学的Sname. -select Sname ,Ssex from Student WHERE Ssex ='男'; +select Sname from Student where Ssex ='男' and Sname != '李军'; 22 查询和“李军”同性别并同班的同学Sname. -select Sname ,Ssex,class from Student WHERE Ssex ='男' and class =95033; +select Sname from Student where Ssex ='男' and Sname != '李军' and Class ='95033'; 23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 -select Cname,Ssex,Degree from Course inner join Score cross join Student HAVING Cname='计算机导论' and Ssex='男'; +select Degree from Course inner join Score cross join Student where Cname ='计算机导论' and Ssex ='男'; ``` 笔记 -- Gitee From f9107a5e4a44d62aa73e27e8ed835ecd492f542b Mon Sep 17 00:00:00 2001 From: Gui ze yu <2970307356@qq.com> Date: Tue, 28 Feb 2023 21:17:02 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\344\275\234\344\270\232\347\255\224\346\241\210.md" | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git "a/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" "b/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" index 74da7dd..e998148 100644 --- "a/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" +++ "b/09 \346\241\202\346\263\275\347\205\234/\344\275\234\344\270\232\347\255\224\346\241\210.md" @@ -76,6 +76,7 @@ select Tname from Student inner join Teacher WHERE Sno <=> null; 4. 查询 ① 查询Score表中的最高分的学生学号和课程号。 select Sno,Cno from Score where Degree =92; +select Sno,Cno from Score WHERE Degree <=> (Select MAX(Degree) from Score); ② 查询所有学生的Sname、Cno和Degree列。 select distinct Sname,Cno,Degree from Student cross join Score; ③ 查询所有学生的Sno、Cname和Degree列。 @@ -105,7 +106,7 @@ select Cno,Sno,Degree from Score where Cno ='3-105' xor Degree > Cno ='3-245' x 15 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. select Cno,Sno,Degree from Score where Cno ='3-105' xor Degree > Cno ='3-245' xor Degree; 16 查询成绩比该课程平均成绩低的同学的成绩表。 -select Degree from Score group by Degree having AVG(Degree); +select Degree from Score where Degree <(select AVG(Degree) from Score); 17 查询所有任课教师的Tname和Depart. select Tname,Depart from Teacher; 18 查询所有未讲课的教师的Tname和Depart. @@ -114,6 +115,7 @@ select Tname,Depart from Teacher inner join Course where Cname is null; select Tname,Tsex,Cname from Teacher inner join Course where Tsex ='男'; 20 查询最高分同学的Sno、Cno和Degree列。 select Sno,Cno,Degree from Score where Degree =92; +select Sno,Cno,Degree from Score where Degree = (select MAX(Degree) from Score); 21 查询和“李军”同性别的所有同学的Sname. select Sname from Student where Ssex ='男' and Sname != '李军'; 22 查询和“李军”同性别并同班的同学Sname. -- Gitee