SQL数据库基础培训.ppt
《SQL数据库基础培训.ppt》由会员分享,可在线阅读,更多相关《SQL数据库基础培训.ppt(205页珍藏版)》请在三一办公上搜索。
1、第1章 安装,1.1 ORACLE数据库安装1.2 PL/SQL工具安装,默认下一步即可.1.3 配置本机tnsname.ora文件1.4 测试tnsname.ora配置是否正确1.5 PL/SQL登录,第2章 SQL基础,2.1 数据库查询语言SQL2.2 基本查询和排序2.3 条件查询 2.4 函数 2.5 高级查询2.6 阶段训练2.7 练习,2.1 数据库查询语言SQL,2.1.1 SQL语言的特点和分类SQL语言有以下的主要特点:*SQL语言可以在Oracle数据库中创建、存储、更新、检索和维护数据,其中主要的功能是实现数据的查询和数据的插入、删除、修改等操作。*SQL语言在书写上类
2、似于英文,简洁清晰,易于理解。它由关键字、表名、字段名,表达式等部分构成。,*SQL语言属于非过程化的4GL(第四代语言)。*SQL语言按功能可分为DDL语言、DML语言、DCL语言和数据库事务处理语言四个类别。*SQL语言的主要关键字有:ALTER、DROP、REVOKE、AUDIT、GRANT、ROLLBACK、COMMIT、INSERT、SELECT、COMMENT、LOCK、UPDATE、CREATE、NOAUDIT、VALIDATE、DELETE、RENAME等。按照SQL语言的不同功用,可以进一步对SQL语言进行划分。下表给出了SQL语言的分类和功能简介。,表2-1 SQL语言的分
3、类,2.1.2 SQL的基本语法SQL语言的语法比较简单,类似于书写英文的语句。其语句一般由主句和若干个从句组成,主句和从句都由关键字引导。主句表示该语句的主要功能,从句表示一些条件或限定,有些从句是可以省略的。在语句中会引用到列名、表名或表达式。另外还有如下一些说明:*关键字、字段名、表名等之间都要用空格或逗号等进行必要的分隔。*语句的大小写不敏感(查询的内容除外)。*语句可以写在一行或多行。*语句中的关键字不能略写和分开写在两行。,*要在每条SQL语句的结束处添加“;”号。*为了提高可读性,可以使用缩进。*从句一般写在另一行的开始处。查询语句是最常见的SQL语句,它从给定的表中,把满足条件
4、的内容检索出来。以下是最基本的SELECT语句语法。SELECT 字段名列表 FROM 表名 WHERE 条件;SELECT为查询语句的关键字,后跟要查询的字段名列表,字段名列表用来指定检索特定的字段,该关键字不能省略。,字段名列表代表要查询的字段。FROM 也是查询语句关键字,后面跟要查询的表名,该关键字不能省略。WHERE条件限定检索特定的记录,满足“条件”的记录被显示出来,不满足条件的被过滤掉。语句查询的结果往往是表的一部分行和列。如果字段名列表使用*,将检索全部的字段。如果省略WHERE条件,将检索全部的记录。,【训练1】查询部门10的雇员。输入并执行查询:SELECT*FROM em
5、p WHERE deptno=10;结果略。说明:该查询语句从emp表中检索出部门10 的雇员,条件由WHERE deptno=10 子句指定。,2.2 基本查询和排序,2.2.1 查询的基本用法在Oracle数据库中,对象是属于模式的,每个账户对应一个模式,模式的名称就是账户名称。在表名前面要添加模式的名字,在表的模式名和表名之间用“.”分隔。我们以不同的账户登录数据库时,就进入了不同的模式,比如登录到STUDENT 账户,就进入了STUDENT模式。而在STUDENT模式要查询属于SCOTT模式的表,就需要写成:SELECT*FROM SCOTT.EMP;,但如果登录用户访问属于用户模式本
6、身的表,那么可以省略表名前面的模式名称。SELECT*FROM emp;1指定检索字段下面的练习,只显示表的指定字段。【训练1】显示DEPT表的指定字段的查询。输入并执行查询:SELECT deptno,dname FROM dept;,显示结果如下:DEPTNO DNAME-10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS说明:结果只包含2列deptno和dname。在语句中给出要显示的列名,列名之间用“,”分隔。表头的显示默认为全部大写。对于日期和数值型数据,右对齐显示,如deptno列。对于字符型数据,左对齐显示,如dname列。,【练习1
7、】显示emp表的雇员名称和工资。2显示行号每个表都有一个虚列ROWNUM,它用来显示结果中记录的行号。我们在查询中也可以显示这个列。【训练2】显示EMP表的行号。输入并执行查询:SELECT rownum,ename FROM emp;,结果如下:ROWNUM ENAME-1 SMITH 2 ALLEN 3 WARD 4 JONES 注意:显示的行号是查询结果的行号,数据在数据库中是没有行号的。,3显示计算列在查询语句中可以有算术表达式,它将形成一个新列,用于显示计算的结果,通常称为计算列。表达式中可以包含列名、算术运算符和括号。括号用来改变运算的优先次序。常用的算术运算符包括:*+:加法运算
8、符。*-:减法运算符。*:乘法运算符。*/:除法运算符。以下训练在查询中使用了计算列。,【训练3】显示雇员工资上浮20%的结果。输入并执行查询:SELECT ename,sal,sal*(1+20/100)FROM emp;显示结果为:ENAME SAL SAL*(1+20/100)-SMITH 800 960ALLEN 1600 1920说明:结果中共显示了3列,第3列显示工资上浮20%的结果,它不是表中存在的列,而是计算产生的结果,称为计算列。,【练习2】显示EMP表的雇员名称以及工资和津贴的和。4使用别名我们可以为表的列起一个别名,它的好处是,可以改变表头的显示。特别是对于计算列,可以为
9、它起一个简单的列别名以代替计算表达式在表头的显示。【训练4】在查询中使用列别名。输入并执行:SELECT ename AS 名称,sal 工资 FROM emp;显示结果为:名称 工资-SMITH 800ALLEN 1600,说明:表头显示的是列别名,转换为汉字显示。在列名和别名之间要用AS分隔,如ename和它的别名“名称”之间用AS隔开。AS也可以省略,如sal和它的别名“工资”之间用空格分割。注意:如果用空格分割,要区别好列名和别名,前面为列名,后面是别名。别名如果含有空格或特殊字符或大小写敏感,需要使用双引号将它引起来。,【训练5】在列别名上使用双引号。输入并执行查询:SELECT e
10、name AS Name,sal*12+5000 AS 年度工资(加年终奖)FROM emp;显示结果为:Name 年度工资(加年终奖)-SMITH 14600ALLEN 24200,说明:其中别名“Name”有大小写的区别,别名“年度工资(加年终奖)”中出现括号,属于特殊符号,所以都需要使用双引号将别名引起。【练习3】显示DEPT表的内容,使用别名将表头转换成中文显示。5连接运算符在前面,我们使用到了包含数值运算的计算列,显示结果也是数值型的。我们也可以使用字符型的计算列,方法是在查询中使用连接运算。连接运算符是双竖线“|”。通过连接运算可以将两个字符串连接在一起。,【训练6】在查询中使用连
11、接运算。输入并执行查询:SELECTename|job AS 雇员和职务表 FROM emp;输出结果为:雇员和职务表-SMITHCLERKALLENSALESMAN,说明:在本例中,雇员名称和职务列被连接成为一个列显示。在查询中可以使用字符和日期的常量,表示固定的字符串或固定日期。字符和日期的常量需要用单引号引起。下一个训练是作为上一个训练的改进。,【训练7】在查询中使用字符串常量。输入并执行查询:SELECTename|IS|job AS 雇员和职务表 FROM emp;输出结果为:雇员和职务表-SMITH IS CLERKALLEN IS SALESMAN说明:本练习中将雇员名称、字符串
12、常量“IS”和雇员职务3个部分连接在一起。,【练习4】显示DEPT表的内容,按以下的形式:部门ACCOUNTING所在的城市为NEW YORK 6消除重复行如果在显示结果中存在重复行,可以使用的关键字DISTINCT消除重复显示。,【训练8】使用DISTINCT消除重复行显示。输入并执行查询:SELECT DISTINCT job FROM emp;结果为:JOB-ANALYSTCLERKMANAGERPRESIDENTSALESMAN,说明:在本例中,如果不使用DISTINCT关键字,将重复显示雇员职务,DISTINCT关键字要紧跟在SELECT之后。请去掉DISTINCT关键字,重新执行,
13、并观察显示结果的不同。【练习5】显示EMP表中不同的部门编号。2.2.2 查询结果的排序如果要在查询的同时排序显示结果,可以使用如下的语句:SELECT 字段列表 FROM 表名 WHERE 条件ORDER BY 字段名1 ASC|DESC,字段名2 ASC|DESC.;,ORDER BY从句后跟要排序的列。ORDER BY 从句出现在SELECT语句的最后。排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序,默认的排序顺序为升序。如果要降序,必须书写DESC关键字。,1升序排序【训练1】查询雇员姓名和工资,并按工资从小到大排序。输入并执行查询:SELECT e
14、name,sal FROM emp ORDER BY sal;执行结果为:ENAME SAL-SMITH 800JAMES 950注意:若省略ASC和DESC,则默认为ASC,即升序排序。,2降序排序【训练2】查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。输入并执行查询:SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;结果如下:ENAME HIREDATE-ADAMS 23-5月-87SCOTT 19-4月-87,MILLER 23-1月-82JAMES 03-12月-81FORD 03-12月-81注意:DESC表示降序
15、排序,不能省略。3多列排序可以按多列进行排序,先按第一列,然后按第二列、第三列.。【训练3】查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。输入并执行查询:SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;,结果如下:ENAME DEPTNO HIREDATE-CLARK 10 09-6月-81KING 10 17-11月-81MILLER 10 23-1月-82SMITH 20 17-12月-80JONES 20 02-4月-81FORD 20 03-12月-81SCOTT 20 19-4月-87说明:该
16、排序是先按部门升序排序,部门相同的情况下,再按雇佣时间升序排序。,4在排序中使用别名如果要对计算列排序,可以为计算列指定别名,然后按别名排序。【训练4】按工资和工作月份的乘积排序。输入并执行查询:SELECT empno,ename,sal*Months_between(sysdate,hiredate)AS total FROM emp ORDER BY total;,执行结果为:EMPNO ENAME TOTAL-7876ADAMS 221526.006 7369 SMITH 222864.661 7900 JAMES 253680.817 7654 MARTIN 336532.484说明
17、:求得雇员工作月份的函数Months_between将在后面介绍。sysdate表示当前日期。【练习1】将部门表中的部门名称按字母顺序显示。,2.3 条件查询,2.3.1 简单条件查询要对显示的行进行限定,可在FROM从句后使用WHERE从句,在WHERE从句中给出限定的条件,因为限定条件是一个表达式,所以称为条件表达式。条件表达式中可以包含比较运算,表达式的值为真的记录将被显示。常用的比较运算符列于表2-2中。,表2-2 比 较 运 算 符,【训练1】显示职务为“SALESMAN”的雇员的姓名、职务和工资。输入并执行查询:SELECT ename,job,sal FROM emp WHERE
18、 job=SALESMAN;执行结果为:ENAME JOB SAL-ALLEN SALESMAN 1600WARD SALESMAN 1250MARTIN SALESMAN 1250TURNER SALESMAN 1500,说明:结果只显示职务为“SALESMAN”的雇员。字符串和日期型数据的值是包含在单引号中的,如SALESMAN,需要用单引号引起。字符的值对大小写敏感,在emp表中存放的职务字符串全部是大写。注意:在本练习中,如果SALESMAN写成小写或大小写混合,将不会有查询结果输出。,【训练2】显示工资大于等于3000的雇员姓名、职务和工资。输入并执行查询:SELECT ename,
19、job,sal FROM emp WHERE sal=3000;执行结果为:ENAME JOB SAL-SCOTT ANALYST 3000KING PRESIDENT 5000FORD ANALYST 3000,说明:结果只显示工资大于等于3000的雇员。缺省中文日期格式为DD-MM月-YY,如2003年1月10日应该表示为“10-1月-03”。【训练3】显示1982年以后雇佣的雇员姓名和雇佣时间。输入并执行查询:SELECT ename,hiredate FROM emp WHERE hiredate=1-1月-82;执行结果为:ENAME HIREDATE-,SCOTT 19-4月-87
20、ADAMS 23-5月-87MILLER 23-1月-82说明:检查hiredate字段的内容,都在82年以后。【练习1】显示部门编号为10的雇员姓名和雇佣时间。,2.3.2 复合条件查询可以用逻辑运算符构成复合的条件查询,即把两个或多个条件,用逻辑运算符连接成一个条件。有3个逻辑运算符,如表2-3所示。,表2-3 逻辑运算符,运算的优先顺序是NOT,AND,OR。如果要改变优先顺序,可以使用括号。下面是使用逻辑与运算的练习。1使用逻辑与【训练1】显示工资在10002000之间(不包括1000和2000)的雇员信息。,输入并执行查询:SELECT ename,job,sal FROM emp
21、WHERE sal1000 AND sal2000;执行结果为:ENAME JOB SAL-ALLEN SALESMAN 1600WARD SALESMAN 1250MARTIN SALESMAN 1250TURNER SALESMAN 1500ADAMS CLERK 1100MILLER CLERK 1300,说明:两个条件需要同时满足,所以必须使用AND运算。注意:条件sal1000 AND sal1000 AND 2000。,【练习1】显示部门10中工资大于1500的雇员。2使用逻辑或下面是使用逻辑或运算的练习。【训练2】显示职务为CLERK或MANAGER的雇员信息。输入并执行查询:S
22、ELECT*FROM emp WHERE job=CLERK OR job=MANAGER;执行结果从略。说明:检索职务为CLERK或MANAGER的雇员,需要使用OR运算,请自行察看结果。注意:条件job=CLERK OR job=MANAGER不能写成job=CLERK OR MANAGER。,3使用逻辑非下面是使用逻辑非运算的练习。【训练3】显示部门10以外的其他部门的雇员。输入并执行查询:SELECT*FROM emp WHERE NOT deptno=10;执行结果从略。说明:执行结果包含部门编号不等于10的其他部门的雇员,请自行察看结果。,4使用逻辑或和逻辑与下面是同时使用逻辑或和
23、逻辑与的复合练习。【训练4】显示部门10和部门20中工资小于1500的雇员。输入并执行查询SELECT*FROM emp WHERE(deptno=10 OR deptno=20)AND sal1500;,执行结果为:EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO-7369 SMITH CLERK 7902 17-12月-80 800 20 7876 ADAMS CLERK 7788 23-5月-87 1100 20 7934 MILLER CLERK 7782 23-1月-82 1300 10注意:该练习中的括号是不可省的。如果省略,意义有所不同。,
24、【练习2】请说明在如上练习中如果省略括号,该语句所代表的含义和查询的结果。2.3.3 条件特殊表示法使用如表2-4所示的特殊运算表示法,可使语句更为直观,易于理解。,表2-4 特殊运算符,表2-4 特殊运算符,1BETWEEN的用法对于数值型或日期型数据,表示范围时可以用以下的特殊运算表示方法:NOT BETWEEN.AND.【训练1】显示工资在10002000之间的雇员信息。输入并执行查询:SELECT*FROM emp WHERE sal BETWEEN 1000 AND 2000;执行结果从略。注意:下限在前,上限在后,不能颠倒。查询范围中包含上下限的值,因此在本例中,查询工资包含100
25、0和2000在内。请自行执行并察看结果。,2IN的用法使用以下运算形式,可以显示值满足特定集合的结果:NOT IN(.)【训练2】显示职务为“SALESMAN,“CLERK”和“MANAGER”的雇员信息。输入并执行查询:SELECT*FROM emp WHERE job IN(SALESMAN,CLERK,MANAGER);执行结果从略。注意:如果在IN前面增加NOT,将显示职务不在集合列表中的雇员。以上用法同样适用于数值型集合,请自行执行并察看结果。,【练习1】显示部门10和20的雇员信息。3LIKE的用法使用LIKE操作符可完成按通配符查找字符串的查询操作,该操作符适合于对数据进行模糊查
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 数据库 基础 培训

链接地址:https://www.31ppt.com/p-5449421.html