关系数据库
Posted 木白星枝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关系数据库相关的知识,希望对你有一定的参考价值。
一.关系数据库基本概念及SQL语言基础
1.关系数据库基本概念
(1)关系:整个二维表
(2)关系名:表格名称
(3)元组:行数据(记录)
(4)属性:列数据(字段)
(5)属性名:列名称(字段名)
(6)主键:唯一确定元组的属性组(关键字)
(7)域:属性的取值范围
(8)码:也称为码键。表中的某个属性组,它可以唯一确定一个元组。
2.SQL语言的分类
(1)DQL(数据查询语言)select
(2)DML(数据操作语言)insert,update,delete
(3)DDL(数据定义语言)create,alter,drop
(4)DCL(数据控制语言)grant,revoke
(5)TCL(事物控制语句)SAVEPOINT,ROLLBACK,SETTRANSACTION,COMMIT
3.
(1)域:域是一组具有相同数据类型的值的集合。
(2)候选码:若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。
(3) 主码:若一个关系有多个候选码,则选定其中一个为主码。
(4)候选码的各个属性称为主属性或码属性。不包含在任何候选码中的属性称为非主属性或非码属性。
(5)全码:关系模式的所有属性是这个关系模式的候选码,称为全码。
二.关系数据库基本概念及SQL语言基础
1.SQL的数据定义语句
操作对象 | 操作方式
| 创建 | 删除 | 修改
模式 | Create Schema |Drop Schema |
表 | Create Table |Drop Table |Alter Table
视图 | Create View |Drop View |
索引 | Create Index |Drop Index |Alter Index
2.常用数据类型
字符串
Char[(n)] :长度为n字符的定长字符串。
Varchar[(n)] :最长n字符的变长字符串,Oracle常Varchar2。
Nchar[(n)]:长度为n字符的定长区域字符串。
Nvarchar[(n)]:最长 n 字符的变长区域字符串,Oracle 使用Nvarchar2。
整数
Int[eger] :4字节整数。
Smallint :2字节整数。
Bigint :8字节整数。
Dec[imal](p, s):共p位十进制数字,其中小数点后s位。
精确数
Numeric(p, s) :至少p位十进制数字,其中小数点后至少s位。
Float(n) :指定了精度(n位二进制尾数)的浮点数。
近似数
Real :IEEE 754单精度浮点数,相当于Float(24)。
Double Precision :IEEE 754双精度浮点数,相当于Float(53)。
日期
Date :日期,含年、月、日,默认格式为yyyy-mm-dd。
Time :时间,含时、分、秒,默认格式为hh:mm:ss。
大对象
Clob :字符串大对象,MSSQL使用Varchar(Max)。
Blob :二进制大对象,MSSQL使用Varbinary(Max)。
二.定义基本表
1.定义基本表
(1)基本语法
Create Table 表名
( 列名 数据类型 [列级约束, ...],
...
[表级约束, ...]
);
样例1:
Create Table Student
( Sno Char(9) Primary Key, -- 列级约束, 主码
Sname Varchar(20) Not Null, -- 列级约束, 不能取空值
Sex Nchar(1) Default '男', -- 默认值
Age Smallint Check(Age Between 0 And 100),
-- 列级约束, 0 <= Age <= 100
Dept Varchar(20),
Check(Sex In('男', '女')) -- 表级约束, Sex只能是'男'或'女'
);
样例2:
Create Table Course
( Cno Smallint Primary Key,
Cname Varchar(40) Unique, -- 取值唯一
Pno Smallint, -- 先修课
Credit Smallint,
Foreign Key(Pno) References Course(Cno)
-- 表级约束, Pno是外码, 被参照表是Course, 被参照列是Cno
);
样例3:
Create Table Learn
( Sno Char(9),
Cno Smallint,
Grade Smallint Check(Grade Between 0 And 100),
-- 列级约束, 0 <= Grade <= 100
Primary Key(Sno, Cno),
-- 主码由两个属性构成, 必须定义为表级约束
Foreign Key(Sno) References Student(Sno),
-- 表级约束, Sno是外码, 被参照表是Student
Foreign Key(Cno) References Course(Cno)
-- 表级约束, Cno是外码, 被参照表是Course
);
(2)模式与表
定义基本表时如果需要指定它所属的模式, 通常使用的方法是在表名中显式给
模式名,即使用“模式名.表名”的形式指定表名。
Create Table "S-T".Student(...); -- Student所属的模式是S-T
2.删除基本表
Drop Table 表名;
3.修改基本表
基本语法
Alter Table 表名
[Add 列名 数据类型 [列级约束]] |
[Add [Constraint 约束名] 表级约束] |
[Alter Column 列名 数据类型] |
[Drop Column 列名] |
[Drop Constraint 约束名];
选项说明
? Add子句用于增加新列和相应的列级完整性约束条件。
? Add Constraint子句用于增加新的表级完整性约束条件,不指定约束名时需省略 Constraint。
? Alter Column (Oracle使用Modify) 子句主要用于修改现有列的数据类型。
? Drop Column子句用于删除指定的列。
? Drop Constraint子句用于删除指定的完整性约束条件。
样例:
(1)向Student表增加“入学时间”列,数据类型为日期。
Alter Table Student Add Entrance Date;
如果基本表已有数据,则新增加的列取空值。
(2)将年龄改为整数类型。
Alter Table Student Modify Age Int;
(3)增加学生姓名必须取唯一值的约束条件。
Alter Table Student Add Constraint Uq_Sname Unique(Sname);
(4)删除Student表中的“入学时间”列。
Alter Table Student Drop Column Entrance;
(5)删除学生姓名必须取唯一值的约束条件。
Alter Table Student Drop Constraint Uq_Sname;
4.完整性约束
(1)主键。主键约束的基本语法为
[Constraint 约束名] Primary Key -- 列级
[Constraint 约束名] Primary Key(列名, ...) -- 表级
(2)非空。非空约束的基本语法为
[Constraint 约束名] Not Null -- 列级
(3)唯一。表的一列或多列的组合内容必须唯一。唯一约束的基本语法为
[Constraint 约束名] Unique -- 列级
[Constraint 约束名] Unique(列名, ...) --表级
(4)检查。定义表的一列或多列的一个约束条件,使表的每一列内容必须满足
该条件(空值除外)。检查约束的基本语法为
[Constraint 约束名] Check(约束条件) -- 列级
[Constraint 约束名] Check(约束条件) -- 表级
(5)外键。外键约束的语法为(其中的表名是要引用的表名)
-- 第1种, 若子记录存在, 则拒绝删除主记录
[Constraint 约束名] Foreign Key(列名, ...)
References 表名(列名, ...)
-- 第2种, 若子记录存在, 则删除主记录时, 级联删除子记录
[Constraint 约束名] Foreign Key(列名, ...)
References 表名(列名, ...) On Delete Cascade
-- 第3种, 若子记录存在, 则删除主记录时, 子记录置空
[Constraint 约束名] Foreign Key(列名, ...)
References 表名(列名, ...) On Delete Set Null
以上是关于关系数据库的主要内容,如果未能解决你的问题,请参考以下文章