Oracle数据库Sql语句详解大全

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

NameDateOracleSQL第一章SELECT查询本章目标写一条SELECT查询语句在查询中使用表达式、运算符对空值的处理对查询字段起别名查询字段的连接SELECT查询基本语法SELECT列名FROM表名SQLSELECT*FROMs_emp•请查询出s_emp表中所有的员工信息:查询指定列SQLSELECTdept_id,salaryFROMs_emp•请查询出s_emp表中所有的员工的部门ID,工资:运用算数表达式SQLSELECTsalary*12FROMs_emp•请查询出s_emp表中所有的员工的年薪:运用算数表达式•括号可以改变运算符运算的优先顺序:SQLSELECTlast_name,salary,12*salary+1002FROMs_emp;...Velasquez250030100SQLSELECTlast_name,salary,12*(salary+100)2FROMs_emp;...Velasquez250031200列别名•请查询出s_emp表中所有的员工的姓名:SQLSELECTfirname_name||last_nameFROMs_empSQLSELECTfirname_name||last_name“姓名”FROMs_emp•请查询出s_emp表中所有的员工的姓名:空值的处理•请查询出s_emp表中所有的员工的工资:SQLSELECTlast_name,salary*commission_pct/100“工资”2FROMs_emp;SQLSELECTlast_name,salary+salary*NVL(commission_pct,0)/1002FROMs_emp;去掉重复行•请查询出s_dept表的部门名称:SQLSELECTname2FROMs_dept;SQLSELECTDISTINCTname2FROMs_dept;去掉多列重复行SQLSELECTDISTINCTdept_id,title2FROMs_emp;•请查询出s_emp表中所有的员工的部门ID及职称:小结查询表的全部记录查询指定的列给列起别名NVL函数及字符串连接符重复行的处理DistinctSELECT[DISTINCT]{*,column[alias],...}FROMtable;引言第二章条件查询本章目标WHERE条件查询在查询中使用表达式、运算符使用LIKE、BETWEEN、IN进行模糊查询第一章内容回顾对员工表中信息进行查询,具体要求如下:1.查询s_emp表要求输出员工姓名(firs_name、last_name)和实际工资(基本工资+提成):查询基本语法SELECT列名FROM表名[WHERE查询条件表达式]列名称SELECT*表名FROMS_emp过滤条件WHEREdept_id=41请查询出s_emp表中dept_id为41的员工信息:WHERE条件查询•请查询出s_emp表中last_name为Smith的员工的信息:SELECT*FROMs_empWHERElast_name='Smith'•请查询出s_emp表中部门ID为50并且工资大于1500的员工的信息:SELECT*FROMs_empWHEREsalary1500anddept_id=50WHERE条件查询-BETWEEN&IN•请查询出s_emp表中工资在1500到2000之间的员工信息:SELECT*FROMs_empWHEREsalarybetween1500and2000•请查询出s_dept表中region_id为1,3的部门信息:SELECT*FROMs_deptWHEREregion_idin(1,3)WHERE条件查询-like•请查询出s_emp表中姓中含有字母a的员工信息:SELECT*FROMs_empWHERElast_namelike'%a%'•请查询出当前用户下所有以‘s_’开头的表:SELECTtable_nameFROMuser_tablesWHEREtable_namelike'S\_%'escape'\'•请查询出s_emp表姓中第二个字母为a的员工信息:SELECT*FROMs_empWHERElast_namelike‘_a%'空值的查询查询出s_emp表中非销售职位的员工信息:SELECT*FROMs_empWHEREcommission_pctisnull课堂练习已建立好的S_emp表,对此表中的数据进行模糊查询,具体要求如下:查询一名last_name以“M”开头的员工,他的dept_id好像是’3X’查询工资在1200至1500之间的员工查询来自部门ID为(41,42,43)的员工查询结果排序查询出s_emp表将部门ID为41的员工的工资按从高到低排列显示出来:SELECT*FROMs_empWHEREdept_id=41ORDERBYsalaryDESCSQLSELECTlast_name,dept_id,salary2FROMs_emp3ORDERBYdept_id,salaryDESC;小结Where条件查询Between…and&In&Like模糊查询对查询结果排序SELECT[DISTINCT]{*,column[alias],...}FROMtable[WHEREcondition(s)][ORDERBY{column,expr,alias}[ASC|DESC]];第三章单行函数本章目标熟悉各种类型单行函数的使用掌握转换函数的使用两种SQL函数单行函数–Character–Number–Date–ConversionSINGLE-ROWFUNCTION多行函数–GroupMULTI-ROWFUNCTION字符函数LOWER将字符串转换成小写UPPER将字符串变为大写INITCAP将字符串的第一个字母变为大写CONCAT拼接两个字符串,与||相同SUBSTR取字符串的子串LENGTH以字符给出字符串的长度NVL以一个值来替换空值字符函数举例LOWER('SQLCourse')sqlcourseUPPER('SQLCourse')SQLCOURSEINITCAP('SQLCourse')SqlCourseSELECT*FROMs_empWHERElast_name=‘PATEL’SELECT*FROMs_empWHEREUPPER(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(-55.5)trunc(55.5)trunc(-55.5)-----------------------------------------------56-5655-55SQLSELECTTRUNC(124.16666,-2)trunc1,trunc(124.16666,2)FROMdual;TRUNC1TRUNC(124.16666,2)----------------------------100124.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)给出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-94‘NEXT_DAY('01-SEP-95','FRIDAY')'08-SEP-95‘LAST_DAY('01-SEP-95')'30-SEP-95'日期函数ROUND('25-MAY-95','MONTH')01-JUN-95ROUND('25-MAY-95','YEAR')01-JAN-95TRUNC('25-MAY-95','MONTH')01-MAY-95TRUNC('25-MAY-95','YEAR')01-JAN-95转换函数TO_CHAR(date,'fmt')转换日期格式到字符串用下列格式显示字符为数字:9代表一个数字.0显示前缀零.$根据本地语言环境显示货币.L采用当地货币符号.打印一个小数点.,千位计算法显示.日期格式DY星期几的缩写Mon,Tue,...DAY星期几的全拼Monday,Tuesday,...D一周的星期几,星期天=1,星期六=71,2,3,4,5,6,7DD一月的第几天,1311,2,...31W一个月的第几周,151,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小时制,1121,2,3,...12HH2424小时制,0230,1,2,3,...23MI一小时中的第几分,0590,1,2,3...59SS一分中的第几秒,0590,1,2,3,...59To-char举例SQLSELECTlast_name,TO_CHAR(start_date,2'fmDdspthofMonthYYYYfmHH:MI:SSAM')HIREDATE3FROMs_emp4WHEREstart_dateLIKE'%91';SQLSELECT'Order‘||TO_CHAR(id)||2'wasfilledforatotalof‘||TO_CHAR(total,'fm$9,999,999')3FROMs_ord4WHEREship_date='21-SEP-92';To-char举例查询员工表中入职日期在7月份的员工信息:SELECT*FROMs_empWHEREto_char(start_date,'mm')=07RR日期格式CurrentYear1995199520012001SpecifiedDate27-OCT-9527-OCT-1727-OCT-1727-OCT-95RRFormat1995201720171995YYFormat1995191720172095Ifthespecifiedtwo-digityearisIftwodigitsofthecurrentyearare0-490-4950-9950-99Thereturndateisinthecurrentcentury.Thereturndateisinthecenturyafterthecurrentone.Thereturndateisinthecenturybeforethecurrentone.Thereturndateisinthecurrentcentury.转换函数TO_NUMBER(‘String’)转换字符串到数字TO_DATE(‘String’)转换字符串到日期格式SELECTto_date(‘2009-

1 / 136
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功