文章目录
一、创建数据表
在之前我们使用的emp、dept、salgrade的数据表都是数据库提供的,我们也可以在自己使用语句创建数据表,基本语法如下:
CREATE TABLE 表名称(
字段 1 字段类型,
字段 2 字段类型,
字段 3 字段类型,
字段 4 字段类型,
...
字段 字段类型
);
DEMO: 创建一张保存老师信息的表
----- 删除数据表
DROP TABLE teacher PUGER;
----- 创建数据表
CREATE TABLE teacher (
tno NUMBER (4),
tname VARCHAR2 (10),
tage NUMBER (3),
tdate DATE
) ;
--插入数据
INSERT INTO teacher VALUES (1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES (1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES (1003,‘Z老师’,100,SYSDATE);
DEMO: 观察代码
--删除数据
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher (
tno NUMBER(4),
tname VARCHAR2(10),
tage NUMBER(3),
tdate DATE
);
--插入数据
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,100,SYSDATE);
INSERT INTO teacher(tname,tage,tdate) VALUES(‘Z老师’,100,SYSDATE);
此时,发现最后一条数据的编号为NULL,我们说过数据表必须有一个字段表示主键作为数据的唯一标识,这种字段中的数据不应为NULL,此时在创建数据表的时候可以指定该字段不能为null(给该字段做一个约束)
DEMO: 非空约束
--删除数据表
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher(
tno NUMBER(4) NOT NULL,--表示该字段不能为空(非空约束)
tname VARCHAR2(10),
tage NUMBER(3),
tdate DATE
);
--插入数据
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,100,SYSDATE);
INSERT INTO teacher(tname,tage,tdate) VALUES(‘W老师’,100,SYSDATE);
使用以上的方式可以控制插入数据表中的tno一定不能为null,对tno字段的数据进行了约束,这种约束操作叫做非空约束。
DEMO: 唯一约束
--删除数据表
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher(
tno NUMBER(4) NOT NULL,
tname VARCHAR2(10),
tage NUMBER(3),
tdate DATE
);
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1004,‘W老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1004,‘C老师’,100,SYSDATE);
我们发现最后两个数据的编号重复,而主键字段是数据的唯一标识,是不能够重复的,所以可以使用唯一约束进行避免这种现象。
DEMO: 唯一约束
--删除数据表
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher(
tno NUMBER(4) NOT NULL UNIQUE,
tname VARCHAR2(10),
tage NUMBER(3),
tdate DATE
);
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1004,‘W老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1004,‘C老师’,100,SYSDATE);
此时插入相同编号的数据时,会出错。这种就叫做唯一约束。其实还有一种约束可以代替非空约束和唯一约束,叫做主键约束。也就是说主键约束可以同时有唯一约束和非空约束的效果。
--删除数据表
DROP TABLE teacher PURGE;
--创建数据表
CREATE TABLE teacher(
tno NUMBER(4) PRIMARY KEY,
tname VARCHAR2(10),
tage NUMBER(3),
tdate DATE
);
INSERT INTO teacher VALUES(1001,‘X老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1002,‘Y老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1003,‘Z老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1004,‘W老师’,100,SYSDATE);
INSERT INTO teacher VALUES(1004,‘C老师’,100,SYSDATE);
总结:
1、非空约束,使用NOT NULL实现,保证了指定字段插入的值不能为null
2、唯一约束,使用UNIQUE实现,保证指定字段的数据重复。
3、主键约束,使用PRIMARY KEY实现,保证了指定字段不能为null也不会重复,是非空与唯一的叠加。