python3.5+pymysql学习数据库(4)查询语句学习

数据准备好以后先学习查询操作。直接开始做题还是太难了,毕竟太多年没有用过SQL,还是脚踏实地从基础开始学习比较靠谱。

学习资料地址:https://www.w3cschool.cn/sql/zk9swfor.html


# 查询学生信息表全部信息
sql = "SELECT * FROM edu.student "

查询结果:

(1, 'zhaolei', '1990-01-01', 'M')
(2, 'Jimmy', '1990-1-19', 'M')
(3, 'Lucy', '1989-2-19', 'F')
(4, 'Kate', '1991-7-6', 'F')
(5, 'Seven', '1990-12-4', 'M')


#查询学生信息表中的学生编号和学生姓名两列:
sql = "SELECT SID,Sname FROM edu.student "

查询结果:

(1, 'zhaolei')
(2, 'Jimmy')
(3, 'Lucy')
(4, 'Kate')
(5, 'Seven')


#查询SID等于01的学生信息(查询特定行)
sql = "SELECT * FROM edu.student WHERE SID = '01' "

查询结果为:
(1, 'zhaolei', '1990-01-01', 'M')


#查询成绩表中的学生编号SID
sql = "SELECT SID FROM edu.sc "

查询结果为:
(1,)
(1,)
(1,)
(2,)
(2,)
(2,)
(3,)
(3,)
(3,)
(4,)
(4,)
(4,)
(5,)
(5,)
(6,)
(6,)
(7,)
(7,)

#查询结果去重复
sql = "SELECT DISTINCT SID FROM edu.sc "

查询结果为:
(1,)
(2,)
(3,)
(4,)
(5,)
(6,)
(7,)

#查询成绩表信息(学生编号去重复)
sql = "SELECT DISTINCT SID,CID, score FROM edu.sc "

查询结果为:
(1, '01', '80')
(1, '02', '90')
(1, '03', '99')
(2, '01', '70')
(2, '02', '60')
(2, '03', '80')
(3, '01', '80')
(3, '02', '80')
(3, '03', '80')
(4, '01', '50')
(4, '02', '30')
(4, '03', '20')
(5, '01', '76')
(5, '02', '87')
(6, '01', '31')
(6, '03', '34')
(7, '02', '89')
(7, '03', '98')


#查询成绩表中学生数量
sql = "SELECT COUNT(SID) FROM edu.sc "

查询结果为:
(18,)

#查询成绩表中学生数量(去重复)
sql = "SELECT COUNT(DISTINCT SID) FROM edu.sc "

查询结果为:
(7,)


查询中WHERE子句的使用

等于=

#查询成绩表中学生编号为04的所有行
sql = "SELECT * FROM edu.sc  WHERE SID = '04'"

查询结果为:
(4, '01', '50')
(4, '02', '30')
(4, '03', '20')

不等于<>

#查询成绩表中学生编号不等于04的所有行
sql = "SELECT * FROM edu.sc  WHERE SID <> '04'"

查询结果为:
(1, '01', '80')
(1, '02', '90')
(1, '03', '99')
(2, '01', '70')
(2, '02', '60')
(2, '03', '80')
(3, '01', '80')
(3, '02', '80')
(3, '03', '80')
(5, '01', '76')
(5, '02', '87')
(6, '01', '31')
(6, '03', '34')
(7, '02', '89')
(7, '03', '98')

>大于

#查询成绩表中学生编号大于04的所有行
sql = "SELECT * FROM edu.sc  WHERE SID > '04'"

查询结果为:
(5, '01', '76')
(5, '02', '87')
(6, '01', '31')
(6, '03', '34')
(7, '02', '89')
(7, '03', '98')

小于<

#查询成绩表中学生编号小于04的所有行
sql = "SELECT * FROM edu.sc  WHERE SID < '04'"

查询结果为:
(1, '01', '80')
(1, '02', '90')
(1, '03', '99')
(2, '01', '70')
(2, '02', '60')
(2, '03', '80')
(3, '01', '80')
(3, '02', '80')
(3, '03', '80')

小于等于<=

#查询成绩表中学生编号小于等于04的所有行
sql = "SELECT * FROM edu.sc  WHERE SID <= '04'"

查询结果为:
(1, '01', '80')
(1, '02', '90')
(1, '03', '99')
(2, '01', '70')
(2, '02', '60')
(2, '03', '80')
(3, '01', '80')
(3, '02', '80')
(3, '03', '80')
(4, '01', '50')
(4, '02', '30')
(4, '03', '20')


