Oracle的数据类型:加粗字体(ctrl+B)使用ctrl+/可以快速的弹出一个虚拟符号键盘:✏(alt+9999)如果只想复制表的结构到另一张表,而不复制任何的数据,则可以使用一个永远查询不到结果的查询来执行;Createtableempnullasselect*fromempwhere1=2;为表重命名:在oracle数据库中,所有的数据实际上都是通过数据字典保存的,例如:select*fromtab;以上就是一个数据字典,而在oracle数据库中,提供了三种类型的数据字典,最常用的是dbo、user、所以下面查询一个user_tables数据字典;Select*fromuser_tables;也就是说oracle中的所有数据都是按照文件保存的,那么所有的内容都会在数据字典中注册,既然这样,修改表名称就相当于修改一条数据而已:Rename旧的表名称to新的表名称;如果希望彻底释放掉一张表所占用的全部资源(表空间、索引等等)就可以使用截断表的语法,语法如下:Truncatetable表名称;在oracle10G中,为了防止用户的误删除表的操作,专门提供了回收站的功能,用户所删除的表默认情况下回在一个回收站之中保存,而用户也可以通过回收站进行表的恢复,所以此技术成为闪回(flashback);可以通过如下名称查看回收站中的表:ShowRECYCLEBIN;ORIGINALNAMERECYCLEBINNAMEOBJECTTYPEDROPTIME-----------------------------------------------------------------------------MEMBERBIN$r34Nm9OVRxqjy8Jwh1KWJw==$0TABLE2012-01-25:10:28:51可以通过如下的命令恢复别删除的表:FLASHBACKTABLE表名称TOBEFOREDROP;例如恢复上面的member表:NO.数据类型关键字描述1字符串Varchar2(n)N表示该字符串所能储存的最大长度;2整数Number(n)表示最多为n位的整数,有时候也可以用int代替;3小数Number(n,m)N为小数,n-m为整数位,有时也可以使用float代替;4日期Date存放日期和时间5大文本Clob可以存储海量文字,最大4G;6大对象Blob存放二进制数据,例如电影图片等;FlashbacktablememberTObeforedrop;当然呢,也可以直接删除掉回收站中的而一些数据表,语法如下:Puragetable表名称;比如删除回收站中的member表:Purgetablemember;SQLpurgetablemember;表已清除。也可以清空回收站;PURGERECYCLEBIN;如果希望删除的时候不进入回收站,则可以加一个purge关键字;Droptablemyemppurge;表结构的修改:添加列:Altertableadd(列1类型)等和创建类似;如果希望修改已经存在的列:Altertablemodify();和创建表类似;但是表结构能不修改就不修改,因为世界上性能最好的DB2是不允许修改表结构的;如果遇到要修改表结构的时候,把表删除,然后重新建立;唯一约束:UNIQUEUnique对于插入多行为null的值的处理理解为不重复,因为这里不知道它的具体值;主键约束:PRIMARYKEY;主键约束=非空约束+唯一约束;设置为主键之后,不允许为空,而且不允许重复;作为数据的唯一标记出现;从正常的开发而言,一张表一般只设置一个主键,但是从SQL语法来看,一张表可以设置多个主键,称为复合主键:Createtablemember(Midnumber,Namevarchar2(50)notnull,Constraintpk_mid_nameprimarykey(mid,name));检查约束:CheckCreatetablemember(Midnumber,Namevarchar2(50)notnull,Sexvarchar2(10)notnull,Agenumber(3),Constraintpk_mid_nameprimarykey(mid),Constraintck_sexcheck(sexin(‘男’,’女’,’中’)),Constraintck_agecheck(agebetween0and200));Droptablemember;Droptablebook;Createtablemember(midnumber,namevarchar2(50)notnull,Constraintpl_midprimarykey(mid));Createtablebook(bidnumber,titlevarchar2(50)notnull,midnumber,Constraintpk_bidprimarykey(bid),Constraintfk_midforeignkey(mid)referencesmember(mid));笔记1部分:1、使用host可以引用windows系统的copy命令等:Hostcopyd:\demo.sqld:\hello.txt2、scott用户的表结构:可以使用以下命令查看所有表:Select*fromtab;可以使用以下命令查看表结构:Desc表名称;雇员表(以下)No.名称类型描述1EMPNONUMBER(4)雇员的编号,由四位数字组成2ENAMEVARCHAR2(10)雇员的姓名,由十位字符组成3JOBVARCHAR2(9)雇员的职位4MGRNUMBER(4)雇员对应的领导编号,领导也是雇员5HIREDATEDATE雇员的雇佣日期6SALNUMBER(7,2)基本工资,其中两位小数,五位整数7COMMNUMBER(7,2)奖金,佣金(销售人员独有的)8DEPTNONUMBER(2)雇员所在的部门编号以下表存放工资数据,基本上用不到;工资登记表:NO.名称类型描述1GRADENUMBER工资的等级2LOSALNUMBER此登记的最低工资3HISALNUMBER此等级的最高工资SQLselect'雇员编号是:'||empno||'的雇员姓名是:'||ename||',基本工资是:'||sal||',职位是'||job||'!'雇员信息fromemp;雇员信息--------------------------------------------------------------------雇员编号是:7369的雇员姓名是:SMITH,基本工资是:800,职位是CLERK!雇员编号是:7499的雇员姓名是:ALLEN,基本工资是:1600,职位是SALESMAN!雇员编号是:7521的雇员姓名是:WARD,基本工资是:1250,职位是SALESMAN!雇员编号是:7566的雇员姓名是:JONES,基本工资是:2975,职位是MANAGER!雇员编号是:7654的雇员姓名是:MARTIN,基本工资是:1250,职位是SALESMAN!雇员编号是:7698的雇员姓名是:BLAKE,基本工资是:2850,职位是MANAGER!雇员编号是:7782的雇员姓名是:CLARK,基本工资是:2450,职位是MANAGER!雇员编号是:7788的雇员姓名是:SCOTT,基本工资是:3000,职位是ANALYST!雇员编号是:7839的雇员姓名是:KING,基本工资是:5000,职位是PRESIDENT!雇员编号是:7844的雇员姓名是:TURNER,基本工资是:1500,职位是SALESMAN!雇员编号是:7876的雇员姓名是:ADAMS,基本工资是:1100,职位是CLERK!在oracle中所有的数据都是区分大小写的;大小写错误可能查询不出相应的数据;以下三个查询语句的结构是相同的:Select*fromempwherejob!=’CLERK’;Select*fromempwherejob’CLERK’;Select*fromempwherenotjob=’CLERK’--这三种语法都可以在SQLServer中使用;对betweenand求反:Select*fromempwherenotsalbetween1500and3000Betweenand不只是对数据,对日期也一样进行操作;Select*fromempwherehiredatebetween’01-1月-1981’and’31-12月-81’Setlinesize300;Setpagesize200;★对于like操作符,不止可以用于字符串型的数据,而且可以用于其他类型的数据;★Orderby子句是写在所有语句最后的子句;★INITCAP函数,将字符串首字母变为大写;→而所有剩余的字母会变成小写;★Oracle数据库中为了查询的方便,专门提供了一个dual的虚拟表,这样from后边便可以跟这个表名进行查询;★Select*fromempwhereename=UPPER(‘&hh’);中的单引号中间的字符表示一个变量,下一步系统会让用户输入该变量的值,然后系统进行查询:结果图如下:★SQLselect*fromempwhereename=upper('&hh');★输入hh的值:smith★原值1:select*fromempwhereename=upper('&hh')★新值1:select*fromempwhereename=upper('smith')EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO-----------------------------------------------------------------------------------7369SMITHCLERK790217-12月-8080020★字符串操作有两种方式:语法一:substr(字符串,开始点)表示截取该字符串从开始点一直到结尾的部分;语法二:substr(字符串,开始点,结束点)截取字符串倒数三个字符:除了可以用length(字符串)-2以外,还可以使用负数表示:SQLselectsubstr(ename,-3)fromemp;SUBSTR------ITHLENARDNESTINAKEARKOTTINGNERAMS面试题:请问substr截取的时候下标是从0还是从1开始?答:从0和1都一样;数字函数:Round(数字|列,保留小数的位数),表示四舍五入的操作;保留小数位数如果不写,则表示不保留小数;Trunc(数字|列,保留小数的位数),舍弃指定位置的内容;Mod(数字1,数字2)取模,取余数;SQLselectround(903.53567),round(-903.53567),round(903.53567,-1)fromdual;ROUND(903.53567)ROUND(-903.53567)ROUND(903.53567,-1)----------------------------------------------------904-904900SQLselecttrunc(903.5325),trunc(-903.5367),trunc(903.53567,2),trunc(903.53567,-1)fromdual;TRUNC(903.5325)TRUNC(-903.5367)TRUNC(903.53567,2)TRUNC(903.53567,-1)--------------------------------------------------------------------903-903903.53900可以使用sysdate来取得当前日期的值;Oracle函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)关键词:Oracle函数字符串函数数学函数日期函数逻辑运算函数SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制