《数据库语言》PPT课件.ppt
《《数据库语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库语言》PPT课件.ppt(116页珍藏版)》请在三一办公上搜索。
1、SQL结构化查询语言(Structured Query Language),教书育人匠:胡琦光,结构化查询语言(Structured Query Language),具有定义、查询、更新和控制等多种功能,是关系数据库的标准语言。SQL分类:数据操纵语言DML Data Manipulation Language:SELECT INSERT UPDATE DELETE数据定义语言DDL Data definition language:CREATE ALTER DROP RENAME TRUNCATE数据控制语言DCL Data Control Language:GRANT REVOKETran
2、saction:commit rollback savepoint,SQL语言(B),查看所有表:select table_name from user_tables;查看表结构:describe dept;(或者desc dept;)emp表雇员表Empno:雇员工号 Ename:雇员名字 Job:工作。(秘书、销售、经理、分析员、保管)Mgr(manager):经理的工号 Hiredate:雇用日期 Sal:工资 Comm:津贴 Deptno:所属部门号dept表部门表Deptno:部门号 Dname:部门名字 Loc:地址salgrade表薪水等级Grade:等级 losal:最低工资
3、hisal:最高工资bonus表奖金Ename:雇员名字,job:工作,sal:工资 comm:津贴,实验用数据表(B),为表添加注释comment on table emp is 雇员表;为列添加注释comment on column emp.Empno is 雇员工号;,添加注释(B),Select-from-where句型SELECT DISTINCT*,column alias,.FROM table Where 条件表达式aliasColumn aliasColumn“alias”Column as alias,SELECT(A),检索单个列select col from table
4、Name;检索多个列select col1,col2,col3 from tableName;检索所有列select*from tableName;使用通配符的优点:书写方便、可以检索未知列使用通配符的缺点:降低检索的性能给检索出的列起个别名select job gong zuo from emp;select job as gong zuo from emp;,SELECT语言(A),select*from emp;select empno from emp;select empno empnumber from emp;select empno“empnumber”from emp;sel
5、ect empno as empnumber from emp;select distinct empno from emp;,select(A),条件比较,!,,,=,any,some,allis null,is not nullbetween x and yexists(subquery)in(list),not in(list)like _,%,escape _%escape,where(A),select*from emp where comm is null;select*from emp where comm is not null;select ename,sal from em
6、p where sal in(800,1250,1500,2000);select ename,sal from emp where ename in(SMITH,ALLEN,KING);select ename,sal from emp where sal between 1000 and 2500;select ename,sal from emp where deptno 10;,where,逻辑复合条件not,and,or计算次序问题的解决,最好用括号进行分组处理SQL优化问题:AND:把检索结果较少的条件放到后面OR:把检索结果较多的条件放到后面,where(A),select en
7、ame,hiredate from emp where hiredate 20-2月-81;select ename,sal from emp where deptno=10 and sal 1000;select ename,job,deptno from emp where deptno=10 or job=CLERK;select ename,sal from emp where sal not in(800,1500,2000);列出deptno为10或者30,并且工资2000的所有人。,where,条件表达式中字符串匹配操作符是“like”%通配符表示任意字符出现任意次数_通配符表示
8、任意字符出现一次技巧和注意事项:不能过度使用通配符。如果其他操作符能达到目的,就不要使用通配符。确实需要使用通配符时,除非绝对必要,否则不要把通配符用到搜索模式最开始处,因为这样搜索起来是最慢的。select ename from emp where ename like%ALL%;select ename from emp where ename like _A%;,like(A),You query the database with this command:SELECT name FROM employee WHERE name LIKE _a%;Which names are dis
9、played?A.names starting with aB.names starting with a or AC.names containing a as the second letterD.names containing a as any letter except the first,select test,按照单个列排序order by col降序和升序:order by col desc(asc)按多个列排序order by col1 desc(asc),col2 desc(asc),order by(A),select ename,sal from emp order b
10、y ename;select ename,sal from emp order by empno;select ename,sal from emp order by ename asc;select ename,sal from emp order by deptno desc;select ename,sal,deptno from emp order by deptno asc,ename desc;,order by(A),为什么需要计算字段?我们经常需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序中重新格式化。计算字段并不实际存在于数据库表
11、 Sql允许select子句中出现+,-,*,/以及列名和常数的表达式拼接字段(|,+)首选|(mysql中|表示or,一般用concat(),创建计算字段(A),select ename|is a|job from emp;select ename,sal,sal*12 from emp;select ename,sal,sal*12+500 from emp;select ename,sal,sal*(12+500)from emp,创建计算字段,Sql中允许列值为空,空值用保留字NULL表示。NULL不同与0或者空格,它就是代表了一个不确定的内容。任何含有null值的数学表达式最后的结果
12、都为空值select ename,sal,comm,(sal*12)+comm“income”from emp;可以通过函数nvl将NULL转换成为一个“actual value”select ename,comm,nvl(comm,0)from emp select ename,sal,comm,(sal*12)+nvl(comm,0)“income”from emp,通用函数 nvl(A),函数一般是在数据上执行的,它给数据的转换和处理提供了方便。只是将取出的数据进行处理,不会改变数据库中的值。,通用函数 nvl,SQL 函数(A),Sql函数可以分为组函数和单行函数。组函数又被称作聚合函
13、数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句单行函数对单个数值进行操作,并返回一个值。,两种SQL 函数(A),单行函数的分类(A),字符函数全以字符作为参数,返回值分为两类:一类返回字符值,一类返回数字值concat(string1,string2)连接两个字符串initcap(string)string中每个单词首字母大写Lower(string)以小写形式返回stringlpad,rpad 填充字符型数据ltrim/rtrim(string1,string2)trim()substr 提取字符串的一部分substr(string,1,2
14、)upper(string)以大写形式返回stringinstr 字符串出现的位置,instr(string,A)length 字符串长度,字符函数(A),select ename,sal from emp where lower(ename)like%a%;select ename,sal from emp where upper(ename)like%A%;select substr(Hello,1,3)from dual;select name,substr(ename,2)from emp;select ename,length(ename)from emp;select ename,
15、instr(ename,A)from emp;select ename,lpad(ename,6)from emp;select ename,lpad(ename,6,?)from emp;Select lpad(ABC,5,#)from dual;,字符函数,数字函数以NUMBER类型为参数返回NUMBER值round(number,n)select round(23.652)from dual;select round(23.652,2)from dual;select round(23.652,-1)from dual;trunc(number,n)select trunc(23.652
16、)from dual;select trunc(23.652,2)from dual;select trunc(23.652,-1)from dual;mod(x,y)求余数select mod(13,5)from dual;ceil()上取整 select ceil(19.2)from dual;floor()下取整 select floor(19.2)from dual;,数字函数(A),Oracle以内部数字格式存储日期:世纪,年,月,日,小时,分钟,秒 sysdate/current_date以date类型返回当前的日期Add_months(d,x)返回加上x月后的日期d的值LAST_
17、DAY(d)返回的所在月份的最后一天Months_between(date1,date2)返回date1和date2之间月的数目,日期和时间函数(A),从日期中加或减一个数值,以得当一个日期结果值select sysdate+2 from dual;select sysdate-2 from dual;两个日期相减以便得到他们相差多少天select ename,round(sysdate-hiredate)/7)weeks from emp where deptno=10,日期和日期时间算术,标量数据可以有类型的转换,转换分为两种,隐式类型转换和显示类型转换。隐式类型转换可用于:字符和数字的相
18、互转换&字符和日期的相互转换VARCHAR2 or charnumberVARCHAR2 or char datenumbervarchar2datevarchar2尽管数据类型之间可以进行隐式转换,仍建议使用显示转换函数,以保持良好的设计风格。,转换函数(C),to_charto_numberto_date,转换函数(A),TO_CHAR(date,fmt)用于将日期或时间戳转换成varchar2类型字符串,如果指定了格式字符串,则用它控制结果的结果。格式控制串由格式元素构成。格式控制串必须用单引号括起来,TO_CHAR 函数操作日期(A),Select to_char(sysdate,dd
19、-mon-yy hh24:mi:ss)Rigth Now from dual;select ename,hiredate,to_char(hiredate,yyyy/mm/dd)from empselect sysdate,to_char(sysdate,yyyy-mon-dd hh12:mi:ss)from dual;,TO_CHAR 函数操作日期(A),to_char(num,format)用于将Number类型参数转换为varchar2类型,如果指定了format,它会控制整个转换。,TO_CHAR 函数操作数字(A),select to_char(sal,$99,999.9999)sa
20、lary from emp where ename=ALLEN;select to_char(sal,$00,000.0000)salary from emp where ename=ALLEN;select to_char(123456,99,99,00)from dual;,TO_CHAR 函数操作数字,to_date(String,format)将char或varchar2类型的string转换为date类型Select to_date(04,05,19,10,23,40,yy,mm,dd,hh12,mi,ss)from dual;select to_date(2004-09-19,yy
21、yy-mm-dd)from dual;to_number(String,format)将char或varchar2类型的string转换为number类型select to_number($39343.783,$99990.000)from dual;select to_number(11.231,999.999)from dual;,to_number&to_date,单行函数可被嵌入到任何层嵌套函数从最深层到最低层求值,F3(F2(F1(col,arg1),arg2),arg3),Step 1=Result 1,Step 2=Result 2,Step 3=Result 3,单行函数嵌套(
22、A),显示没有上级管理的公司首脑select ename,nvl(to_char(mgr),no manager)from emp where mgr is null;显示员工雇佣期满6个月后下一个星期五的日期Select to_char(next_day(add_months(hiredate,6),Friday),fmDay,Month ddth,YYYY)“review”from emp order by hiredate;,单行函数嵌套,组函数基于多行数据返回单个值,组函数(A),avg()返回某列的平均值min()返回某列的最小值max()返回某列的最大值sum()返回某列值的和co
23、unt()返回某列的行数组函数仅在选择列表和Having子句中有效,组函数(A),在数字类型数据使用AVG and SUM 函数select sum(sal),avg(sal),max(sal),min(sal)from emp;MIN and MAX适用于任何数据类型select min(hiredate),max(hiredate)from emp;组函数除了count(*)外,都跳过空值而处理非空值select count(*)from emp;select count(comm)from emp;select count(distinct deptno)from emp;,组函数(A)
24、,select avg(comm)from emp;NVL函数迫使分组函数包括空值select avg(nvl(comm,0)from emp;,在分组函数中使用NVL函数,创建分组group by 子句Group by 子句可以包含任意数目的列。除组函数语句外,select语句中的每个列都必须在group by 子句中给出。如果分组列中具有null值,则null将作为一个分组返回。如果列中有多行null值,他们将分为一组。Group by 子句必须出现在where子句之后,order by 子句之前。过滤分组(having子句)Where过滤行,having过滤分组。Having支持所有wh
25、ere操作符。分组和排序一般在使用group by 子句时,应该也给出order by子句。,数据分组,SELECTcolumn,group_functionFROMtableWHEREconditionGROUP BY group_by_expressionORDER BY column;使用GROUP BY子句将表分成小组结果集隐式按升序排列,如果需要改变排序方式可以使用Order by 子句,数据分组(A),出现在SELECT列表中的字段,如果出现的位置不是在组函数中,那么必须出现在GROUP BY子句中select deptno,avg(sal)from emp group by de
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库语言 数据库 语言 PPT 课件
链接地址:https://www.31ppt.com/p-5519564.html