mysql表查询实例
mysql 逻辑运算例题

下面是一些 MySQL 逻辑运算的例子:1. 使用 AND 运算符查找满足两个条件的数据:```SELECT * FROM table_name WHERE condition1 AND condition2;```2. 使用 OR 运算符查找满足任何一个条件的数据:```SELECT * FROM table_name WHERE condition1 OR condition2; ```3. 使用 NOT 运算符查找不满足条件的数据:```SELECT * FROM table_name WHERE NOT condition;```4. 使用 IN 运算符查找满足多个值中任意一个的数据:```SELECT * FROM table_name WHERE column_name IN (value1, value2, value3);```5. 使用 BETWEEN 运算符查找在指定范围内的数据:```SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;```6. 使用 LIKE 运算符查找匹配特定模式的数据:```SELECT * FROM table_name WHERE column_name LIKE pattern; ```7. 使用 IS NULL 运算符查找空值的数据:```SELECT * FROM table_name WHERE column_name IS NULL;```8. 使用 EXISTS 运算符查找满足子查询条件的数据:```SELECT * FROM table_name WHERE EXISTS (subquery);```这些是一些常见的 MySQL 逻辑运算的例子,可以根据具体需求进行调整和组合使用。
MySQL数据库表的数据插入、修改、删除、查询操作及实例应用

