2015.09.06 数据库笔记

第一章

数据模型三要素:数据结构,数据操纵,完整性约束
主要的数据模型:层次模型,网状模型,关系模型
完整性约束:实体完整性,参照完整性,用户定义完整性

数据库管理系统将具有一定结构的数据组成一个集合,它主要具有以下几个特点:
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);

第六章 管理数据库事务

时间: 2024-10-04 17:41:25

2015.09.06 数据库笔记的相关文章

2015.09.06 C++笔记

void Func(char str_arg[100]) { printf("%d\n", sizeof(str_arg)); } int main(void) { char str[] = "Hello"; printf("%d\n", sizeof(str)); printf("%d\n", strlen(str)); char *p = str; printf("%d\n", sizeof(p));

我关注的一周技术动态 2015.09.06

服务化和资源管理技术 1. Docker容器月刊(2015年8月) http://www.duokan.com/book/95298#rd 要点: 8月份docker 容器技术文章合集. 2. 苹果.彭博.Netflix的Mesos使用经验分享 https://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=207917628&idx=1&sn=36548b857da893fdd8b326803d8d6eff&scene=1&am

2015.09.05 组成原理笔记

一二.概论 三.系统总线 四.存储器 1. 存储器层次结构: 寄存器 缓存(Cache) 主存 辅存(磁盘,磁带) 2. 静态RAM[坑] 动态RAM[坑] ROM 只读存储器 PROM (一次性)可编程只读存储器 EPROM 可擦除可编程只读存储器 EEPROM 电擦除可编程只读存储器 Flash Memory 闪存 3. Cache地址映射[坑]

2015.09.05 网络笔记

IPv4地址 {<网络号><主机号>} 主机号全为零的表示网络本身,全为1的表示网络的广播地址 A类:1~126,网络号为第一个字节 B类:128~191,网络号为前两个字节 C类:192~223,网络号为前三个字节 D类:224~239,多播地址 私有IP地址(可以被LAN重复使用) A类:10 B类:172.16~172.31 D类:192.168

2015.09.08 C++笔记

#include <iostream> #include <string> using namespace std; int *f1(int *i) { ++(*i); return i; } int *f2(int *i) { return i; } void f3(int *i, int *j) { cout << *i <<" "<< *j <<endl; } int main(void) { //04.si

2015.09.04 数据结构笔记

插入排序:直接插入排序,希尔排序交换排序:冒泡排序,快速排序选择排序:简单选择排序,堆排序归并排序 所有简单排序都是稳定的,所有高级排序都是不稳定的,归并排序是稳定的:所有简单排序时间复杂度都是O(n2),所有高级排序和归并排序都是O(nlogn)所有简单排序和选择排序(如堆排序)辅助空间都是O(1),快速排序为O(logn),归并排序为O(n2)

我关注的一周技术动态 2015.09.27

分布式系统实践 1. 走向分布式 http://dcaoyuan.github.io/papers/pdfs/Scalability.pdf 要点: 这是台湾的一个作者写的为期30天的分布式系统设计学习小册子, 刚开始涵盖了分布式系统设计的基本理论, 包括partiton, replication和CAP理论, 后面以kafka和zookeeper为例, 将上述理论加以实例化介绍, 内容非常精简, 适合初学者阅读和学习. 2. 如何编写一个分布式数据库 http://mp.weixin.qq.c

【我的书】Unity Shader的书 — 目录(2015.09.04更新)

写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shader的艰难,在群里也见了很多人提出的问题.我觉得学习Shader还是一件有规律可循的事情,但问题是中文资料难觅,而大家又不愿意去看英文...这对我有什么好处呢?强迫我对知识进行梳理,对细节问题把握更清楚. 第二个原因你懂的. 关于本书的定位问题: 面向Unity Shader初学者,但要: 有一定的

mysql数据库笔记

虽然select语句可以一次性查出所有的数据,但受计算机屏幕大小的限制,每次只能看到部分行的内容,要看其它内容的时候就要用到滚动条.由于网络的限制,对于web应用来说,这种方式的效率非常低下,数据量比较大的时候几乎是不能使用的. 事实上,通常采用的方法是根据屏幕的大小,一次只查出部分行并显示,如果要看其它的内容,通常采用分页的方式. 那如何在SQL语句中查部分行的内容呢?就要用到limit关键字了. kingbase中可以用下面的语句: 1.查询第一行记录:  select * from 表名