Oracle - 创建表视图等 - DDL
解锁scott: sqlplus / as sysdba; alter user scott account unlock; alter user scott identified by tiger; /* DDL操作表 数据库定义语言 */ --创建表结构 CREATE TABLE STUDENT( SNO CHAR(10), SNAME VARCHAR2(20), AGE NUMBER(3), SCHOOLDATE DATE, GRADE NUMBER(1) DEFAULT 1, CLAZZ NUMBER(2), EMAIL VARCHAR2(100) ); --删除表结构 DROP TABLE STUDENT; --修改表的名称 RENAME BANK TO SXTBANK; -------------------修改表的结构 --添加列 ALTER TABLE STUDENT ADD(ADDRESS VARCHAR2(100)); --删除列 ALTER TABLE STUDENT DROP COLUMN ADDRESS; --修改列 ALTER TABLE STUDENT MODIFY(EMAIL VARCHAR2(200)); /* DDL约束 规范我们输入的数据 加入约束有两种时机 创建表的时候 创建表之后 有可能会首先表中数据的干扰 非空: 当前数据项不能为空 唯一: 表中的列的值不能相等但是null除外 主键: 不为空且唯一 一个表中只允许有一个主键 创建主键索引 主键可以同时指定多个列,称为联合主键,但是一般不这么去写 外键 自定义 自定义约束的值 */ --测试非空约束 INSERT INTO STUDENT(SNAME) VALUES('ZHANGSAN'); --添加控制约束(非空和唯一) ALTER TABLE STUDENT MODIFY(EMAIL VARCHAR2(100) NOT NULL); ALTER TABLE STUDENT ADD(ADDRESS VARCHAR2(10) UNIQUE); INSERT INTO STUDENT(SNAME,EMAIL) VALUES('ZHANGSAN','LIYI@BJSXT.COM'); INSERT INTO STUDENT(SNAME,EMAIL) VALUES('LISISI','LISISI@BJSXT.COM'); INSERT INTO STUDENT(SNAME,EMAIL,ADDRESS) VALUES('LISISI','LISISI@BJSXT.COM','AAA'); INSERT INTO STUDENT(SNAME,EMAIL,ADDRESS) VALUES('WANGWUWU','LISISI@BJSXT.COM','AAA'); --主键约束 ALTER TABLE STUDENT MODIFY(SNO CHAR(10) PRIMARY KEY); CREATE TABLE HELLO( SNO VARCHAR2(20) PRIMARY KEY ); CREATE TABLE HELLO( SNO VARCHAR2(20), CONSTRAINT HELL_PK PRIMARY KEY(SNO) ); --自定义约束 CREATE TABLE HI( AGE NUMBER(3) CHECK(AGE<150) ); --外键约束 CREATE TABLE QQ( GARDE NUMBER(3) PRIMARY KEY, GNAME VARCHAR2(20) ); CREATE TABLE FIREND( FID NUMBER(3), NAME VARCHAR2(20), GRADE NUMBER(3), FOREIGN KEY(GRADE) REFERENCES QQ(GARDE) ON DELETE CASCADE ); -- FOREIGN KEY(GRADE) REFERENCES QQ(GARDE) -- FOREIGN KEY(GRADE) REFERENCES QQ(GARDE) ON DELETE SET NULL -- FOREIGN KEY(GRADE) REFERENCES QQ(GARDE) ON DELETE ----删除数据 --(删除的时候要保证没有子记录) --(删除的时候子记录设置为空) --(删除的时候级联删除子记录) INSERT INTO QQ VALUES(1,'高中同学'); INSERT INTO QQ VALUES(2,'初中同学'); INSERT INTO QQ VALUES(3,'小学同学'); INSERT INTO FIREND VALUES(11,'张1丰',1); INSERT INTO FIREND VALUES(22,'张2丰',2); INSERT INTO FIREND VALUES(33,'张3丰',3); INSERT INTO FIREND VALUES(44,'张4丰',1); INSERT INTO FIREND VALUES(55,'张5丰',2); DELETE FROM QQ WHERE GARDE = 1;