一、查询
1、查询列
知识点
数据库和表信息的查看
查询列
指定列别名
去重DISTINCT
练习
# 数据准备
使用navicat运行脚本“nba.sql”,导入数据。
使用navicat查询nba数据库中的球队数据(team)和球员数据(player)。
# 使用mysql命令行方式完成下列练习
(1)查看当前服务器下所有的数据库
(2)切换nba数据库
(3)查看当前数据库下所有表
(4)查看team表和player表的结构
(5)查看team表和player表所有的数据
(6)从球员表player中仅查询球员的中文名chinesename和身高height两列信息
(7)将(6)中chinesename和height的2列的标题分别指定为“中文名”和“身高”
(8)从球员表player中查询nba球员的在场上的位置(position)有哪些?要求数据不重复
2、条件查询
知识点
比较运算符
范围运算符:BETWEEN...AND...
IN运算符
LIKE运算符
IS [NOT] NULL
练习
# 数据准备:
使用navicat运行脚本“nba.sql”,导入数据。
# 使用mysql命令行方式完成下列练习
(1)查询身高(height)220以上的球员的编号(id),姓名(chinesename),身高(height)信息。
(2)使用between..and..运算符查询球龄(playAge)10~15之间(含10和15)的球员的编号(id),姓名(chinesename),球龄(playAge)信息。
(3)查询位置(position)是'中锋'的球员的编号(id),姓名(chinesename),位置(position)信息。
(4)使用in运算符查询球队编号(teamid)为13或15或17的球队的球员的编号(id),姓名(chinesename),球队编号(teamid)信息。
(5)从player表中查询中文姓名以"杰克逊"结尾的所有球员的编号(id),姓名(chinesename),英文名(englishname)。
(6)从player表查询英文名为"Chris Paul"的球员的编号(id),姓名(chinesename),英文名(englishname)。
(7)从player表中查询中文姓名含"詹姆斯"的所有球员的编号(id),姓名(chinesename),英文名(englishname)。
# 数据准备:
通过navicat运行脚本“jxgl.sql”导入数据。
# 使用mysql命令行完成下列练习
(8)从students表查询‘张早'的学生的学号和姓名
(9)从students表查询姓‘张'的学生的学号和姓名
(10)从students表查询地址以’人民路'开头的学生的所有信息
(11)从teachers表查询姓名未尾为‘静'的教师工号和姓名
(12)从students表查询电话为Null的学生所有信息
(13)从students表查询电话为空字符串的学生所有信息
3、运算符
算术运算符
+ - * / div % mod
# 使用select查询下列表达式的值
(1)100 + 0, 100 - 0, 100 + 50, 100 + 50 * 30, 100 + 35.5, 100 - 35.5
(2)100 + '1' ,100 + 'a' ,100 + NULL
(3) 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2,100 + 2 * 5 / 2,100 / 3, 100 DIV 0
(4)12 % 3,12 % 5, 12 MOD -5,-12 % 5,-12 % -5
(5)从employees查询员工id为偶数的员工信息
比较运算符
= <=> <> != < <= > >=
# 使用select查询下列表达式的值
(6)1 = 2,1 != 2,1 = '1',1 = 'a',0 = 'a'
(7) 'a' = 'a','ab' = 'ab','a' = 'b'
(8) 1 = NULL,NULL = NULL
(9)尝试使用等号=从employees查询奖金比率(commission_pct)为null的记录
(10)1 <=> 2,1 <=> '1',1 <=> 'a',0 <=> 'a', 1 <=> NULL, NULL <=> NULL
(11)尝试使用安全等号<=>从employees查询奖金比率(commission_pct)为null的记录
IS NULL
IS NULL \ IS NOT NULL \ ISNULL
# 使用select语句完成下列查询
(12)尝试使用is null从employees查询奖金比率(commission_pct)为null的记录
(13)从employees查询奖金比率(commission_pct)不为null的记录
BETWEEN...AND...
BETWEEN 条件下界1 AND 条件上界2 (查询条件1和条件2范围内的数据,包含边界)
# 使用select语句完成下列查询
(14)查询工资在6000 到 8000的员工信息
(15)查询工资不在6000 到 8000的员工信息
IN
in (set)\ not in (set)
# 使用select语句完成下列查询
(19)查询部门为10,20,30部门的员工信息
(20)查询工资不是6000,7000,8000的员工信息
LIKE
模糊查询
%:代表不确定个数的字符 (0个,1个,或多个)
_ :代表一个不确定的字符
# 使用select语句完成下列查询
(21)查询last_name中包含字符'a'的员工信息
(22)查询last_name中以字符'a'开头的员工信息
(23)查询last_name中包含字符'a'且包含字符'e'的员工信息
(24)查询第3个字符是'a'的员工信息
(25)查询第2个字符是_且第3个字符是'a'的员工信息
REGEXP \ RLIKE
正则表达式
# 使用select语句完成下列查询
(26)SELECT 'shkstart' REGEXP '^shk', 'shkstart' REGEXP 't$', 'shkstart' REGEXP 'hk';
(27)SELECT 'atguigu' REGEXP 'gu.gu','atguigu' REGEXP '[ab]'
逻辑运算符
OR AND NOT
# 使用select语句完成下列查询
(28)从employees表查询所在部门编号为50且工资高于6000的员工信息
(29)从employees表查询工资低于4000或奖金比率(commission_pct)为null的员工
3、排序
# 数据准备:
通过navicat运行脚本“jxgl.sql”导入数据。
(1)从departments表查询所有记录,并按部门编号升序排序
(2)从departments表查询所有记录,先按部门升序排序,部门相同,再性别升序排序,性别相同,再按学号降序排序。
4、分组
(9)从students表查询电话非空(null)的学生个数。
(10)从score表查询学生的平均成绩