第一章
数据模型三要素:数据结构,数据操纵,完整性约束
主要的数据模型:层次模型,网状模型,关系模型
完整性约束:实体完整性,参照完整性,用户定义完整性
数据库管理系统将具有一定结构的数据组成一个集合,它主要具有以下几个特点:
1. 数据的结构化 数据库中的数据并不是杂乱无章、毫不相干的,它们具有一定的组织结构,属于同一集合的数据具有相似的特征。
2. 数据的共享性 在一个单位的各个部门之间,存在着大量的重复信息。使用数据库的目的就是要统一管理这些信息,减少冗余度,使各个
部门共同享有相同的数据。
3. 数据的独立性 数据的独立性是指数据记录和数据管理软件之间的独立。数据及其结构应具有独立性,而不应该去改变应用程序。
4. 数据的完整性 数据的完整性是指保证数据库中数据的正确性。可能造成数据不正确的原因很多,数据库管理系统通过对数据性质进行检
查而管理它们。
5. 数据的灵活性 数据库管理系统不是把数据简单堆积,它在记录数据信息的基础上具有很多的管理功能,如输入、输出、查询、编辑修改
等。
6. 数据的安全性 根据用户的职责,不同级别的人对数据库具有不同的权限,数据库管理系统应该确保数据的安全性。
SQL命令基本分类:
1.数据定义语言DDL
2.数据操作语言DML
3.数据查询语言DQL
4.数据控制语言DCL
5.数据管理命令
6.事务控制命令
1.
CREATE TABLE/INDEX/VIEW
ALTER TABLE/INDEX
DROP TABLE/INDEX/VIEW
2.
INSERT
UPDATA
DELETE
3.
SELECT
4.
ALTER PASSWORD
GRANT(授予)
REVOKE
CREATE SYNONYM(同义字)
5.
START/STOP AUDIT(查账)
6.
COMMIT 保存数据库事务
ROLLBACK 回退
SAVEPOINT 设置标记点用于回退
SET TRANSACTION 设置事务名称
字段:
例如“ID”“姓”“名”
记录:
一行数据
列:
特定字段的全部信息
主键:
例如“ID”
第二章 数据定义
DECIMAL(p,s) //小数
例如DECIMAL(4,2),则形如99.99
1.DATE
2.TIME
3.DATETIME
4.TIMESTAMP
CREATE TYPE PERSON AS OBJECT
(NAME VARCHAR(30),
SSN VARCHAR(9));
CREATE TABLE EMP_PAY
(EMPLOYEE PERSON,
SLKARY DECIMAL(10,2),
HIRE_DATA DATE);
默认约束和检查约束还有数据类型都可以实现域完整性
下面是详细资料~
完整性包括
1. 实体完整性
a) 数据行不能存在重复
2. 域完整性
a) 实现了对输入到特定列的数值的限制
3. 引用完整性
a) 要求子表中的相关项必须在主表中存在
b) 如果建立了主表和子表的关系,则:
i. 子表中的相关项目的数据,在主表中必须存在;
ii. 主表中相关项的数据更改了,则子表对应的数据项也应当随之更改;
iii. 在删除子表之前,不能够删除主表;
4. 自定义完整性
实际上,SQL Server创建表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)保证的过程。创建表包括选择字段名称、数据类型、定义是否为空、设置默认值、主键和外键关系、检查约束等。表中没有合适的列作为主键,可以创建标识列。
SQL Server中存在五种约束:
• 约束的目的:确保表中数据的完整型
• 常用的约束类型:
– 主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空
– 唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。
– 检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束
– 默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男”
– 外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列
CREATE DOMAIN MONEY_D AS NUMBER(8.2);
ALTER DOMAIN MONEY_D
ADD CONSTRANT MONEY_CON1
CHECK (VALUE > 5);
一个numeric类型的标度(scale)是小数部分的位数,精度(precision)是全部数据位的数目
第三章
数据库对象:
表、视图、簇、序列、索引、异名
规划:
与某个用户名相关的数据库对象集合,例如该用户创建的数据库对象
USER1.EMPLOYEE_TBL
ID SERIAL //则ID自动增加
INSERT INTO TEST_INCREMENT(TESR_NAME)
VALUES(‘FRED‘),(‘JOE‘),(‘MIKE‘),(‘TED‘);
CREATE TABLE AS SELECT //MySQL
SELECT INTO //MSQLS
create table products2 as select * from products1;
select * into products2 from products1;
drop table products1;
主键约束:
CREATE TABLE EMPLOYEE
(ID CHAR(9) NOT NULL PRIMARY KEY,
NAME VARCHAR(40) NOT NULL UNIQUE, //唯一性约束
...
PAGER INTERGER(10) NULL);
//PRIMARY KEY (ID) );
//ALTER TABLE EMPLOYEE ADD CONSTRAINT PK PRIMARY KEY (ID, NAME);
外键约束:
CREATE TABLE PAYMENT
(PID CHAR(9) NOT NULL,
...
CONSTRANT FK FOREIGN KEY (PID) REFERENCES EMPLOYEE (ID) );
//父表子表关系,引用完整性
//ALTER TABLE PAYMENT ADD CONSTRANT FK FOREIGN KEY (PID) REFERENCES EMPLOYEE (ID);
检查约束:
...
CONSTRAINT CHK CHECK (ZIP = ‘10000‘) );
ALTER TABLE EMPLOYEE DROP CONSTRAINT PK;
ALTER TABLE EMPLOYEE MODIFY MIDDLE_NAME VARCHAR(20), NOT NULL
ALTER TABLE EMPLOYEE ADD COLUMN EMPID INT AUTO_INCREMENT;
第四章
规格化:
把原始刷数据分解为表,去除冗余数据的过程
第一规格形式:
把原始数据分解到表中
第二规格形式:
把对主键仅有部分依赖的数据提取到另一个表里
第三规格形式:
删除表里不依赖主键的数据(例如职位描述)
第五章 数据操作
INSERT INTO PRODUCTS VALUES (‘1123‘,‘LEATHER‘,24,99);
第六章 管理数据库事务