MySQL数据库表的数据插⼊、修改、删除、查询操作及实例应⽤⼀、MySQL数据库表的数据插⼊、修改、删除和查询1CREATE DATABASE db0504;23USE db0504;45CREATE TABLE student (6 sno VARCHAR (10) NOT NULL UNIQUE PRIMARY KEY,7 sname VARCHAR (20) NOT NULL,8 ssex enum ('男', '⼥') NOT NULL DEFAULT'男',9 sbirth date,10 sclass VARCHAR (10),11 zno CHAR (4)12 ) DEFAULT charset = gb2312;13 #添加操作14INSERT INTO student15VALUES('2012010713','丁暖','⼥','1993-9-9','物联⽹12-1','z002');1617INSERT INTO student (sno,sname,ssex,sbirth,sclass,zno)18VALUES('2011010503','孔超','男','1993-9-19','⾃动化11-1','z006');1920INSERT INTO student (sno, sname, ssex, zno)21VALUES('2011010521','韩梅','⼥','z006');2223INSERT INTO student (sname, zno, sno)24VALUES('韩梅2','z006','2011010522');2526INSERT INTO student VALUES27 ('2011010501','孔超1','男','1993-9-19','⾃动化11-1','z006');28 ('2011010505','孔超2','男','1993-9-19','⾃动化11-1','z006');29 ('2011010504','孔超3','男','1993-9-19','⾃动化11-1','z006');30 ('2011010505','孔超4','男','1993-9-19','⾃动化11-1','z006');31 #修改操作32UPDATE student33SET sname ='张三',sbirth ='1993-6-19'34WHERE sname ='丁暖';3536UPDATE student SET zno =LEFT (zno, 3);37 #删除操作38delete from student39where sname='张三';4042 #查询操作43SELECT*FROM student;#查询student表的所有记录44SELECT sno,sname,ssex,sbirth FROM student;#查询部分字段信息45SELECT*FROM student WHERE age BETWEEN25AND30;4647 #清空表操作48truncate student;#⾼效49delete from student;操作SQL语法格式:插⼊:insert修改:update删除:delete查询:select⼆、设计型实验三1.创建表1CREATE DATABASE homework;23USE homework;45CREATE TABLE student (6 Num INT (10) NOT NULL UNIQUE PRIMARY KEY,7 name VARCHAR(20) NOT NULL,8 Sex VARCHAR(4) NOT NULL,9 birthday DATETIME,10 bumen VARCHAR(20) NOT NULL,11 address VARCHAR(50)12 ) DEFAULT charset = gb2312;1314CREATE TABLE score (15 Id INT(10) NOT NULL UNIQUE PRIMARY KEY,16 C_name VARCHAR(20),17 Stu_id INT(10) NOT NULL,18 grade INT(10),19CONSTRAINT score_fk FOREIGN KEY(Stu_id) REFERENCES student(Num)20 ) DEFAULT charset = gb2312;2122INSERT INTO student VALUES23 ('901','张军','男','1985-1-1','计算机系','北京市海淀区'),24 ('902','张超','男','1986-2-2','中⽂系','北京市昌平区'),25 ('903','张美','⼥','1990-2-1','中⽂系','湖南省永州市'),26 ('904','李五⼀','男','1990-2-3','英语系','辽宁省⾩新市'),27 ('905','王芳','⼥','1991-4-6','英语系','福建省厦门市'),28 ('906','王桂','男','1988-6-7','计算机系','湖南省衡阳市');2930INSERT INTO score VALUES31 (1001,'计算机','901','98'),32 (1002,'英语','901','80'),33 (1003,'计算机','902','65'),34 (1004,'中⽂','902','88'),35 (1005,'中⽂','903','95'),36 (1006,'计算机','904','70'),37 (1007,'英语','904','92'),38 (1008,'英语','905','92'),39 (1009,'计算机','906','90'),40 (1010,'英语','906','85');2.查询student表的操作#查询student表的所有记录SELECT*FROM student;SELECT Num,name,Sex,birthday,bumen,address FROM student;#查询student表的第2条到第4条记录SELECT Num,name,Sex,birthday,bumen,address FROM student LIMIT 1,3;#从student表中查询所有学⽣的学号、姓名和院系的信息SELECT Num,name,bumen FROM student;#查询计算机系和英语系学⽣的信息SELECT*FROM student WHERE bumen IN('计算机系','英语系');SELECT*FROM student WHERE bumen='计算机系'OR bumen='英语系';#从student表中查询年龄为18-22岁学⽣的信息ALTER TABLE student ADD age INT(4);ALTER TABLE student MODIFY age INT(4) AFTER Sex;UPDATE student SET age=24WHERE Num=901;UPDATE student SET age=23WHERE Num=902;UPDATE student SET age=19WHERE Num=903;UPDATE student SET age=19WHERE Num=904;UPDATE student SET age=18WHERE Num=905;UPDATE student SET age=21WHERE Num=906;SELECT*FROM student WHERE age BETWEEN18AND22;SELECT*FROM student WHERE age>=18AND age<=22;#从student表中查询每个院系有多少⼈,为统计的⼈数列取别名sum_of_bumenSELECT bumen,COUNT(bumen) AS sum_of_bumen FROM student GROUP BY bumen;3.两表综合查询#从score表中查询每个科⽬的最⾼分SELECT C_name,MAX(grade) FROM score GROUP BY C_name;#查询李五⼀的考试科⽬(C_name)和考试成绩(grade)select C_name,grade from student left join score on student.Num=score.Stu_id where name='李五⼀';#⽤连接查询的⽅式查询所有学⽣的信息和考试信息select*from student left join score on student.Num=score.Stu_id;#计算每个学⽣的总成绩(需显⽰学⽣姓名)select name '姓名',SUM(grade) '总成绩'from student left join score on student.Num=score.Stu_id group by name;#计算每个考试科⽬的平均成绩select C_name '考试科⽬',AVG(grade) '平均成绩'from student left join score on student.Num=score.Stu_id group by C_name; #查询计算机成绩低于95分的学⽣信息select*from student left join score on student.Num=score.Stu_id where grade<95AND C_name='计算机';#将计算机成绩按从⾼到低排序select grade '计算机成绩'from score where C_name='计算机'order by grade desc;#asc升序,desc降序#从student表和score表中查询学⽣的学号,然后合并查询结果select Num '学号'from student union select Stu_id from score;#查询姓张或者姓王的同学的姓名、院系、考试科⽬和成绩select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'张%'union select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'王%';#查询都是湖南的学⽣的姓名、年龄、院系、考试科⽬和成绩select name,age,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where address like'湖南%';这个查询同时参加计算机和英语考试的学⽣信息难了我好久,下⾯提供三种做法:#查询同时参加计算机和英语考试的学⽣的信息做法⼀select*from student where Num in (select Stu_id from score where C_name ='计算机'and Stu_id in(select Stu_id from score where C_name ='英语'));#查询同时参加计算机和英语考试的学⽣的信息做法⼆SELECT a.*FROM student a,score b,score c WHERE a.Num=b.Stu_id AND b.C_name='计算机'AND a.Num=c.Stu_id AND c.C_name='英语';#查询同时参加计算机和英语考试的学⽣的信息做法三SELECT*FROM student WHERE Num =ANY( SELECT Stu_id FROM score WHERE Stu_id IN (SELECT Stu_id FROM score WHERE C_name='计算机') AND C_name='英语');。
mysql增删改查实例

