CAOracle数据库Sql语句详解大全.ppt
《CAOracle数据库Sql语句详解大全.ppt》由会员分享,可在线阅读,更多相关《CAOracle数据库Sql语句详解大全.ppt(136页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、NameDateOracleSQL第一章第一章SELECT查询查询本章目本章目标写一条SELECT查询语句在查询中使用表达式、运算符对空值的处理对查询字段起别名查询字段的连接SELECT查询基本基本语法法SELECT FROM SQL SQL SELECT SELECT *FROM s_emp FROM s_emp请查询出s_emp表中所有的员工信息:查询指定列指定列SQL SQL SELECT SELECT dept_id,salarydept_id,salary FROM s_emp FROM s_emp请查询出s_emp表中所有的员工的部门ID,工资:运用算数表达式运用算数表达式SQL
2、SQL SELECT SELECT salary*12salary*12 FROM s_emp FROM s_emp请查询出s_emp表中所有的员工的年薪:运用算数表达式运用算数表达式括号可以改变运算符运算的优先顺序:SQL SELECT SQL SELECT last_name,salary,12*salary+100last_name,salary,12*salary+100 2 FROM 2 FROM s_emp;s_emp;.Velasquez 2500 30100Velasquez 2500 30100SQL SELECT SQL SELECT last_name,salary,12
3、*(salary+100)last_name,salary,12*(salary+100)2 FROM 2 FROM s_emp;s_emp;.Velasquez 2500 31200Velasquez 2500 31200列列别名名请查询出s_emp表中所有的员工的姓名:SQL SQL SELECT SELECT firname_name|last_namefirname_name|last_name FROM s_emp FROM s_empSQL SQL SELECT firname_name|last_name SELECT firname_name|last_name “姓名姓名姓名
4、姓名”FROM s_empFROM s_emp请查询出s_emp表中所有的员工的姓名:空空值的的处理理请查询出s_emp表中所有的员工的工资:SQL SELECTSQL SELECT last_name,last_name,salary*commission_pct/100salary*commission_pct/100 “工资工资工资工资”2 2 FROM FROM s_emp;s_emp;SQL SQL SELECT SELECT last_name,salary+salary*last_name,salary+salary*NVL(commission_pct,0)NVL(commis
5、sion_pct,0)/100/100 2 2 FROM FROM s_emp;s_emp;去掉重复行去掉重复行请查询出s_dept表的部门名称:SQL SELECTSQL SELECTnamename 2 FROM 2 FROM s_dept;s_dept;SQL SELECTSQL SELECTDISTINCTDISTINCT name name 2 FROM 2 FROM s_dept;s_dept;去掉多列重复行去掉多列重复行SQL SELECTSQL SELECT DISTINCTDISTINCT dept_id,title dept_id,title 2 FROM 2 FROM s
6、_emp;s_emp;请查询出s_emp表中所有的员工的部门ID及职称:小小结查询表的全部记录查询指定的列给列起别名NVL函数及字符串连接符重复行的处理DistinctSELECTSELECT DISTINCT*,columnalias,.DISTINCT*,columnalias,.FROMFROM table;table;引言引言第二章第二章 条件查询条件查询本章目本章目标WHERE条件查询在查询中使用表达式、运算符使用LIKE、BETWEEN、IN进行模糊查询第一章内容回第一章内容回顾v对员工表中信息进行查询,具体要求如下:1.查询s_emp表表要求输出员工姓名(firs_name、la
7、st_name)和实际工资(基本工资+提成):查询基本基本语法法SELECT FROM WHERE 列名称列名称SELECT*表名表名FROMS_emp过滤条件过滤条件WHEREdept_id=41 v请查询出s_emp表中dept_id为41的员工信息:WHERE条件条件查询请查询出s_emp表中last_name为Smith的员工的信息:SELECT*FROM s_emp WHERE last_name=Smith请查询出s_emp表中部门ID为50并且工资大于1500的员工的信息:SELECT*FROM s_emp WHERE salary1500 and dept_id=50WHERE
8、条件条件查询-BETWEEN&IN请查询出s_emp表中工资在1500到2000之间的员工信息:SELECT*FROM s_emp WHERE salary between 1500 and 2000请查询出s_dept表中region_id为1,3的部门信息:SELECT*FROM s_dept WHERE region_id in(1,3)WHERE条件条件查询-like请查询出s_emp表中姓中含有字母a的员工信息:SELECT*FROM s_emp WHERE last_name like%a%请查询出当前用户下所有以s_开头的表:SELECT table_name FROM user
9、_tables WHERE table_name like S_%escape 请查询出s_emp表姓中第二个字母为a的员工信息:SELECT*FROM s_emp WHERE last_name like _a%空空值的的查询v查询出s_emp表中非销售职位的员工信息:SELECT*FROM s_emp WHERE commission_pct is null 课堂堂练习已建立好的S_emp表,对此表中的数据进行模糊查询,具体要求如下:查询一名last_name以“M”开头的员工,他的dept_id好像是3X查询工资在1200至1500之间的员工查询来自部门ID为(41,42,43)的员工查
10、询结果排序果排序v查询出s_emp表将部门ID为41的员工的工资按从高到低排列显示出来:SELECT*FROM s_emp WHERE dept_id=41 ORDER BY salary DESC SQL SELECTSQL SELECTlast_name,dept_id,salarylast_name,dept_id,salary 2 FROM 2 FROM s_emps_emp 3 3 ORDER BYORDER BYdept_id,salary DESC;dept_id,salary DESC;小小结Where条件查询Betweenand&In&Like 模糊查询对查询结果排序SELE
11、CTSELECTDISTINCT*,column alias,.DISTINCT*,column alias,.FROM FROM tabletableWHEREWHEREcondition(s)condition(s)ORDER BYORDER BYcolumn,expr,alias ASC|DESC;column,expr,alias ASC|DESC;第三章第三章 单行函数单行函数本章目本章目标熟悉各种类型单行函数的使用掌握转换函数的使用两种两种SQL函数函数单行函数CharacterNumberDateConversionSINGLE-ROWSINGLE-ROWFUNCTIONFUNC
12、TION多行函数GroupMULTI-ROWMULTI-ROWFUNCTIONFUNCTION字符函数字符函数LOWER将字符串转换成小写 UPPER将字符串变为大写 INITCAP将字符串的第一个字母变为大写 CONCAT拼接两个字符串,与|相同 SUBSTR取字符串的子串 LENGTH以字符字符给出字符串的长度 NVL以一个值来替换空值 字符函数字符函数举例例LOWER(SQL Course)sql courseUPPER(SQL Course)SQL COURSEINITCAP(SQL Course)Sql CourseSELECT*FROM s_emp WHERE last_name=
13、PATELSELECT*FROM s_emp WHERE UPPER(last_name)=PATEL字符操作函数字符操作函数CONCAT(Good,String)GoodStringSUBSTR(String,1,3)StrLENGTH(String)6数字函数数字函数ROUND(value,precision)按precision 精度4舍5入TRUNC(value,precision)按precision 截取valueSQLSELECTround(55.5),round(-55.5),trunc(55.5),trunc(-55.5)FROMdual;round(55.5)round(-
14、55.5)trunc(55.5)trunc(-55.5)-56 -56 55 -55SQLSELECTTRUNC(124.16666,-2)trunc1,trunc(124.16666,2)FROMdual;TRUNC1 TRUNC(124.16666,2)-100 124.16Round&Trunc函数函数ROUND(45.923,2)45.92ROUND(45.923,0)46ROUND(45.923,-1)50TRUNC(45.923,2)45.92TRUNC(45.923)45TRUNC(45.923,-1)40日期函数日期函数MONTHS_BETWEEN(date2,date1)给出
15、 Date2-date1的月数ADD_MONTHS增加或减去月份NEXT_DAY(date,day)给出日期date之后下一天的日期LAST_DAY(date)返回日期所在月的最后一天 日期函数日期函数MONTHS_BETWEEN(01-SEP-95,11-JAN-94)19.774194ADD_MONTHS(11-JAN-94,6)11-JUL-94NEXT_DAY(01-SEP-95,FRIDAY)08-SEP-95LAST_DAY(01-SEP-95)30-SEP-95日期函数日期函数ROUND(25-MAY-95,MONTH)01-JUN-95ROUND(25-MAY-95,YEAR)
16、01-JAN-95TRUNC(25-MAY-95,MONTH)01-MAY-95TRUNC(25-MAY-95,YEAR)01-JAN-95转换函数函数TO_CHAR(date,fmt)TO_CHAR(date,fmt)转换转换日期格式到字符串日期格式到字符串日期格式到字符串日期格式到字符串 用下列格式显示字符为数字:9代表一个数字.0显示前缀零.$根据本地语言环境显示货币.L采用当地货币符号.打印一个小数点.,千位计算法显示.日期格式日期格式DY星期几的缩写Mon,Tue,.DAY星期几的全拼Monday,Tuesday,.D一周的星期几,星期天=1,星期六=71,2,3,4,5,6,7DD
17、一月的第几天,1311,2,.31W一个月的第几周,151,2,3,4,5WW,IW一年的第几周,一年的ISO的第几周1,2,3,4,.52MM两为数的月01,02,03,.12MON月份的缩写Jan,Feb,Mar,.DecMONTH月份的全拼January,February,.YYYY,YYY,YY,Y四位数的年,三位数的年1999,999,99,9YEAR年的全拼NineteenNinety-nineRR当前年份的后两位数字01代表2001年HH,HH1212小时制,1121,2,3,.12HH2424小时制,0230,1,2,3,.23MI一小时中的第几分,0590,1,2,3.59S
18、S一分中的第几秒,0590,1,2,3,.59To-char举例例SQL SELECTSQL SELECT last_name,last_name,TO_CHAR(start_date,TO_CHAR(start_date,2 2 fmDdspth offmDdspth of Month YYYY Month YYYY fmHH:MI:SS AM)HIREDATEfmHH:MI:SS AM)HIREDATE 3 3 FROM FROMs_emps_emp 4 4 WHERE WHERE start_date LIKE%91;start_date LIKE%91;SQL SELECTSQL SE
19、LECT Order Order|TO_CHAR(id)TO_CHAR(id)|2 2 was filled for a total of was filled for a total of|TO_CHAR(total,fm$9,999,999)TO_CHAR(total,fm$9,999,999)3 3 FROM FROM s_ords_ord 4 4 WHERE WHERE ship_date=21-SEP-92;ship_date=21-SEP-92;To-char举例例v查询员工表中入职日期在7月份的员工信息:SELECT*FROM s_emp WHERE SELECT*FROM s_
20、emp WHERE to_char(start_date,mm)=07to_char(start_date,mm)=07RR 日期格式日期格式Current YearCurrent Year19951995199519952001200120012001Specified DateSpecified Date27-OCT-9527-OCT-9527-OCT-1727-OCT-1727-OCT-1727-OCT-1727-OCT-9527-OCT-95RR FormatRR Format19951995201720172017201719951995YY FormatYY Format19951
21、995191719172017201720952095If the specified two-digit year isIf the specified two-digit year isIf two If two digits digits of the of the current current year year areare0-490-490-490-4950-9950-9950-9950-99The return The return date is in the date is in the current current century.century.The return
22、The return date is in date is in the century the century after the after the current one.current one.The return The return date is in the date is in the century century before the before the current one.current one.The return The return date is in the date is in the current current century.century.转
23、换函数函数TO_TO_NUMBERNUMBER(StringString)转换字符串到数字转换字符串到数字转换字符串到数字转换字符串到数字TO_TO_DATEDATE(StringString)转换字符串到日期格式转换字符串到日期格式转换字符串到日期格式转换字符串到日期格式SELECT SELECT to_date(to_date(2009-09-222009-09-22,yyyy-mm-ddyyyy-mm-dd)FROM dual FROM dual转换函数的嵌套函数的嵌套F3(F2(F1(col,arg1),arg2),arg3)F3(F2(F1(col,arg1),arg2),arg3)
24、Step 1=Result 1Step 2=Result 2Step 3=Result 3转换函数嵌套函数嵌套举例例SQL SELECTSQL SELECTlast_name,last_name,2 2 NVL(TO_CHAR(manager_id),No Manager)NVL(TO_CHAR(manager_id),No Manager)3 FROM 3 FROMs_emps_emp 4 WHERE 4 WHERE manager_id IS NULL;manager_id IS NULL;查询员工表中manager_idmanager_id为空的员工查询出来,并将空列的值置为“NoMan
25、ager”:小小结字符函数日期函数数值函数转换函数第四章第四章 关联查询关联查询本章目本章目标在一张或多张表中使用等值或非等值连接使用外连接查询自连接查询等等值连接的种接的种类等值连接非等值连接外连接自连接S_EMP TableS_EMP TableID LAST_NAME ID LAST_NAME DEPT_IDDEPT_ID-1 Velasquez 1 Velasquez5050 2 Ngao 2 Ngao4141 3 Nagayama 3 Nagayama3131 4 Quick-To-See 4 Quick-To-See1010 5 Ropeburn 5 Ropeburn5050 6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAOracle 数据库 Sql 语句 详解 大全
限制150内