创建库表与多表查询

创建库表与多表查询_第1张图片

创建mydb11_stu并使用

mysql> create database mydb11_stu;
Query OK, 1 row affected (0.00 sec)

mysql> use mydb11_stu;
Database changed

创建student表 

mysql> create table student(id int(10) not NuLL unique primary key, name varchar(20) not NULL,sex varchar(4),birth year, department varchar(20), address varchar(50));
Query OK, 0 rows affected, 1 warning (0.02 sec)
 

创建score表 

mysql> CREATE TABLE score (                                                                                                                                 
    ->     id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,                                                                                           
    ->     stu_id INT(10) NOT NULL,                                                                                                                         
    ->     cname VARCHAR(20),                                                                                                                           
    ->     grade INT(10)                                                                                                                                   
    -> );                                                                                                                                                   
Query OK, 0 rows affected, 3 warnings (0.02 sec)  

向student表添加数据

mysql> insert into student values (901, '张三丰', '男', 2002, '计算机系', ' 北京市海淀区');
Query OK, 1 row affected (0.03 sec)

mysql> insert into student values (902, '周全有', '男', 2000, '中文系', ' 北京市昌平区');
Query OK, 1 row affected (0.01 sec)

mysql> insert into student values (903,'张思维','女',2003,'中文系','湖南省  永州市');
Query OK, 1 row affected (0.01 sec)

mysql> insert into student values (904, '李广昌', '男', 1999, '英语系', '辽 宁省皋新市');                                                               
Query OK, 1 row affected (0.03 sec)                                         
                                                                            
mysql> insert into student values (905, '王翰', '男', 2004, '英语系', '福建 省厦门市');                                                                 
Query OK, 1 row affected (0.01 sec)                                                                                                              
mysql> insert into student values (906, '王心凌', '女', 1998, '计算机系', ' 湖南省衡阳市');
Query OK, 1 row affected (0.01 sec)               

向score表添加数据

mysql> insert into score values (NULL, 901, '计算机', 98);                  
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 901, '英语', 80);                    
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 902, '计算机', 65);                  
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 902, '中文', 88);                    
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 903, '中文', 95);                    
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 904, '计算机', 70);                  
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 904, '英语', 92);                    
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 905, '英语', 94);                    
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 906, '英语', 83);                    
Query OK, 1 row affected (0.00 sec)                                         
                                                                            
mysql> insert into score values (NULL, 906, '计算机', 49);                  
Query OK, 1 row affected (0.01 sec)  
 

查询 

1. 分别查询student表和score表的所有记录

mysql> select * from score;                                                 
+----+--------+--------+-------+                                            
| id | stu_id | cname  | grade |                                            
+----+--------+--------+-------+                                            
|  1 |    901 | 计算机 |    98 |                                            
|  2 |    901 | 英语   |    80 |                                            
|  3 |    902 | 计算机 |    65 |                                            
|  4 |    902 | 中文   |    88 |                                            
|  5 |    903 | 中文   |    95 |                                            
|  6 |    904 | 计算机 |    70 |                                            
|  7 |    904 | 英语   |    92 |                                            
|  8 |    905 | 英语   |    94 |                                            
|  9 |    906 | 英语   |    83 |                                            
| 10 |    906 | 计算机 |    49 |                                            
+----+--------+--------+-------+                                            
10 rows in set (0.00 sec)
 

mysql> select * from student;
+-----+--------+------+-------+------------+---------------+
| id  | name   | sex  | birth | department | address       |
+-----+--------+------+-------+------------+---------------+
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区  |
| 902 | 周全有 | 男   |  2000 | 中文系     |  北京市昌平区 |
| 903 | 张思维 | 女   |  2003 | 中文系     | 湖南省 永州市 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市  |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市  |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市  |
+-----+--------+------+-------+------------+---------------+
6 rows in set (0.00 sec)
 

2. 查询student表的第2条到5条记录

 mysql> # 2. 查询student表的第2条到5条记录
mysql> select * from student limit 4 offset 1;
+-----+--------+------+-------+------------+---------------+
| id  | name   | sex  | birth | department | address       |
+-----+--------+------+-------+------------+---------------+
| 902 | 周全有 | 男   |  2000 | 中文系     |  北京市昌平区 |
| 903 | 张思维 | 女   |  2003 | 中文系     | 湖南省 永州市 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市  |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市  |
+-----+--------+------+-------+------------+---------------+
4 rows in set (0.00 sec)

3. 从student表中查询计算机系和英语系的学生的信息 

 mysql> # 3. 从student表中查询计算机系和英语系的学生的信息