mysql增删改查实例一、概述MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的开发中。
MySQL支持多种操作系统,包括Windows、Linux 和Mac OS等。
本文将介绍MySQL的增删改查操作实例。
二、连接数据库在进行任何操作之前,需要先连接到MySQL数据库。
可以使用以下代码连接到MySQL:```pythonimport mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase")mycursor = mydb.cursor()```其中,host为数据库所在主机的IP地址或域名;user为访问数据库所需的用户名;password为访问数据库所需的密码;database为要连接到的数据库名称。
三、插入数据插入数据是指向MySQL数据库中添加新记录。
可以使用以下代码向表中插入新数据:```pythonsql = "INSERT INTO customers (name, address) VALUES(%s, %s)"val = ("John", "Highway 21")mycursor.execute(sql, val)mit()print(mycursor.rowcount, "record inserted.")```其中,customers为表名;name和address为字段名;%s表示占位符,后面需要使用val变量中的值替换占位符;val为一个元组,包含了要插入的数据。
四、查询数据查询数据是指从MySQL数据库中检索记录。
MYSQL实现排名及查询指定用户排名功能(并列排名功能)实例代码

MYSQL实现排名及查询指定⽤户排名功能(并列排名功能)实例代码前⾔本⽂主要介绍了关于MYSQL实现排名及查询指定⽤户排名功能(并列排名功能)的相关内容,分享出来供⼤家参考学习,下⾯话不多说了,来⼀起看看详细的介绍吧表结构:CREATE TABLE test.testsort (id int(11) NOT NULL AUTO_INCREMENT,uid int(11) DEFAULT 0 COMMENT '⽤户id',score decimal(10, 2) DEFAULT 0.00 COMMENT '分数',PRIMARY KEY (id))ENGINE = INNODBAUTO_INCREMENT = 1CHARACTER SET utf8COLLATE utf8_general_ciCOMMENT = '测试排序'ROW_FORMAT = DYNAMIC;思路:可以先排序,再对结果进⾏编号;也可以先查询结果,再排序编号。
说明:@rownum := @rownum + 1 中 := 是赋值的作⽤,这句话的意思是先执⾏@rownum + 1,然后把值赋给@rownum;(SELECT @rownum := 0) r 这句话的意思是设置rownum字段的初始值为0,即编号从1开始。
实现排名:⽅法⼀:SELECT t.*, @rownum := @rownum + 1 AS rownumFROM (SELECT @rownum := 0) r, (SELECT * FROM testsort ORDER BY score DESC) AS t;⽅法⼆:SELECT t.*, @rownum := @rownum + 1 AS rownumFROM (SELECT @rownum := 0) r, testsort AS tORDER BY t.score DESC;结果:查看指定⽤户排名:⽅法⼀:SELECT b.* FROM(SELECT t.*, @rownum := @rownum + 1 AS rownumFROM (SELECT @rownum := 0) r,(SELECT * FROM testsort ORDER BY score DESC) AS t ) AS b WHERE b.uid = 222;⽅法⼆:SELECT b.* from(SELECT t.*, @rownum := @rownum + 1 AS rownum FROM (SELECT @rownum := 0) r, testsort AS t ORDER BY t.score DESC) as b where b.uid = 222;结果:实现并列排名(相同分数排名相同):SELECTobj.uid,obj.score,CASEWHEN @rowtotal = obj.score THEN@rownumWHEN @rowtotal := obj.score THEN@rownum :=@rownum + 1WHEN @rowtotal = 0 THEN@rownum :=@rownum + 1END AS rownumFROM(SELECTuid,scoreFROMtestsortORDER BYscore DESC) AS obj,(SELECT @rownum := 0 ,@rowtotal := NULL) r查询指定⽤户并列排名:SELECT total.* FROM(SELECTobj.uid,obj.score,CASEWHEN @rowtotal = obj.score THEN@rownumWHEN @rowtotal := obj.score THEN@rownum :=@rownum + 1WHEN @rowtotal = 0 THEN@rownum :=@rownum + 1END AS rownumFROM(SELECTuid,scoreFROMtestsortORDER BYscore DESC) AS obj,(SELECT @rownum := 0 ,@rowtotal := NULL) r) AS total WHERE total.uid = 222;总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
MySQL查询当天、本周,本月、上一个月的数据

