《Linux与数据库》课件4. SQL语言.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Linux与数据库》课件4. SQL语言.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux与数据库 Linux与数据库课件4. SQL语言 Linux 数据库 课件 SQL 语言
- 资源描述:
-
1、复习测试复习测试-选择题选择题 关系模型理论在_年提出A 1879 B 1970 C 1983 逻辑设计的任务是A 得到ER图 B 得到建表语句 C 在数据库产品中创建表 一个表满足第二范式,而且不存在_依赖,则它满足第三范式A 部分依赖 B 完全依赖 C 传递依赖 在Oracle Linux 8启动服务的工具是A system B systemctl C mysqld 若root帐号的密码为Root1995,以mysql工具连接服务器的命令为A mysql-uroot-pRoot1995 B mysql-uroot-p Root1995 C mysql-u root-p Root1995 D
2、 mysql-uroot-pRoot1995 复习测试复习测试-选择题选择题 在mysql中切换至db数据库的命令为A mysql use db B mysql connect db C mysql change db D mysql db 在db数据库中执行/scripts/scott.sql的命令为 A mysql source/scripts/scott.sql B mysql source scott.sql C mysql./scripts/scott.sql D mysql/scripts/scott.sql 复习测试复习测试-简答题简答题 如何把不满足第三范式的表转化为满足第三范
3、式 简述关系模型的三个要素 简述关系模型的特点 简述画出ER图之前的准备工作 简述如何把一对多的联系转化为表SQL 操作关系型数据库的标准语言 Structured Query LanguageSQL历史历史 1970,Codd提出关系模型 1973,IBM启动System R项目 Donald D.Chamberlin和Raymond F.Boyce负责操作工具的开发 1974,DML与DDL成形 称为SEQUEL(Structured English Query Language)Raymond F.Boyce因为脑动脉瘤去世 1980,重命名为SQL SEQUEL已被英国飞机公司Hawk
4、er Siddeley用作商标.SQL,Structured Query Language,结构化查询语言 SQL标准 SQL-86,SQL-89,SQL-92,SQL:1999,SQL:2003,SQL:2006,SQL:2008,SQL:2011,SQL:2016Chamberlin(1944-)1966,BS,Engineering,Harvey Mudd College 1967,MS,EE,Stanford University 1971,PhD,EE,Stanford UniversitySQL分类分类 DML Data Mnaipulation Language select,d
5、elete,update,insert DDL Definition create,drop,alter,truncate table DCL Control grant,revokeMySQL的客户端工具的客户端工具SQL执行方式 直接执行 嵌入至其他编程语言 使用API 字符界面 mysql 图形界面 MySQL Workbench 第三方工具(Windows)SQLyog navicat使用使用mysql客户端工具客户端工具 连接至本地服务器rootlaw#mysql-uroot-p 连接服务器时,指定数据库rootlaw#mysql-uroot-p hr简单信息查询简单信息查询 查看M
6、ySQL版本mysql select version();查看当前用户mysql select user();查看所有数据库mysql show databases;查看当前数据库mysql select database();查看当前时间mysql select now();查看当前数据库中的所有表mysql show tables;查看表结构mysql desc t;基本操作基本操作 创建数据库mysql create database db;切换数据库mysql use db 执行OS命令(system或!)mysql system clearmysql!lsanaconda-ks.cf
7、g scott.sql 执行SQL脚本mysql source scott.sql 修改执行过的代码mysql edit执行执行SQL脚本文件创建测试数据脚本文件创建测试数据 用vi提前在当前目录下准备好scott.sql脚本文件,然后执行下面命令mysql create database hr;Query OK,1 row affected(0.00 sec)mysql use hrDatabase changedmysql source scott.sql最简单的查询最简单的查询mysql select*from dept;+-+-+-+|deptno|dname|loc|+-+-+-+|
8、10|ACCOUNTING|NEW YORK|20|RESEARCH|DALLAS|30|SALES|CHICAGO|40|OPERATIONS|BOSTON|+-+-+-+简单查询简单查询-where条件条件mysql select*-from emp -where sal 2000;mysql select ename,sal -from emp -where sal 2000 and deptno=10;mysql select ename,sal -from emp -where sal between 1500 and 3000;mysql select ename,sal -fro
9、m emp -where comm is null;where comm is null;简单查询简单查询-列别名列别名mysql select deptno as dno,dname as dept name,loc city -from dept -;+-+-+-+|dno|dept name|city|+-+-+-+|10|ACCOUNTING|NEW YORK|20|RESEARCH|DALLAS|30|SALES|CHICAGO|40|OPERATIONS|BOSTON|+-+-+-+简单查询简单查询-order by与与limit子句子句mysql select ename,sal
10、 from emp -where deptno=10 -order by sal -;mysql select ename,sal from emp -where deptno=10 -order by sal -limit 2,3 -;说明:limit m,n的用法是略过前m行,然后取出n行table关键字关键字(始自始自8.0.19)select*from table_name可以替换为table table_namemysql table dept;mysql table dept order by dname limit 1,2;使用使用row关键字,自组表关键字,自组表(始自始自8.
11、0.19)mysql select*from -(values row(1,2,3),row(4,5,6)as t;+-+-+-+|column_0|column_1|column_2|+-+-+-+|1|2|3|4|5|6|+-+-+-+mysql select*from -(values row(1,2,3),row(4,5,6)as t(a,b,c)-where a=1;+-+-+-+|a|b|c|+-+-+-+|1|2|3|+-+-+-+字符串条件查询字符串条件查询 字符串常量表示方法 默认是否区分大小写 模糊查询,%,_ 条件中包括特殊字符:%,_,复习测试复习测试1.update命
12、令属于_。A.DDL B.DCL C.DML 2.select语句的from子句用于指定_。A.列名 B.表名 C.数据库名 D.表名或列名3.下面描述查询语句的顺序中,正确的是_。A.select.from.where.order by.B.select.from.order by.where.C.select.order by.from.where.复习测试复习测试mysql select distinct job from emp;+-+|job|+-+|CLERK|SALESMAN|%RD%|R_D|+-+1.select job from emp where job=CLERK 的查
13、询结果为:A.CLERK B.执行时,出现语法错误 C.空集2.select job from emp where job like%的查询结果为:A。%RD%B.与上面的查询结果相同 C.空集 D.以上均错 E.执行时,出现语法错误 3.select job from emp where job like%_ 的查询结果为:A.R_D B.与上面的查询结果相同 C.空集 D.以上均错 E.执行时,出现语法错误 4.select job from emp where job=%_%的查询结果为:A。%RD%B.R_D C.空集 D.以上均错 E.执行时,出现语法错误 复习测试复习测试mysql
14、 select empno from emp order by empno;+-+|empno|+-+|7369|7499|7521|7566|7654|7698|7782|7839|+-+说出下面查询结果1.select empno from emp order by empno limit 1,2;2.select empno from emp order by empno limit 2;3.select empno from emp order by empno desc limit 2;分类汇总分类汇总mysql select deptno,max(sal)-from emp -gr
15、oup by deptno -;+-+-+|deptno|max(sal)|+-+-+|10|5000.00|20|3000.00|30|2850.00|+-+-+汇总函数汇总函数 max(),min(),avg(),count(),sum(),group_concat group_concat(column_name1 order by column_name2 separator.)where子句:限定参与汇总的行 group by子句:指定分组列 having子句:过滤分组结果 order by子句:指定排序列 MySQL不支持汇总函数的嵌套:max(count(*)简单汇总练习简单汇总
16、练习 查询emp表的最高工资 查询emp表的最低工资 查询emp表的记录个数 查询emp表中部门号20中的记录个数 查询emp表中不重复的部门编号 查询emp表中20号部门的最高工资使用使用group by执行分类汇总练习执行分类汇总练习 查询emp表中每个部门的sal总和。查询emp表中,每个部门工资超过2000的那些员工的工资总和。使用使用having子句过滤分组汇总的结果子句过滤分组汇总的结果 查询工资总额超过7000的部门编号及其工资总额,并以部门编号从小到大排序各子句的处理顺序各子句的处理顺序 执行where子句,过滤符合条件的记录。执行group by子句,对以上结果以分组汇总。执
17、行having子句,对分组后的查询结果进行过滤。执行order by子句,对查询结果以指定列排序。执行select子句,显示查询结果。分组汇总的注意事项分组汇总的注意事项 where子句置于group by之前。不能在where子句中使用分组函数。having子句一般会使用分组函数,若不需使用分组函数,则推荐使用where子句。在语法顺序上,having子句可放置于group by子句之前或之后,推荐放置于group by子句之后。若未被分组函数作用,select、having和order by子句中的列只能选用group by子句中的列。子查询子查询mysql select*from -(s
18、elect ename,sal from emp)as t -;mysql select ename,(select avg(sal)from emp where deptno=e.deptno)dept_avg_sal -from emp e -;mysql select ename,sal -from emp -where sal=(select max(sal)from emp where deptno=10)-;mysql select dname from dept -where deptno in -(select deptno from emp group by deptno h
19、aving avg(sal)2000)-;not in查询结果为空查询结果为空 查询没有员工的部门名称mysql select dname from dept where deptno not in(select distinct deptno from emp);+-+|dname|+-+|OPERATIONS|+-+1 row in set(0.00 sec)mysql update emp set deptno=null where ename=MILLER;Query OK,1 row affected(0.00 sec)Rows matched:1 Changed:1 Warning
20、s:0mysql select dname from dept where deptno not in(select distinct deptno from emp);Empty set(0.00 sec)not exists与与exists使用子查询实现汇总函数嵌套调用效果使用子查询实现汇总函数嵌套调用效果 查询emp表中平均工资最高的deptno 查询emp表中部门人数最多的deptno,dname单选单选-查询获得最高工资的员工名称查询获得最高工资的员工名称 select ename sal from emp where sal=max(sal)select ename,sal fro
21、m emp where sal=(select max(sal)from emp)select ename,max(sal)from emp select ename,(select max(sal)from emp)from emp单选单选-查询每个员工名称及其部门名称查询每个员工名称及其部门名称 select ename,(select dname from dept)from emp select ename,(select dname from dept where deptno=deptno)from emp select ename,(select dname from dept
22、where deptno=e.deptno)from emp e select(select ename from emp where deptno=d.deptno),dname from dept d多选多选-查询各部门人数的最大值查询各部门人数的最大值 select max(count(*)from emp select max(cnt)from(select count(*)cnt from emp)a select max(count(*)from emp group by deptno select max(cnt)from(select count(*)cnt from emp
展开阅读全文