公文素材库 首页

Oracle SQL建表小结

时间:2019-05-29 22:25:21 网站:公文素材库

Oracle SQL建表小结

OracleSQL建表小结

一下例子在oracle10g中运行成功。一,create创表。Createtable表名

(列名数据类型【列级别完整约束】,列名数据类型【列级别完整约束】,。。。。。。。。。【表级别的约束】);例子1

createtableteacher(idchar(20)primarykey,namechar(20)unique,

sexchar(4)constraintt_sexCHECK(sex="男"orsex="女"),ageintegerconstraintt_agecheck(age>=1andageSdeptchar(20));

createtableCourse(Cnochar(5)primarykey,Cnamechar(20)notnull,CPNOchar(5),Ccreditinteger,

FOREIGNKEYCPNOREFERENCESCourse(Cno));

createtableSC(Snochar(17),Cnochar(5),Gradenumeric(5,2),primarykey(Sno,Cno),

foreignkey(Sno)referencesStudent(Sno),foreignkey(Cno)referencesCourse(Cno));

上面例子1是创建一个teacher表以id为主键,名字唯一,性别约束只能是男或者女,年龄在0到300间。

例子2是创建学生表和课程表,然后建立SC。这里主要学习如何建立外键和组合主键。

对于表级别约束例子2中Cpno的值参考Cno。(Cpno是选课的id)二,alter修改表

如果已经建好表了,但是又要添加列,约束。。。--添加列

Altertable表名add列名数据类型

例子1altertablecourseaddCdescchar(200);--删除列

Altertable表名dropcolumn列名例子2altertablecoursedropcolumncdesc;--修改列的数据类型

Altertable表名altercolumn列名数据类型;--修改字符串的长度

altertablecoursemodifyCdescchar(500);--修改主键

ALTERTABLEtablename--修改表

ADDCONSTRAINTtb_PRIMARYPRIMARYKEYCLUSTERED(列名)/*将你要设置为主键约束的列*/

--修改约束

ALTERTABLE销售表--修改表

ADDCONSTRAINTck_sl--创建检查约束

CHECK(数量>=1and数量

--修改外键altertable表名

addconstraint外键名称foreignkey(字段)references关系表名(关系表内字段)

例子altertablecourseaddconstraintcpforeignkey(cpno)referencescourse(cno);--创建唯一约束

AltertableCourseaddunique(Cname)--删除约束

Altertable表名dropconstraint约束名--启用约束

Altertable表名enableconstraint约束名

扩展阅读:oracle数据库创建表设计与修改(个人总结超有用)

CREATETABLEcd_study_detail(

row_idVARCHAR2(20)UNIQUE,

id_cardVARCHAR2(20)PRIMARYKEY,

study_dateDATECHECK(study_dateLIKE"%-%-%"),study_descVARCHAR2(50),study_scoNUMBER(10,1),

CONSTRAINTdtudy_role_fkFOREIGNKEY(id_card)REFERENCESneu_study(id_card));

CREATETABLEneu_study(

row_idVARCHAR2(20)UNIQUE,

id_cardVARCHAR2(20)PRIMARYKEY,

birth_dayDATECHECK(birth_dayLIKE"%-%-%"),role_idVARCHAR2(20),per_remarkVARCHAR2(255),

base_salryNUMBER(10,4)CHECK(base_salryBETWEEN500AND201*),fact_salryNUMBER(10,4),

create_dateDATEDEFAULTSYSDATECHECK(create_dateLIKE"%-%-%"),last_up_dateDATECHECK(last_up_dateLIKE"%-%-%"),

CONSTRAINTdtudy_role_fkFOREIGNKEY(字段)REFERENCES表名(字段)//字段后直接加references表名(字段名)创建外键更好)

DROPTABLEneu_study;

CREATETABLEROLE(

cd_roleVARCHAR2(20)PRIMARYKEY,role_nameVARCHAR2(20)UNIQUE)

SELECT*FROMneu_studySELECT*FROMROLE

INSERTINTOROLEVALUES("&请输入部门编号","&请输入部门姓名");

CREATESEQUENCEseq_studySTARTWITH1INCREMENTBY1;DROPSEQUENCEseq_study;

INSERTINTOneu_study

VALUES(seq_study.NEXTVAL,"&请输入身份证号",

to_date("&请输入生日","yyyy-mm-dd"),"&请输入部门编号","&备注",&请输入基本工资,&请输入当前实际工资,

to_date("&请输入创建工资的日期","yyyy-mm-dd"),

to_date("&请输入最后更新工资的日期","yyyy-mm-dd"));

INSERTINTOneu_study

VALUES(seq_study.NEXTVAL,"2100902930",

to_date("1986-02-03","yyyy-mm-dd"),"1102","无",201*,600,

to_date("201*/11/10","yyyy-mm-dd"),to_date("201*/11/16","yyyy-mm-dd"));COMMIT;

SELECT*FROMneu_study;

//Oracle的基本操作+Oracle字段类型(zz)在Oracle关于时间属性的建表

Example:

createtablecourses(

cidvarchar(20)notnullprimarykey,

cnamevarchar(20)notnull,

ctypeinteger,

ctimedateDEFAULTSYSDATE,

cscorefloatnotnull)

insertintocoursesvalues("ss01","java",0,TO_DATE("201*-8-28","yyyy-mm-dd"),94)

insertintocoursesvalues("ss02","music",1,TO_DATE("201*-8-27","yyyy-mm-dd"),88)

insertintocoursesvalues("ss03","c++",0,TO_DATE("201*-8-29","yyyy-mm-dd"),78)

在PL/SQL建表以后,记得commit,才能在pl/sql上查询到数据。对于日期类型

将字符串转换成日期:

InsertIntotable(col_date)Values(to_date(‘201*-01-16’,’yyyy-mm-dd’));将日期转换成字符串:

InsertIntotable(col_char)Values(to_char(Date,’format’));

select*fromcourseswherectime>to_date("201*-8-28","yyyy-mm-dd")

创建表

1.ORACLE常用的字段类型ORACLE常用的字段类型有

VARCHAR2(size)可变长度的字符串,必须规定长度CHAR(size)固定长度的字符串,不规定长度默认值为1

NUMBER(p,s)数字型p是位数总长度,s是小数的长度,可存负数最长38位.不够位时会四舍五入.DATE日期和时间类型

LOB超长字符,最大可达4GCLOB超长文本字符串BLOB超长二进制字符串

BFILE超长二进制字符串,保存在数据库外的文件里是只读的.

数字字段类型位数及其四舍五入的结果原始数值1234567.89

数字字段类型位数存储的值Number1234567.89Number(8)12345678Number(6)错

Number(9,1)1234567.9Number(9,3)错Number(7,2)错

Number(5,-2)1234600Number(5,-4)1230000Number(*,1)1234567.9

2.创建表时给字段加默认值和约束条件创建表时可以给字段加上默认值

例如:日期字段DEFAULTSYSDATE

这样每次插入和修改时,不用程序操作这个字段都能得到动作的时间

创建表时可以给字段加上约束条件例如:非空NOTNULL不允许重复UNIQUE关键字PRIMARYKEY按条件检查CHECK(条件)

外键REFERENCES表名(字段名)

3.创建表的例子

CREATETABLEDEPT(

EPTNONUMBER(2)CONSTRAINTPK_DEPTPRIMARYKEY,DNAMEVARCHAR2(14),LOCVARCHAR2(13));

CREATETABLEregion(

IDnumber(2)NOTNULLPRIMARYKEY,postcodenumber(6)default"0"NOTNULL,areanamevarchar2(30)default""NOTNULL);

4.创建表时的命名规则和注意事项

1)表名和字段名的命名规则:必须以字母开头,可以含符号A-Z,a-z,0-9,_,$,#2)大小写不区分

3)不用SQL里的保留字,一定要用时可用双引号把字符串括起来.4)用和实体或属性相关的英文符号长度有一定的限制