MySQL查询当天、本周,本⽉、上⼀个⽉的数据mysql查询当天的所有信息:SELECT *FROM 表名WHERE year(时间字段名)=year(now()) and month(时间字段名) = month(now()) and day(时间字段名) = day(now());这个有⼀些繁琐,还有简单的写法:SELECT *FROM表名WHERE date(时间字段名) = curdate();另⼀种写法没测试过查询当天的记录SELECT *FROM 表名WHERE TO_DAYS(时间字段名) = TO_DAYS(NOW());date()函数获取⽇期部分, 扔掉时间部分,然后与当前⽇期⽐较即可补充:本周、上周、本⽉、上个⽉份的数据查询当前这周的数据SELECT * FROM表名WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now());查询上周的数据SELECT * FROM表名WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now())-1;查询当前⽉份的数据SELECT * FROM 表名WHERE date_format(时间字段名,'%Y-%m') = date_format(now(),'%Y-%m')查询距离当前现在6个⽉的数据SELECT * FROM表名WHERE 时间字段名between date_sub(now(),interval 6month) and now();查询上个⽉的数据SELECT * FROM表名WHERE date_format(时间字段名,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1MONTH), '%Y-%m');SELECT *FROM表名WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ;SELECT *FROM表名WHERE WEEKOFYEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) = WEEKOFYEAR(now());SELECT *FROM表名WHERE MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) =MONTH(now());SELECT *FROM表名WHERE YEAR(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) =YEAR(now()) and MONTH(FROM_UNIXTIME(时间字段名,'%y-%m-%d')) =MONTH(now()); SELECT *FROM表名WHERE 时间字段名between上⽉最后⼀天and下⽉第⼀天;mysql查询多少秒内的数据SELECT count( * ) AS c, sum( if( logusertype = 2, logusertype, 0 ) ) / 2AS a, sum( if( logusertype = 3, logusertype, 0 ) ) /3AS bFROM testlog WHERE UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP( logendtime )<=30查询30秒内记录的总数,loguser等于2的记录的总数和,和 loguser等于3的记录的总数.if( logusertype = 2, logusertype, 0 ) 如果logusetype等于2 就在logusertype上累加,否则加0。
最全MySQL数据库表的查询操作

