《MySQL数据库》PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以上代码可能存在什么问题? in
子查询练习
• 查询所有比张三大的学生 • 找出所有李四的同班同学 • 找出数学分数最高的同学名字
连接查询
如果在一个结果集中要显示多张表的数据,就需要使用连接 查询
• 内连接 select 列… from 表1 inner join 表2 on 表1.相关列 = 表2.相关列
12’ • 给学号’3g001’的数学分数加10分 • 删除id为1的学生数据 • 查询两个表的数据
查询
SELECT 列名列表 FROM 表名 [ WHERE 查询条件 ] [ GROUP BY 分组列 ] [ HAVING 分组条件 ] [ ORDER BY 排序列 [ ASC | DESC ] ] [ LIMIT 行索引1,行索引2 ]
• UPDATE 表名 SET 列 = 值[ WHERE 条件]
• DELETE FROM 表名 [ WHERE 条件]
• SELECT 列 FROM 表名[WHERE 条件]
数据操作练习:
• 分别给students和scores表插入5行数据 • 更新学号’3g001’的学生生日为‘1989-4-
特点:找到两个表中相符的数据
• 外连接:左外连接、右外连接 select 列… from 表1 left join 表2 on 表1.相关列 = 表2.相关列
特点:显示所有左表中的数据,右表中不相符的数据显示null
连接查询练习:
显示所有参加考试的学生姓名和分数 显示所有没有参加考试的学生姓名 显示不及格学生的姓名和班级,分数
MySQL数据库(一)
课程目标
• 介绍MySQL数据库 • 掌握MySQL基本命令 • 掌握基础sql语法
MySQL
MySQL是目前最受欢迎的开源SQL数据库管 理系统,由MySQL AB开发、发布和支持。
MySQL是一个快速的、多线程、多用户和健 壮的SQL数据库服务器。
MySQL服务器支持关键任务、重负载生产系 统的使用,能够适用于大型项目。
练习: 按年龄从小到大显示学生信息 显示分数信息的第3到5行 查询分数最高的人 查询年龄最小的学生
分组
查询时常需要通过某些类型对数据分类 如: • 查看每个班的学生人数 • 查看某天考试的平均分
分组常和聚合函数一起使用: 总和sum,平均分avg,最小值min,最大值max,总数count
查看每个班人数 select class_no 班级, count(stu_id) 人数 from students group by class_no;
数据定义语言
• 创建数据库 create database 数据库名 • 删除数据库 drop database if exists 数据库名 • 创建表 create table 表名(
列名 数据类型(长度) [约束] [默认值], ); • 删除表 drop table if exists 表名
MySQL操作
mysql –h主机名 –u用户名 –p密码
登录mysql
show databases;
显示所有数据库
use 数据库名;
连接数据库
show tables;
显示所有的表
describe 表名;
显示表结构
source 文件路径;
导入外部sql命令
mysqldump -u 用户名 -p 数据库名 > 文件名 导出数据库
having
• Having语句对分组之后的结果进行条件筛 选
• where —— group by ——having • 查询人数超过2人的班级 select class_no 班级, count(stu_id) 人数 from students group by class_no having count(stu_id) > 2;
二进制字符串
创建数据库和表
• 创建MySchool数据库 • 创建表: Students表 自增列id(主键),学号,班级号,姓名,地址,生日 Scores表 自增列id(主键),学号(外键),科目,分数,考试日
期
基本sql语法
• INSERT INTO 表名(列名, 列名) VALUES (‘值’, ‘值')
查询条件
• = <> > < >= <= • and \ or
stu_id=‘3g001’ and address=‘武汉’
• between .. and ..
birthday between '1900-1-1' and '1992-1-1'
• in
stu_id in(‘3g001’,’3g002’)
• like 通配符(%代表任意长度字符,_代表一个字符)
name like ‘张%’
练习:
• 查询来自武汉或南昌的姓张的同学 • 查询class-1班分数在70到95之间的学生 • 查询姓名是三个字的学生
排序和限制行
排序: select * from 表 order by 列 asc|desc 限制行数: select * from 表 limit 开始行,行数
常用数据类型
int smallint tinyint float double decimal
char varchar text date datetime timestamp binary varbinary
整型 int(m) m最大显示宽度 浮点数 float(m, d) m数字总位数,d小数点后位数 文本 char(m) m最大长度 日期
Байду номын сангаас
分组练习
• 查询补考过的学生学号 • 查询平均分超过70的科目 • 查询考生人数低于2人的考试日期
子查询
在查询语句中可以嵌套其他查询语句 select * from 表 where 列 = (select 列 from 表)
查询2012-3-22考试的学生姓名:
select name from students where stu_id = (select stu_id from scores where exam_date=‘2012-3-22’);
子查询练习
• 查询所有比张三大的学生 • 找出所有李四的同班同学 • 找出数学分数最高的同学名字
连接查询
如果在一个结果集中要显示多张表的数据,就需要使用连接 查询
• 内连接 select 列… from 表1 inner join 表2 on 表1.相关列 = 表2.相关列
12’ • 给学号’3g001’的数学分数加10分 • 删除id为1的学生数据 • 查询两个表的数据
查询
SELECT 列名列表 FROM 表名 [ WHERE 查询条件 ] [ GROUP BY 分组列 ] [ HAVING 分组条件 ] [ ORDER BY 排序列 [ ASC | DESC ] ] [ LIMIT 行索引1,行索引2 ]
• UPDATE 表名 SET 列 = 值[ WHERE 条件]
• DELETE FROM 表名 [ WHERE 条件]
• SELECT 列 FROM 表名[WHERE 条件]
数据操作练习:
• 分别给students和scores表插入5行数据 • 更新学号’3g001’的学生生日为‘1989-4-
特点:找到两个表中相符的数据
• 外连接:左外连接、右外连接 select 列… from 表1 left join 表2 on 表1.相关列 = 表2.相关列
特点:显示所有左表中的数据,右表中不相符的数据显示null
连接查询练习:
显示所有参加考试的学生姓名和分数 显示所有没有参加考试的学生姓名 显示不及格学生的姓名和班级,分数
MySQL数据库(一)
课程目标
• 介绍MySQL数据库 • 掌握MySQL基本命令 • 掌握基础sql语法
MySQL
MySQL是目前最受欢迎的开源SQL数据库管 理系统,由MySQL AB开发、发布和支持。
MySQL是一个快速的、多线程、多用户和健 壮的SQL数据库服务器。
MySQL服务器支持关键任务、重负载生产系 统的使用,能够适用于大型项目。
练习: 按年龄从小到大显示学生信息 显示分数信息的第3到5行 查询分数最高的人 查询年龄最小的学生
分组
查询时常需要通过某些类型对数据分类 如: • 查看每个班的学生人数 • 查看某天考试的平均分
分组常和聚合函数一起使用: 总和sum,平均分avg,最小值min,最大值max,总数count
查看每个班人数 select class_no 班级, count(stu_id) 人数 from students group by class_no;
数据定义语言
• 创建数据库 create database 数据库名 • 删除数据库 drop database if exists 数据库名 • 创建表 create table 表名(
列名 数据类型(长度) [约束] [默认值], ); • 删除表 drop table if exists 表名
MySQL操作
mysql –h主机名 –u用户名 –p密码
登录mysql
show databases;
显示所有数据库
use 数据库名;
连接数据库
show tables;
显示所有的表
describe 表名;
显示表结构
source 文件路径;
导入外部sql命令
mysqldump -u 用户名 -p 数据库名 > 文件名 导出数据库
having
• Having语句对分组之后的结果进行条件筛 选
• where —— group by ——having • 查询人数超过2人的班级 select class_no 班级, count(stu_id) 人数 from students group by class_no having count(stu_id) > 2;
二进制字符串
创建数据库和表
• 创建MySchool数据库 • 创建表: Students表 自增列id(主键),学号,班级号,姓名,地址,生日 Scores表 自增列id(主键),学号(外键),科目,分数,考试日
期
基本sql语法
• INSERT INTO 表名(列名, 列名) VALUES (‘值’, ‘值')
查询条件
• = <> > < >= <= • and \ or
stu_id=‘3g001’ and address=‘武汉’
• between .. and ..
birthday between '1900-1-1' and '1992-1-1'
• in
stu_id in(‘3g001’,’3g002’)
• like 通配符(%代表任意长度字符,_代表一个字符)
name like ‘张%’
练习:
• 查询来自武汉或南昌的姓张的同学 • 查询class-1班分数在70到95之间的学生 • 查询姓名是三个字的学生
排序和限制行
排序: select * from 表 order by 列 asc|desc 限制行数: select * from 表 limit 开始行,行数
常用数据类型
int smallint tinyint float double decimal
char varchar text date datetime timestamp binary varbinary
整型 int(m) m最大显示宽度 浮点数 float(m, d) m数字总位数,d小数点后位数 文本 char(m) m最大长度 日期
Байду номын сангаас
分组练习
• 查询补考过的学生学号 • 查询平均分超过70的科目 • 查询考生人数低于2人的考试日期
子查询
在查询语句中可以嵌套其他查询语句 select * from 表 where 列 = (select 列 from 表)
查询2012-3-22考试的学生姓名:
select name from students where stu_id = (select stu_id from scores where exam_date=‘2012-3-22’);