Oracle创建数据表实例
发布时间:2020-12-12 14:23:45 所属栏目:百科 来源:网络整理
导读:Oracle创建数据表实例。 1、创建数据表 --判断数据表是否存在,存在则删除DECLARE IS_EXIST NUMBER;BEGIN SELECT COUNT(*) INTO IS_EXIST FROM ALL_TABLES WHERE TABLE_NAME = 'STUDENT_INFO'; IF IS_EXIST = 1 THEN --删除表以及所有引用这个表的视图、约束
Oracle创建数据表实例。 1、创建数据表 --判断数据表是否存在,存在则删除 DECLARE IS_EXIST NUMBER; BEGIN SELECT COUNT(*) INTO IS_EXIST FROM ALL_TABLES WHERE TABLE_NAME = 'STUDENT_INFO'; IF IS_EXIST = 1 THEN --删除表以及所有引用这个表的视图、约束或触发器等 EXECUTE IMMEDIATE 'DROP TABLE STUDENT_INFO CASCADE CONSTRAINTS'; END IF; END; --创建“学生信息”数据表 CREATE TABLE STUDENT_INFO ( STU_ID INT,--学号 STU_NAME VARCHAR2(8),--姓名 EMAIL VARCHAR2(20),--邮箱 SEX CHAR(2),--性别 AGE INT,--年龄 CLASS_ID VARCHAR2(20),--班级编号 REGDATE DATE DEFAULT SYSDATE --创建期间 ); 2、创建约束 --创建学号的主键约束 ALTER TABLE STUDENT_INFO ADD CONSTRAINT STU_PK PRIMARY KEY(STU_ID); --创建姓名的非空约束 ALTER TABLE STUDENT_INFO MODIFY STU_NAME NOT NULL; --创建邮箱的唯一性约束 ALTER TABLE STUDENT_INFO ADD CONSTRAINT EMAIL_UK UNIQUE(EMAIL); --创建性别的默认约束 ALTER TABLE STUDENT_INFO MODIFY SEX DEFAULT '女'; --创建年龄的检查约束 ALTER TABLE STUDENT_INFO ADD CONSTRAINT AGE_CK CHECK(AGE>0 AND AGE<120);或者在创建表的同时设置约束 --创建“学生信息”数据表 CREATE TABLE STUDENT_INFO ( STU_ID INT PRIMARY KEY,--学号,并设置主键约束 STU_NAME VARCHAR2(8)NOT NULL,--姓名,并设置非空约束 EMAIL VARCHAR2(20)CONSTRAINT EMAIL_UK UNIQUE,--邮箱,并设置唯一性约束 SEX CHAR(2)DEFAULT '女',--性别,并设置默认约束 AGE INT CONSTRAINT AGE_CK CHECK(AGE>0 AND AGE<120),--年龄,并设置检查约束 CLASS_ID VARCHAR2(20),--班级编号 REGDATE DATE DEFAULT SYSDATE --创建期间 ); 3、创建索引 --创建班级编号索引 CREATE INDEX STUDENT_INDEX ON STUDENT_INFO(CLASS_ID);4、创建序列 --创建序列 CREATE SEQUENCE STU_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999999999 创建一个行级触发器,该触发器在STUDENT_INFO(学生信息)表插入数据时被触发,并且在该触发器的主体中实现设置STUDENT_INFO(学生信息)表STU_ID列的值。 CREATE OR REPLACE TRIGGER TRI_INSERT_STU BEFORE INSERT ON STUDENT_INFO --关于STUDENT_INFO数据表的STU_ID,在插入STU_ID列之前,引起该触发器的运行 FOR EACH ROW --创建行级触发器 BEGIN SELECT STU_SEQ.NEXTVAL INTO :NEW.STU_ID FROM DUAL; --从序列中生成一个新的数值,赋值给当前插入行的STU_ID列 END; 5、测试 --测试 INSERT INTO STUDENT_INFO(STU_NAME,EMAIL,AGE,CLASS_ID) VALUES('张三','zhangsan@qq.com',18,'1001'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ARM U-BOOT _armboot_start与_start (转载)
- uboot bootargs bootcmd bootm
- react native Android 真正回收复用 RecyclerView/ListView
- Swift3 Type 'String' does not conform to pro
- c# – DataTable是否消耗比List更多的内存?
- ORACLE学习笔记-查询篇
- C# – 系统地添加界面一个很好的做法?
- activiti xml String方式部署
- 正则表达式 \d{12}|\d{13}|\d{16}|\
- SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-ope