最全MySQL数据库表的查询操作 序⾔ 1、 2、 本节⽐较重要,对数据表数据进⾏查询操作,其中可能⼤家不熟悉的就对于INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)等⼀些复杂查询。
通过本节的学习,可以让你知道这些基本的复杂查询是怎么实现的,但是建议还是需要多动⼿去敲,虽然理解了什么是内连接等,但是从理解到学会,是完全不⼀样的感觉。
--WZY⼀、单表查询 1.1、查询所有字段 1.2、查询指定字段 1.3、查询指定记录 1.4、带IN关键字的查询 1.5、带BETWEEN AND 的范围查询 1.6、带LIKE的字符匹配查询 1.7、查询空值 1.8、带AND的多条件查询 1.9、带OR的多条件查询 1.10、关键字DISTINCT(查询结果不重复) 1.11、对查询结果排序 1.12、分组查询(GROUP BY) 1.13、使⽤LIMIT限制查询结果的数量 集合函数查询 1.14、COUNT()函数 1.15、SUM()函数 1.16、AVG()函数 1.17、MAX()函数 1.18、MIN()函数 ⼆、多表查询 ⼩知识 为表取别名 为字段取别名 基于两张表 2.1、普通双表连接查询 2.2、内连接查询 2.3、外连接查询 2.3.1、左外连接查询 2.3.2、右外连接查询 2.4、复合条件连接查询 ⼦查询 2.5、带ANY、SOME关键字的⼦查询 2.6、带ALL关键字的⼦查询 2.7、带EXISTS关键字的⼦查询 2.8、带IN关键字的⼦查询 2.9、带⽐较运算符的⼦查询 合并结果查询 2.10、UNION[ALL]的使⽤三、使⽤正则表达式查询 3.1、查询以特定字符或字符串开头的记录 3.2、查询以特定字符或字符串结尾的记录 3.3、⽤符号"."来替代字符串中的任意⼀个字符 3.4、使⽤"*"和"+"来匹配多个字符 3.5、匹配指定字符串 3.6、匹配指定字符中的任意⼀个 3.7、匹配指定字符以外的字符 3.8、使⽤{n,}或者{n,m}来指定字符串连续出现的次数四、综合案例练习数据表查询操作 4.1、搭建环境 省略 4.2、查询操作 省略 4.3、在已经创建好的employee表中进⾏如下操作 4.3.1、计算所有⼥员⼯(F)的年龄 4.3.2、使⽤LIMIT查询从第3条记录开始到第六条记录 4.3.3、查询销售⼈员(SALSEMAN)的最低⼯资 4.3.4、查询名字以字母N或者S结尾的记录 4.3.5、查询在BeiJing⼯作的员⼯的姓名和职务 4.3.6、使⽤左连接⽅式查询employee和dept表 4.3.7、查询所有2001~2005年⼊职的员⼯的信息,查询部门编号为20和30的员⼯信息并使⽤UNION合并两个查询结果 4.3.8、使⽤LIKE查询员⼯姓名中包含字母a的记录 4.3.9、使⽤REGEXP查询员⼯姓名中包含T、C或者M 3个字母中任意1个的记录 想直接做题的,跳过讲解,直接到练习区。
mysql数据表案例

mysql数据表案例MySQL数据表是MySQL数据库中的一个重要组成部分,用于存储和组织数据。
下面列举了一些常见的MySQL数据表案例,以帮助读者更好地理解和应用MySQL数据库。
1. 学生信息表(Student)学生信息表用于存储学生的基本信息,包括学生ID、姓名、性别、年龄、班级等字段。
通过该表可以方便地查询和管理学生的信息。
2. 课程信息表(Course)课程信息表用于存储学校开设的课程信息,包括课程ID、课程名称、学分、教师ID等字段。
该表可以帮助学校管理课程的开设情况和教师的分配情况。
3. 教师信息表(Teacher)教师信息表用于存储教师的基本信息,包括教师ID、姓名、性别、年龄、职称等字段。
通过该表可以方便地查询和管理教师的信息。
4. 学生成绩表(Score)学生成绩表用于存储学生的各科成绩信息,包括学生ID、课程ID、成绩等字段。
该表可以方便地查询和分析学生的成绩情况。
5. 图书信息表(Book)图书信息表用于存储图书的基本信息,包括图书ID、书名、作者、出版社等字段。
通过该表可以方便地查询和管理图书的信息。
6. 借阅记录表(Borrow)借阅记录表用于存储图书的借阅情况,包括借阅ID、学生ID、图书ID、借阅日期、归还日期等字段。
该表可以帮助图书馆管理图书的借阅和归还情况。
7. 订单信息表(Order)订单信息表用于存储用户的订单信息,包括订单ID、用户ID、商品ID、数量、总金额等字段。
该表可以方便地查询和管理用户的订单信息。
8. 商品信息表(Product)商品信息表用于存储商家的商品信息,包括商品ID、商品名称、价格、库存等字段。
通过该表可以方便地查询和管理商品的信息。
9. 客户信息表(Customer)客户信息表用于存储客户的基本信息,包括客户ID、姓名、性别、年龄、联系方式等字段。
通过该表可以方便地查询和管理客户的信息。
10. 供应商信息表(Supplier)供应商信息表用于存储供应商的基本信息,包括供应商ID、公司名称、联系人、联系方式等字段。
mysql多表联合查询sql语句

