您好,欢迎访问三七文档
郭爱军guoaj@tarena.com.cn172.16.20.252oracle(商业数据库)oracle甲骨文IBMDB2IBMsqlserverMIC微软mysql(开源免费)sun甲骨文FILE增删改查数据效率数据维护恢复DBMS数据库管理系统DB数据库(基本单元表二维表)RDBMS关系型数据库管理系统RDB关系型数据库基于二维表的数据库表头行列字段名字段字段值sql语句分类structquerylanguageselect语句2selectddl语句数据定义语言createdropalterdml语句数据操作语言insertdeleteupdatetcl语句事务控制语句commitrollbacksavepointdcl语句数据控制语言grantrevoke(DBA)oracle登录到远程机数据库telnet192.168.0.23telnet192.168.0.20telnet192.168.0.26telnetIPopenlabopen123sun280%sqlplussqlplus是oracle公司提供的操作数据库的一个小工具负责输入sql语句返回操作结果。openlabopen123SQL查询一张表的数据需要了解表的结构SQLdesc表名;descs_emp;SQL!clearSQLdescs_emp;NameNull?Type--------------------------------------------------------------ID员工编号NOTNULLNUMBER(7)LAST_NAME姓NOTNULLVARCHAR2(25)FIRST_NAME名VARCHAR2(25)USERIDVARCHAR2(8)START_DATE入职日期DATECOMMENTS备注VARCHAR2(255)MANAGER_ID领导的员工编号NUMBER(7)TITLE职位VARCHAR2(25)DEPT_ID部门编号NUMBER(7)SALARY月薪NUMBER(11,2)COMMISSION_PCT提成NUMBER(4,2)select语句Afrom子句1.从表中查询一个字段的值出来select字段名from表名;selectsalaryfroms_emp;2.如何查询多个字段select字段名1,字段名2from表名;查询first_name,salaryselectfirst_name,salaryfroms_emp;3.如何把表中所有的字段对应的值查询出来selectid,first_name,last_name,userid,start_date,comments,manager_id,title,dept_id,salary,commission_pctfroms_emp;*号可以代表所有的字段名select*froms_emp;4.sql中字段数学运算+-*/selectsalary,salary+salary*0.2froms_emp;selectsalary,salary-salary*0.2froms_emp;小括号可以改变逻辑优先级selectsalary,100+salary*12froms_emp;selectsalary,((100+salary))*12froms_emp;注意/没有取整特性selectsalary,salary/30froms_emp;5.sql中字符串1.sql中的字符串是以单引号引起来的一串字符'''''a''helloworld'2.字符的拼接oracle字符串拼接符||selectfirst_name,last_namefroms_emp;selectfirst_name||last_namefroms_emp;在first_name和last_name之间拼接一个下划线_selectfirst_name||'_'||last_namefroms_emp;3.在first_name和last_name之间拼接一个'this'sSELECTfirst_name||'''||last_namefroms_emp;转义-------%d%%SELECTfirst_name||''''||last_namefroms_emp;在first_name和last_name之间拼接两个'this''sSELECTfirst_name||''''''||last_namefroms_emp;SELECTfirst_name||''''||''''||last_namefroms_emp;6.别名给字段或者表达式起另一个名字selectfirst_namenamefroms_emp;SQLedit进入一个标准viZZ保存退出或者:wqselectsalary,salary*12yearsalfroms_emp;别名和字段名或者表达式都会被默认处理成大写selectsalarysal,salary*12yearsalfroms_emp;//error一个字段或者表达式的别名只能有一个为了让别名能原样显示------双引号selectsalarysal,salary*12yearSalfroms_emp;7.NULL值的处理#defineNULL(void*)0if(pa==NULL){}int*pa=NULL;intpaa=NULL;NULL值这个字段上没有值就是NULLage1.salary*(1+commission_pct/100)*12selectcommission_pctfroms_emp;selectsalary,salary*12froms_emp;2.selectsalary,salary*12,salary*(1+commission_pct/100)*12yearsalfroms_emp;3.nvl空值处理函数nvl(par1,par2)当par1为NULL则返回par2的值如果par1不为NULL则返回par1的值可以处理任何类型但要求par1par2类型一致selectsalary,salary*12,nvl(salary*(1+commission_pct/100)*12,0)yearsalfroms_emp;//logicerrornull和任何值做运算都是NULLNULL要尽早处理否则结果是NULLselectsalary,salary*12,salary*(1+nvl(commission_pct,10)/100)*12yearsalfroms_emp;8.数据的排重显示------distinctselectsalaryfroms_emp;selectdistinctsalaryfroms_emp;selecttitle,salaryfroms_emp;联合排重当多个字段的值联合相同则排除selectdistincttitle,salaryfroms_emp;selectidfroms_emp;selectdistinctid,salaryfroms_emp;Bwhere子句对表中的数据进行限制返回----根据条件返回符合where条件就返回不符合where就被过滤掉1.selectid,salaryfroms_emp;selectid,salaryfroms_empwhere1=1;selectid,salaryfroms_empwhere1=2;--norowsselected/*注释*/2.找出工资大于1200的员工的idfirst_namesalaryselectid,first_name,salaryfroms_empwheresalary1200;selectid,first_name,salaryfroms_empwheresalary1200;3.找出first_name叫Carmen的员工的idsalarymanager_idselectid,salary,manager_idfroms_empwherefirst_name=Carmen;//errorselectid,salary,manager_idfroms_empwherefirst_name='Carmen';selectid,salary,manager_idfroms_empwherefirst_name='carmen';sql语句不区分大小写字符串的值要区分大小写数值类型值不用单引号字符串的值要加单引号4.逻辑比较运算符===!=5.sql中提供的运算符a.表达区间[a,b]where字段betweenaandb;1200=salary=1500//不能这么写selectid,first_name,salaryfroms_empwheresalarybetween1200and1500;b.表达一个字段在一个列表中inid是1或者3或者11selectid,first_namefroms_empwhereidin(1,3,11);找出部门编号是313350部门的员工的idfirst_namedept_idselectid,first_name,dept_idfroms_empwheredept_idin(31,33,50);把出现概率高的放前面c判断是不是NULL字段名isNULL;找出manager_id是NULL的员工的idfirst_namesalaryselectid,first_name,salaryfroms_empwheremanager_id=NULL;//logicerrorselectid,first_name,salaryfroms_empwheremanager_idisNULL;找出提成是NULL的员工的first_namesalaryselectid,first_name,salaryfroms_empwherecommission_pctisnull;d.模糊查询关键字1.where字段like'通配表达式'李王龙年成龙李小龙小龙女2.通配符ls*.txt*%0-n个任意字符_1个任意字符3.selectfirst_namefroms_emp;找出所有带a的first_name'%a%'selectfirst_namefroms_empwherefirst_namelike'%a%';找出倒数第二字符是a的first_nameselectfirst_namefroms_empwherefirst_namelike'%a_';4.user_tablesselecttable_namefromuser_tables;S_EMPS_DEPT找出S_开头的表/*ftpftp.tarena.com.cncsd1304tam_0426cdoraclecdsqlgetoracle-sql.pptput***.txt*/selecttable_namefromuser_tableswheretable_namelike'S_%';转义selecttable_namefromuser_tableswheretable_namelike'S\_%'escape'\';6.逻辑连接符and&&or||not!abandcdaborcd1.[1200,1400]selectid,first_name,salaryfroms_empwheresalary=1200andsalary=1400;(1200,1400)selectid,first_name,salaryfroms_empwheresalary1200andsalary1400;2.找出部门号是31或者是32或者是50的员工的dept_idfirst_namesalaryselectdept_id,first_name,salaryfroms_empwheredept_id=31ordept_id=32ordept_id=50;3.selectid,first_namefroms_empwheresalary1200andd
本文标题:达内oracle
链接地址:https://www.777doc.com/doc-14583 .html