mysql> select * from student
   -> where department IN ('计算机系', '英语系');
+-----+--------+------+-------+------------+--------------+
| id  | name   | sex  | birth | department | address      |
+-----+--------+------+-------+------------+--------------+
| 901 | 张三丰 | 男   |  2002 | 计算机系   | 北京市海淀区 |
| 904 | 李广昌 | 男   |  1999 | 英语系     | 辽宁省皋新市 |
| 905 | 王翰   | 男   |  2004 | 英语系     | 福建省厦门市 |
| 906 | 王心凌 | 女   |  1998 | 计算机系   | 湖南省衡阳市 |
+-----+--------+------+-------+------------+--------------+
4 rows in set (0.00 sec)
 

4. 从student表中查询年龄小于22岁的学生信息 

mysql> select * from student where birth > 2003;
+-----+------+------+-------+------------+--------------+
| id  | name | sex  | birth | department | address      |
+-----+------+------+-------+------------+--------------+
| 905 | 王翰 | 男   |  2004 | 英语系     | 福建省厦门市 |
+-----+------+------+-------+------------+--------------+
1 row in set (0.00 sec)
 

5. 从student表中查询每个院系有多少人 

mysql> # 从student表中查询每个院系有多少人                                                                                                                  
mysql> select department,count(*) as student_count from student group by dep                                                                                
artment;                                                                                                                                     
+------------+---------------+                                                                                                           
| department | student_count |                                                                                                  
+------------+---------------+                                                                                                           
| 计算机系   |             2 |                                                                                                             
| 中文系     |             2 |                                                                                                              
| 英语系     |             2 |                                                                                                             +------------+---------------+                                                                                                                              
3 rows in set (0.00 sec) 

6. 从score表中查询每个科目的最高分 

mysql> # 从score表中查询每个科目的最高分                                    
mysql> select cname,max(grade) as max_grade from score group by cname;      
+--------+-----------+                                                      
| cname  | max_grade |                                                      
+--------+-----------+                                                      
| 计算机 |        98 |                                                      
| 英语   |        94 |                                                      
| 中文   |        95 |                                                      
+--------+-----------+                                                      
3 rows in set (0.00 sec)      
 

7. 查询李广昌的考试科目(cname)和考试成绩(grade)

mysql> select s.name,sc.cname,sc.grade                                      
    -> from student s                                                       
    -> join score sc on s.id=sc.stu_id                                      
    -> where s.name='李广昌';                                               
+--------+--------+-------+                                                 
| name   | cname  | grade |                                                 
+--------+--------+-------+                                                 
| 李广昌 | 计算机 |    70 |                                                 
| 李广昌 | 英语   |    92 |                                                 
+--------+--------+-------+                                                 
2 rows in set (0.00 sec)  

 8. 用连接的方式查询所有学生的信息和考试信息

mysql> select s.*, sc.*                                                     
   -> from student s                                                       
   -> join score sc on s.id = sc.stu_id;   
 

9. 计算每个学生的总成绩 

mysql> select s.id, s.name, sum(sc.grade) as total_grade
   -> from student s
   -> join score sc on s.id = sc.stu_id
   -> group by s.id, s.name;
 

10. 计算每个考试科目的平均成绩 

mysql> select cname,avg(grade) as average_grade
   -> from score
   -> group by cname;
 

11. 查询计算机成绩低于95的学生信息 

mysql> select s.*
   -> from student s
   -> join score sc on s.id=sc.stu_id
   -> where sc.cname='计算机' and sc.grade<95;
 

12. 将计算机考试成绩按从高到低进行排序 

mysql> select s.*, sc.grade
   -> from student s
   -> join score sc on s.id=sc.stu_id
   -> where sc.cname='计算机'
   -> order by sc.grade desc;
 

13. 从student表和score表中查询出学生的学号,然后合并查询结果 

mysql> select id as student_id from student                                 
   -> union                                                                
   -> select stu_id from score;  
 

14. 查询姓张或者姓王的同学的姓名、院系和考试科目及成绩 

mysql> select s.name,s.department,sc.cname,sc.grade                         
   -> from student s                                                       
   -> join score sc on s.id = sc.stu_id                                    
   -> where s.name like '张%' or s.name like '王%'; 
 

15. 查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩 

mysql> select s.name,s.birth,s.department,sc.cname,sc.grade                 
    -> from student s                                                       
    -> join score sc on s.id=sc.stu_id                                      
    -> where s.address like'%湖南%'; 
 

 

你可能感兴趣的:(数据库,mysql,sql)