mysql多表联合查询sql语句当我们需要从多个表中检索数据时,可以使用MySQL的多表联合查询语句。
多表联合查询可以通过使用JOIN子句将多个表连接起来,从而实现在一个查询中检索来自不同表的数据。
以下是一些常见的多表联合查询的SQL语句示例:1. 内连接(INNER JOIN):sql.SELECT.FROM table1。
INNER JOIN table2 ON table1.column_name =table2.column_name;2. 左外连接(LEFT JOIN):sql.SELECT.FROM table1。
LEFT JOIN table2 ON table1.column_name =table2.column_name;3. 右外连接(RIGHT JOIN):sql.SELECT.FROM table1。
RIGHT JOIN table2 ON table1.column_name =table2.column_name;4. 全外连接(FULL JOIN),MySQL不支持全外连接,但可以通过UNION操作符来模拟全外连接的效果。
5. 自连接(Self Join):sql.SELECT e1.employee_id, e1.employee_name,e2.employee_name AS manager.FROM employee e1。
LEFT JOIN employee e2 ON e1.manager_id = e2.employee_id;这些是一些常见的多表联合查询的SQL语句示例,通过这些语句可以实现从多个表中检索数据的目的。
在实际应用中,我们可以根据具体的业务需求和数据关系来选择合适的联合查询方式,以实现我们想要的数据检索和分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
唯一 是 否 否 否
自增 是 否 否 否
Student 表的记录
Id
Name
Sex
Birth
Department Address
901
张老大
男
1989
计算机系 北京市海淀区
902
张老二
男
1990
中文系 北京市昌平区
903
张三
女
1994
中文系 湖南省永州市
904
李四
男
1994
英语系 辽宁省阜新市
905
1 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) );
14 SELECT * FROM student WHERE id IN (SELECT stu_id FROM score WHERE c_name=’计算机’ AND grade<95);
15 SELECT * FROM student WHERE id=ANY (SELECT stu_id FROM score WHERE stu_id IN (SELECT stu_id FROM score WHERE c_name=’计算机’ ) AND c_name=’英语’);
CREATE TABLE score ( id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, stu_id INT(10) NOT NULL, c_name VARCHAR(20), grade INT(10)
); 2 INSERT INTO student VALUES (901,’张老大’,’男’,1989,’计算机系’,’北京市海淀区’);
19 SELECT student.id,name,sex,birth,department,address,c_name,grade FROM student,score WHERE address LIKE ‘湖南%’ AND student.id=score.stu_id;
9 SELECT c_name,MAX(grade) FROM score GROUP BY c_name;
10 SELECT c_name,grade FROM score WHERE stu_id= (SELECT id FROM student WHERE name=’李四’);
11 SELECT student.id,name.sex,birth,department,address,c_name,grade FROM student,score WHERE student.id=score.stu_id;
16 SELECT stu_id,grade FROM score WHERE c_name=’计算机’ ORDER BY grade DESC;
17 SELECT id FROM student UNION SELECT stu_id FROM score;
18 SELECT student.id,name,sex,birth,department,address,c_name,grade FROM student,score WHERE (name LIKE ‘张%’ OR name LIKE ‘王%’) AND student.id=score.stu_id;
否
非空 是 是 否 否 是 否
唯一 是 否 否 否 否 否
自增 否 否 否 否 否 否
字段名 Id
Stu_id C_name Grade
字段描述 编号 学号
课程名 分数
Score 表的定义
数据类型 主键 外键
Int(10)
是
否
Int(10)
否
否
Varchar(20) 否
否
Int(10)
否
否
非空 是 是 否 否
INSERT INTO student VALUES (902,’张老二’,’男’,1990,’中文系’,’北京市昌平区’); INSERT INTO student VALUES (903,’张三’,女’,1994,’中文系’,’湖南省永州市’); INSERT INTO student VALUES (904,’李四’,’男’,1994,’英语系’,’辽宁省阜新市’); INSERT INTO student VALUES (905,’王五’,’女’,1995,’英语系’,’福建省厦门市’); INSERT INTO student VALUES (906,’王六’,’男’,1988,’计算机系’,’湖南省衡阳市’);
王五
女
1995
英语系 福建省厦门市
906
王六
男
1992
计算机系 湖南省衡阳市
Score 表的记录
Id
Stu_id
C_name
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
计算机
90
10
906
英语
在 student 表和 score 表上进行查询。
Student 表的定义
字段名 字段描述 数据类型 主键 外键
Id
学号
Int(10)
是
否
Name
姓名
Varchar(20) 否
否
Sex
性别
Varchar(4) 否
否
Birth
出生年份
Year
否
否
Department
院系
Varchar(20) 否
否
Address 家庭住址 Varchar(50) 否
12 SELECT student.id,name,SUM(grade) FROM student,score WHERE student.id=score.stu_id GROUP BY student.id;
13 SELECT c_name,AVG(grade) FROM score GROUP BY c_name;
3 SELECT * FROM student;
4 SELECT * FROM student LIMIT 1,3;
5 SELECT id,name,department FROM student;
6 SELECT * FROM student WHERE department IN(‘计算机系’,’英语系’); 或者 SELECT * FROM student WHERE department=’计算机系’ OR department=’英语系’; 等号“=1 在查询之前,先按照表内容创建 student 表和 score 表 2 为 student 表和 score 表增加记录 3 查询 student 表的所有记录 4 查询 student 表的第 2 条到第 4 条记录 5 从 student 表查询所有学生的学号、姓名和院系的信息 6 从 student 表查询计算机系和英语系的学生的信息 7 从 student 表查询年龄为 18-22 岁的学生的信息 8 从 student 表种查询每个院系有多少人 9 从 score 表中查询每个科目的最高分 10 查询李四的考试科目(c_name)和考试成绩(grade) 11 用连接查询的方式查询所有学生的信息和考试信息 12 计算每个学生的总成绩 13 计算每个考试科目的平均成绩 14 查询计算机成绩低于 95 的学生的信息 15 查询同时参加计算机和英语考试的学生的信息 16 将计算机考试成绩按从高到低进行排序 17 从 student 表和 score 表中查询出学生的学号,然后合并查询结果 18 查询姓张或者姓王的同学的姓名、院系和考试科目及成绩 19 查询都是湖南的同学的姓名、年龄、院系和考试科目及成绩
INSERT INTO score VALUES (NULL,901,’计算机’,98); INSERT INTO score VALUES (NULL,901,’英语’,80); INSERT INTO score VALUES (NULL,902,’计算机’,65); INSERT INTO score VALUES (NULL,902,’中文’,88); INSERT INTO score VALUES (NULL,903,’中文’,95); INSERT INTO score VALUES (NULL,904,’计算机’,70); INSERT INTO score VALUES (NULL,904,’英语’,92); INSERT INTO score VALUES (NULL,905,’英语’,94); INSERT INTO score VALUES (NULL,906,’计算机’,90); INSERT INTO score VALUES (NULL,906,’英语’,85);
7 SELECT id,name,sex,2013-birth AS age,department,address FROM student WHERE 2013-birth>=18 AND 2013-birth<=22;
8 SELECT department,COUNT(id) FROM student GROUP BY department;