一、标准的建表语法 CREATE TABLE 表名 (列名 数据类型 [默认 表达式],... ); 说明: 1.在创建新表时,指定的表名必须不存在,否则会出错 2.使用值: 当插入行时如果不给出值,dbms将自动采用默认值 dbms:数据库管理系统 null 0 0.0 3.在使用create语句创建基本表时,最初只是一个空的框架,用户可以使用insert命令把数据库插入表中 数据库表字段的数据类型 字符数据类型 CHAR:存储固定长度的字符串 VARCHAR2 :存储可变长度的字符串 数值数据类型 NUMBER:存储整数和浮点数,格式为NUMBER(p, s) 列名 NUMBER 列名 NUMBER (p) {整数} number (10) zhengshu 列名 NUMBER (p, s) {浮点数} number (5,3) 11.111 日期时间数据类型 DATE:存储日期和时间数据 TIMESTAMP:比DATE更精确 LOB数据类型 BLOB:存储二进制对象,如图像、音频和视频文件 CLOB:存储字符格式的大型对象 --创建表 CREATE TABLE STUDENT( SNO NUMBER(6), SNAME VARCHAR2(20), SEX VARCHAR2 (2), AGE NUMBER(3), ENTERDATE DATE, CLAZZ VARCHAR2 (10) ); --EMAIL VARCHAR2(20) SELECT * FROM STUDENT; --插入数据 INSERT INTO STUDENT VALUES(1001,'羽毛','男',-10,sysdate,'01级02班'); INSERT INTO STUDENT(sno,sex,age) VALUES(1001,'男',-100); --像已有表中添加一个列() ALTER TABLE STUDENT ADD ADDRESS VARCHAR2 (20); --以下代码要求表中没有数据,因为如果表中存在数据,那么已存在的数据列email讲使用null填充 ALTER TABLE STUDENT ADD EMAIL VARCHAR2(20) NOT NULL; --插入数据sno,sname,email INSERT INTO student(sno,sname) VALUES (110,'缺一个'); --将已有表中的列删除 column--列 table -表 ALTER TABLE STUDENT DROP COLUMN EMAIL; --将已有表中的列进行修改,默认只对新添加的数据起作用 modify ALTER TABLE STUDENT MODIFY (SEX VARCHAR2(4) DEFAULT '男'); --对已有表中的列名重命名 ALTER TABLE STUDENT RENAME COLUMN SNAME TO STU_NAME; --给表重命名 RENAME STUDENT TO STU ; SELECT * FROM STU; DROP TABLE STUDENT; DROP TABLE STU; --小结: --insert--> 向已有表中插入数据 -->操作数据 --add -->向表中添加列 -->操作的表结构 --update -->对已有表中的数据进行修改 --modify -->修改表中的列 --delete -->删除表中的数据 --drop -->删除表
二、表约束
数据完整性约束
1.表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系。
2.在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。
3.约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到约束作用。
完整性约束分类
域完整性约束(非空not null,检查check)字段约束
实体完整性约束(唯一unique,主键primary key) 行和行之间的约束
参照(引用)完整性约束(外键foreign key) 表和表之间的约束
主键约束 (primary key) PK_表名_字段名
要求主键类数据唯一,并且不允许为空,主键可以包含表的一列或多列,多列组成的主键称之为-复合主键
唯一约束(unique) UK_表名_字段名
要求该列值唯一,允许为空,而且null可以是多个
检查约束 (check) CK_表名_字段名
某列取值范围显示,格式限制等,如年龄拘束,邮件限制 email like '%@%' --length (pwd) =6
非空约束(not null) NN_表名_字段名
某列内容(值)不为空
外键约束(foreign key) FK_表名_字段名
用于两个表之间建立关系,需要制定引用主表的那列,外键同创是用来约束两个表之间的数据关系
定义外键的那张表称之为子表,另一张表称之为主表,在表的创建过程中,应该先创建主表,后创建子表
--主键,唯一,非空,检查 CREATE TABLE STUDENT( STUNO NUMBER(4) CONSTRAINT PK_STU_STUNO PRIMARY KEY , SNAME VARCHAR2(10) CONSTRAINT NN_STU_SNAME NOT NULL, SEX VARCHAR2(3) DEFAULT '男', AGE NUMBER(3) CONSTRAINT CK_STU_AGE CHECK (AGE BETWEEN 18 AND 30), EMAIL VARCHAR2(20) CONSTRAINT CK_STU_EMAIL CHECK (EMAIL LIKE '%@%'), PSWD VARCHAR2(10) CONSTRAINT CK_STU_PSWD CHECK (LENGTH(PSWD)>=6), CLAZZ NUMBER(2) ); SELECT * FROM STUDENT; DROP TABLE STUDENT; --查看约束 SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'STUDENT'; --性别没有限定值 ALTER TABLE STUDENT ADD CONSTRAINT CK_STU_SEX CHECK (SEX = '男' OR SEX = '女'); --邮箱没有唯一约束 ALTER TABLE STUDENT ADD CONSTRAINT UN_STU_EMAIL UNIQUE (EMAIL); --测试数据 INSERT INTO STUDENT VALUES (1002,'BACK',DEFAULT,30,'abcd@','1111111',1); --写约束的时候,写上约束名,一旦执行插入数据时,能很快的定位 --添加班级的外键 ALTER TABLE STUDENT ADD CONSTRAINT FK_STUDENT_CLASSID FOREIGN KEY (CLAZZ) REFERENCES GRADE (GREADEID);