注意事项:

1)建表时可以用中文的字段名,但最好还是用英文的字段名

2)创建表时要把较小的不为空的字段放在前面,可能为空的字段放在后面3)建表时如果有唯一关键字或者唯一的约束条件,建表时自动建了索引4)一个表的最多字段个数也是有限制的,254个.

5.约束名的命名规则和语法

约束名的命名规则约束名如果在建表的时候没有指明,系统命名规则是SYS_Cn(n是数字)约束名字符串的命名规则同于表和字段名的命名规则

6.使用约束时的注意事项

约束里不能用系统函数,如SYSDATE和别的表的字段比较可以用本表内字段的比较

想在事务处理后,做约束的检查

SQL>altersessionsetconstraintsdeferred.

7.由实体关系图到创建表的例子s_dept

前提条件:已有region表且含唯一关键字的字段idSQL>CREATETABLEs_dept(idNUMBER(7)

CONSTRAINTs_dept_id_pkPRIMARYKEY,nameVARCHAR2(25)

CONSTRAINTs_dept_name_nnNOTNULL,region_idNUMBER(7)

CONSTRAINTs_dept_region_id_fkREFERENCESregion(id),

CONSTRAINTs_dept_name_region_id_ukUNIQUE(name,region_id));

8.较复杂的创建表例子