大于等于>=

#查询成绩表中学生编号大于等于04的所有行
sql = "SELECT * FROM edu.sc  WHERE SID >= '04'"

查询结果为:
(4, '01', '50')
(4, '02', '30')
(4, '03', '20')
(5, '01', '76')
(5, '02', '87')
(6, '01', '31')
(6, '03', '34')
(7, '02', '89')
(7, '03', '98')

BETWEEN在某个范围内

#查询成绩表中学生编号在1和3之间的行
sql = "SELECT * FROM edu.sc WHERE SID BETWEEN 1 AND 3"

查询结果为:
(1, '01', '80')
(1, '02', '90')
(1, '03', '99')
(2, '01', '70')
(2, '02', '60')
(2, '03', '80')
(3, '01', '80')
(3, '02', '80')
(3, '03', '80')

LIKE搜索某种模式

#查询学生信息表中,名字以y结尾的行
sql = "SELECT * FROM edu.student WHERE Sname Like '%y'"

查询结果为:
(2, 'Jimmy', '1990-1-19', 'M')
(3, 'Lucy', '1989-2-19', 'F')

#查询学生信息表中,名字包含im的行
sql = "SELECT * FROM edu.student WHERE Sname Like '%im%'"

查询结果为:
(2, 'Jimmy', '1990-1-19', 'M')

IN为列指定多个可能的值

#查询学生信息表中,学生编号为1或者2的行
sql = "SELECT * FROM edu.student WHERE SID IN(1,2)"

查询结果为:
(1, 'zhaolei', '1990-01-01', 'M')
(2, 'Jimmy', '1990-1-19', 'M')


AND,OR和NOT

#查询学生信息表中,学生编号为1并且课程编号为3的行
sql = "SELECT * FROM edu.sc WHERE SID=1 AND CID=3"

查询结果为:
(1, '03', '99')

#查询学生信息表中,学生编号为1或者课程编号为3的行
sql = "SELECT * FROM edu.sc WHERE SID=1 OR CID=3"

查询结果为:
(1, '01', '80')
(1, '02', '90')
(1, '03', '99')
(2, '03', '80')
(3, '03', '80')
(4, '03', '20')
(6, '03', '34')
(7, '03', '98')

#查询学生信息表中,学生编号为1并且课程编号不等于3
sql = "SELECT * FROM edu.sc WHERE SID=1 AND NOT CID=3"

查询结果为:
(1, '01', '80')
(1, '02', '90')

#查询学生信息表中,学生编号为1并且课程编号等于3或者3的行
sql = "SELECT * FROM edu.sc WHERE SID=1 AND (CID=3 OR CID=2)"

查询结果为:
(1, '02', '90')
(1, '03', '99')


按照关键字进行排序DESC 降序,ASC升序排列

#查询学生信息表中,按照成绩进行排序-降序
sql = "SELECT * FROM edu.sc ORDER BY score DESC"

查询结果为:
(1, '03', '99')
(7, '03', '98')
(1, '02', '90')
(7, '02', '89')
(5, '02', '87')
(1, '01', '80')
(2, '03', '80')
(3, '01', '80')
(3, '02', '80')
(3, '03', '80')
(5, '01', '76')
(2, '01', '70')
(2, '02', '60')
(4, '01', '50')
(6, '03', '34')
(6, '01', '31')
(4, '02', '30')
(4, '03', '20')

#查询学生信息表中,SID=4的行,按照成绩进行升序排列
sql = "SELECT * FROM edu.sc WHERE SID=4 ORDER BY score ASC"

查询结果为:
(4, '03', '20')
(4, '02', '30')
(4, '01', '50')


查询结果不为空的行

查询sql语言为: SELECT * FROM edu.course
表格全部查询结果为:
(1, 'English', '02')
(2, 'math', '03')
(3, 'Chinese', '01')
(4, 'physics', '04')
(5, 'geography', '05')
(6, 'French', None)

#查询教师ID不为空的行
sql = "SELECT * FROM edu.course  WHERE TID IS NOT NULL"

查询结果为:
(1, 'English', '02')
(2, 'math', '03')
(3, 'Chinese', '01')
(4, 'physics', '04')
(5, 'geography', '05')

#查询教师ID为空的行
sql = "SELECT * FROM edu.course  WHERE TID IS NULL"

查询结果为:
(6, 'French', None)

猜你喜欢

转载自blog.csdn.net/liying15/article/details/86000636