mysql实训

发布时间 2023-03-28 11:45:20作者: 牛人勇中

 

一、查询

 

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表查询学生的平均成绩