SQL>CREATETABLEs_emp(idNUMBER(7)

CONSTRAINTs_emp_id_pkPRIMARYKEY,last_nameVARCHAR2(25)

CONSTRAINTs_emp_last_name_nnNOTNULL,first_nameVARCHAR2(25),useridVARCHAR2(8)

CONSTRAINTs_emp_userid_nnNOTNULLCONSTRAINTs_emp_userid_ukUNIQUE,start_dateDATEDEFAULTSYSDATE,commentsVARCHAR2(25),manager_idNUMBER(7),titleVARCHAR2(25),dept_idNUMBER(7)

CONSTRAINTs_emp_dept_id_fkREFERENCESs_dept(id),salaryNUMBER(11,2),

commission_pctNUMBER(4,2)

CONSTRAINTs_emp_commission_pct_ckCHECK(commission_pctIN(10,12.5,15,17.5,20)));

8.通过子查询建表通过子查询建表的例子

SQL>CREATETABLEemp_41ASSELECTid,last_name,userid,start_dateFROMs_empWHEREdept_id=41;

SQL>CREATETABLEAasselect*fromBwhere1=2;只要表的结构.

10.用子查询建表的注意事项

1)可以关连多个表及用集合函数生成新表,注意选择出来的字段必须有合法的字段名称,且不能重复。

2)用子查询方式建立的表,只有非空NOTNULL的约束条件能继承过来,其它的约束条件和默认值都没有继承过来.3)根据需要,可以用altertableaddconstraint……再建立其它的约束条件,如primarykey等.

11.ForeignKey的可选参数ONDELETECASCADE在创建ForeignKey时可以加可选参数:ONDELETECASCADE它的含义是如果删除外键主表里的内容,子表里相关的内容将一起被删除.

如果没有ONDELETECASCADE参数,子表里有内容,父表里的主关键字记录不能被删除掉.

12.如果数据库表里有不满足的记录存在,建立约束条件将不会成功.

13.给表创建和删除同义词的例子SQL>CREATESYNONYMd_sum2FORdept_sum_vu;

SQL>CREATEPUBLICSYNONYMs_dept2FORalice.s_dept;

SQL>DROPSYNONYMs_dept;

Oracle添加修改删除表字段

1、添加字段altertabletable_nameaddcolumn1typeaddcolumn2type

addcolumn3type...;

2、删除字段altertabletable_namedropcolumncolumn_name;3、修改字段altertabletable_namemodify(column_nametype);

14.修改字段名方法:ALTERTABLE表名

MODIFY(字段名notnull)

15.请问如何修改一张表的主键?altertableaaa

dropconstraintaaa_key;altertableaaa

addconstraintaaa_keyprimarykey(a1,b1);

16.如果该字段不是外键中的字段,你可以通过:altertabletab_namedropCOLUMNcol_name;删除

1.修改主键

ALTERTABLEtable_nameDROPPRIMARYKEYCASCADE;

ALTERTABLEtable_nameADDPRIMARYKEY(column_names);2.

ALTERTABLEtable_nameDROPCOLUMN(col1,col2,col3);---fororacle8iorlaterALTERTABLEtable_nameADD(col1datatype,clo2datatype);

友情提示:本文中关于《Oracle SQL建表小结》给出的范例仅供您参考拓展思维使用,Oracle SQL建表小结:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


Oracle SQL建表小结
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/747139.html
相关阅读
最近更新
推荐专题