创建表
当已经创建好用户并且赋予相关权限之后,以创建好的用户登录。
之前创建好的用户为 vashon
登录PLSQL之后界面如图所示:
在新建的窗口中我们就可以开始编写SQL,进行练习
创建一张新表
语法:
create table 表名{
列名 列的类型 [类的约束],
列名 列的类型 [类的约束],
......
};
语法解释:
列名是自己起的,不能为中文,
列的类型有:
分类 | 数据类型 | 描述 |
---|---|---|
字符类型 | CHAR | 固定长度的字符串 CHAR§:p表示输入的数据长度,如果输入没有达到那么长,长度还是按照设定的一致。超过则报错 |
VARCHAR2 | 可变长度的字符串 VARCHAR2(a):a表示定义的最大字符长度,变长表示如果没达到这么长,长度等于输入的长度。超过则报错。 | |
NCHAR/NVARCHAR2 | Unicode字符集类型 | |
LONG | 可变长字符串,最大长度2GB | |
NUMBER | 整数和浮点数,NUMBER(p, s):p表示有多少位数,s表示有多少位小数 | |
日期时间类型 | DATE | 日期和时间数据 |
TIMESTAMP | 秒值精确到小数点后6位 | |
LOB类型 | BLOB | 二进制对象 |
CLOB | 字符格式的大型对象 | |
BFILE | 将二进制数据存储操作系统文件中 |
列的约束:
1.not null 非空约束
2.primary key 主键约束
3.unique 唯一约束,值不能重复(空值除外)
4.check 条件约束,插入的数据必须满足某些条件
5.foreign key 外键
举例:为了之后练习,我在这直接创建好后面练习的表
CREATE TABLE teachers( -- 新建一张老师表
tno VARCHAR(3) PRIMARY KEY, -- 老师编号,主键约束
tname VARCHAR(4) NOT NULL, -- 老师姓名,非空约束
tsex VARCHAR(2) CHECK(tsex = '男' OR tsex = '女'), -- 老师性别,条件约束
tbirthday DATE, -- 老师生日,无约束
prof VARCHAR(6), -- 职位
depart VARCHAR(10) NOT NULL -- 学科
)
;
CREATE TABLE courses( -- 新建一张课程表
cno VARCHAR(5) PRIMARY KEY, -- 课程编号
cname VARCHAR(10) NOT NULL, -- 课程名字
tno VARCHAR(10) NOT NULL REFERENCES teachers(tno) -- 课程负责的老师,外键约束,关联老师的编号
)
;
create table students( -- 学生表
sno varchar(10) PRIMARY KEY, -- 学生编号
sname varchar(10) NOT NULL, -- 学生姓名
ssex varchar(10) CHECK(ssex = '男' OR ssex = '女'), -- 学生性别
sbirthday DATE,
sage NUMBER CHECK(sage BETWEEN 0 AND 150), -- 学生年龄
class VARCHAR(5)) -- 班级
;
CREATE TABLE scores( -- 新建一张成绩表用来存储学生成绩
sno VARCHAR(3) NOT NULL REFERENCES students(sno), -- 学生编号,外键关联(外键约束)
cno VARCHAR(5) NOT NULL REFERENCES courses(cno), -- 课程编号,外键关联
degree NUMERIC(10, 1) NOT NULL -- 学生成绩
)
;
约束其实内容很多,有时间整理一下。
修改表结构
当我们创建好表之后,还可以对表的结构进行修改。
-
修改列
-
添加新列
ALTER TABLE 表名 ADD(列名 列的类型 [类的约束]) ;
-
修改已有列的数据类型
ALTER TABLE 表名 MODIFY(列名 列的类型 [类的约束]);
-
删除列
ALTER TABLE 表名 DROP COLUMN 列名;
举例:向老师表添加微信号这一列,然后修改这列的属性,然后在删除这列。
--添加新列
ALTER TABLE teachers ADD(t_weiXin VARCHAR2(20));
--修改已有列的数据类型
ALTER TABLE teachers MODIFY(t_weiXin NUMBER(20));
--删除列
ALTER TABLE teachers DROP COLUMN t_weiXin;
注意:这三条语句不要一起跑,不然你是看不到列的变化的,查看列的属性变化可以选择左边对象窗口,选择tables文件夹,选择你修改的表,右键选择查看,然后选择列。点击窗口列表选择SQL窗口,可以回到你之前编辑的窗口。
-
添加约束
当你建表的时候没有为表中的列添加约束,建完表后可以再添加。
-
添加主键约束
alter table 表名 add constraint 主键约束名 primary key(主键约束列名);
-
添加唯一约束
alter table 表名 add constraint 唯一约束名 unique(唯一约束列名);
-
添加检查约束
alter table 表名 add constraint 唯一约束名 check(唯一约束列的约束条件);
-
添加外键约束
alter table course add constraint 外键约束名 foreign key(表里的列名) references 关联的表名(关联的表的字段名);
-