SQL第一章表的基本操作1.desc/asc:降序/升序更改system用户默认表空间语句:alterusersystemdefaulttablespacexxx;2.表空间的分类:1.永久表空间2.临时表空间3.UNDO表空间表空间的各项数据信息字典:dba_tablespacesEx:查找表空间的STATUS信息selectstatusfromdba_tablespaceswheretablespace_name=‘XXX’;3.Scott权限比system低4.创建永久表空间:createtablespace+创建表空间名字_tablespace+datafile+文件名.dbf+size(文件大小)5.创建临时表空间createtemporarytablespace+表空间名字_tablespace+datafile+文件名.dbf+size(文件大小)6.永久表空间数据字典dba_data_files从数据字典中查找表空间在系统存放的位置selectfile_namefromdba_data_fileswheretablespace_name=‘大写表空间名字’;7.临时表空间数据字典dba_temp_filesselectfile_namefromdba_temp_fileswheretablespace_name=‘大写表空间名字’;8.设置表空间脱机和联机的状态altertablespace+表空间名字+offline脱机/online联机9.表空间只读/读写(默认状态online):改变该状态只能在online状态下altertablespace+表空间名字+readonly/readwrite;10.向表空间添加数据文件altertablespace+表空间名字+adddatafile+‘文件名.dbf’+size+文件大小11.删除表空间的数据文件:注意如果要删除表空间的第一个数据文件就要删除整个表空间altertablespace+表空间名字+dropdatafile+‘文件名.dbf’12.删除表空间droptablespace+表空间名字(includingcontents加上这句的话删除表空间的数据文件)第二章认识表1.二维结构2.约定:(1)每一列数据类型统一(2)每一列名字统一(3)每一行数据唯一3.数据类型(1)字符型CHAR(n)//n的max值为2000,NCHAR(n)//n的max值为1000,支持unicode格式进行存放VARCHAR2(n)//max(n)=4000,会判断所需空间,比CHAR要节省空间NVARCHAR2(n)//max(n)=2000支持unicode格式进行存放(2)数值型NUMBER(p,s)Ex:FLOAT(n)(3)日期型DATE,TIMESTAMP(4)其他类型BLOB,CLOB5.创建表createtable+表名(数据名+数据类型,数据名+数据类型,……………….);6.查看表的字段信息:desc+表名7.向表中添加字段altertable+表名add数据名+数据类型;8.更改字段数据类型:注意修改要该字段没有数据altertable+表名modify数据名+新的数据类型9.删除字段信息:altertable+表名dropcolumn数据名10.更改字段的名字altertable+表名renamecolumn数据名to新的数据名11.更改表的名字rename表名to新的表名12.删除表中的数据truncatetable+表名13.删除表droptable+表名第三章操作表的数据1.向表中插入数据Insertinto表名values(‘’,’’,’’…..与表中的列名一一对应);2.查询表中数据Select*(*代表所有列的数据)from表名3.向表中的指定字段添加数据Insertinto表名(xx,xx,xx指定字段名字)values(与指定字段一一对应);4.查询表中的指定字段数据Select指定字段名字,指定字段名字…from表名5.为字段设置默认值(1)创建表时为字段设置默认值Createtable表名(数据名+数据类型default默认值);(2)修改表中指定字段为其设置默认值Altertable表名modify数据名default默认值;6.复制其他表的数据(1)建表时复制其他表的数据Createtable表名asselect*(*代表所有数据,也可以部分字段名xx,xx)from其他表名(2)添加数据时复制其他表的数据Insertinto表名select*(*代表所有数据,也可以部分字段名xx,xx)from其他表名7.更新表中的数据Update表名set数据名=新的数据,数据名=新的数据…..;//更新所有行的数据Update表名set数据名=新的数据where条件数据名=什么数据//更新满足条件行的数据8.删除表中的数据Deletefrom表名//删除表中的所有数据Deletefrom表名where条件数据名=什么数据//删除满足条件行的数据第四章认识约束1.约束类型(1)主键约束(2)外键约束(3)唯一约束(4)检查约束(5)非空约束2.非空约束:NOTNULL//设置为可以为空只需(1)创建表时添加非空约束Createtable表名(数据名+数据类型notnull);(2)修改表指定字段添加非空约束//设置为可以为空只需把notnull改为null即可Altertable表名modify数据名+数据类型notnull//该字段不能有空值3.主键约束:primarykey(自带notnull)确保表当中每一行数据的唯一性只能有一个,但是能由多个字段构成(1)创建表时添加主键约束,类似非空约束(2)Constraint(constain_name自定义)primarykey(列名,列名…);(3)数据字典user_constraints(4)修改表时添加主键约束Altertable表名addconstraintconstraint_nameprimarykey(数据名)(5)修改主键约束的名字Altertable表名renameconstraintold_nametonew_name;(6)删除主键约束Altertable表名disableconstraintconstraint_name//禁用约束Altertable表名dropcontraintconstrain_name//删除约束Altertable表名dropprimarykey;4.外键约束foreignkey(1)主从表中相应的字段必须是同一数据类型(2)引用表要有主键,且从表外键对应主表的,要是主键字段(3)从表中外键字段的值必须来自,主表相应字段的值,或者为null(4)如果数据库中有表设了外键参照当前表的某些字段,当前表的这些字段信息只有当从表的所有有关字段信息都被删除时才可删除,或者从表设置ondeletecascade(5)修改表中相关字段添加外键约束,类似主键约束(6)删除外键约束,类似主键约束5.唯一约束uniquekey唯一约束要求每个字段不能有重复值,可以有空值,但是空值只能有一个。(1)和主键约束的区别,主键notnull唯一约束null主键只能有一个,唯一约束可以有多个(2)1.创建表时添加唯一约束,2.修改时添加,3.删除,参上6.检查约束(1)Ex:age0没有意义,所以要加以限制成age必须0(2)创建表时添加检查约束,相对前面的约束check(多了限制条件),修改时添加,删除类似第五章查询1.2.在SQL*PLUS中设置格式(1)给数据名取别名:col(column的缩写)数据名heading别名(2)设置结果的显示格式:col数据名format具体格式①字符型指定长度:a+num②Ex:¥9999.9,货币符号,四位数,小数点一位如果数值超过了设定的位数会用#####来代替显示(3)取消格式:col数据名clear(4)给多个字段同时设置别名:select数据名as新数据名,……from表名(5)不显示重复数据,selectdistinct数据名from表名3.运算符和表达式意思为不等于(1)select数据名from表名where比较判断筛选信息Ex:salary20004.模糊查询like(1)通配符的适用(下划线___,百分号%)5.范围查询(1)between…and是闭合区间可以用逻辑运算符来互换(2)in(指定范围可实例化,Ex:300,1000等具体数)6.对查询结果进行排序orderby(1)对某字段进行降序排序:orderby数据名1desc,数据名2desc/asc注意:只有当数据名1desc相等时,数据名2desc/asc才会起作用7.casewhen语句的使用注意:标签名要用引号‘‘引起来,标签类名不用引号(1)selectcolumn_name,casecolumn_namewhen条件判断then满足条件,给个‘新标签名1’显示,when条件判断then满足条件,给个’新标签名2’显示…….[else新标签名显示]endas标签类名from表名(2)selectcolumn_name,casewhen(column_name=xxx//条件,可以任意的写判断条件,比较灵活)then满足条件,给个新标签名1显示……when..then,,,else新标签名显示endas标签类名from表名8.decode函数:selectcolumn_name,decode(column_name,条件,加标签……重复条件,加标签,最后写一个标签为其他条件下)as标签类名from表名