数据库基础

持久化方法: 

方法

优点

缺点

其他

 java序列化

 

没有事物功能;所有类有唯一的1个版本序列号,不同对象不同; 

 

 Extensible Markup Language(xml)

 

没有事物功能;搜索能力差; 

 

 数据库

 

 

 

 数据库发展过程 

 层次模型

 

 网状模型

 

 关系模型

 

 对象模型

 数据和数据的方法一起存储。db4o

 

 基本术语

实体——why——table——具有区分其他事物的属性并与其他实体有联系的事物

属性——column——描述数据(属性名称,数据类型)

关系——————

主键——业务主键(有业务含义)+逻辑主键(自动生成的)

外键——主表的外键来自从表的主键。

事物功能——对于对象,要么全部保存,要么全部不保存——在操作中,当操作整体完成后,才一起保存每步作的修改。

一个业务系统必须有对立的数据库

索引——在查询大量数据时,能够提高查询效率——索引提高select语句的速度,降低delete、update、insert语句执行速度——一个表可以有多个索引,一个索引作用于多个列。——主键/唯一约束自动创建的索引依附与约束。                                                                                                                                                                                                                                   

 

数据库里的数据类型

字符串:

char——定长——char最大长度为8KB.——查询效率高

varchar(x)——变长——没有初始长度——节约空间


数字:

int 4——整数;

decimal(p,s) 2~17——小数(进1法)

p——值的总位数,默认为18。s——小数点后的位数,默认为0。

布尔:

 


日期:

datetime 8   getdate()

表之间的关系类型——关系是双向的

 

关系类型

图例

概念

实例

 一对一

实线

 主表的一行与子表中0或1行相关

居民与身份证

 一对多

 虚线+箭头——将父类的主键,作为子类的外键。

 

 父亲与儿子

 多对多

 复合主键+自动编号——增加第3张表——中间表、关系表

 

 

 

 约束(constraint)——检查录入数据正确否

数据完整性=可靠性+准确性=实体完整性(unique)+域完整性+引用完整性(foreign key)+自定义完整性

NOT NULL

 不允许为空

 Name varchar(10) not null

 DEFAULT

 默认值通过方法、系统变量获得

 phoneNo varchar(10) default '不知电话'——字符串用单引号

 UNIQUE

给定列的所有值唯一;允许为空;可以有多个唯一约束 

 phoneNo varchar(10) unique

 PRIMARY KEY()

 不能为空;主键约束和其唯一的索引同时存在;

 phoneNo varchar(10), constraint MyPrimaryKey——指明约束的名字  primary key(Name)

 CHECK()

数据变更时起作用;单列可有多个该约束; 

 age int,constraint checkAge check(age between 10 and 100)

 IDENTITY(m,n)

 @@IDENTITY——得到当前记录的编号值;从m开始,每次自动+n,默认m=m=1;

 Friend_id int identity

 FOREIGN KEY() references()

 该约束连接的2个列是相同的数据类型;要删除被引用的表,先去掉引用关系。

 PhoneNo varchar(10) ,foreign key(friendID) references Friend(friendID)

 

 

 

操作关系型数据库和数据的3种语言

数据定义语言(DDL)——创建/删除数据库/表/索引、修改表(alter)、重命名表

create/drop database 名称;

create table 表名( 列名 数据类型 约束 );create table 工资表(自动编号 int identity primary key,学号 int,工资 decimal(10,2),日期 datetime);

*表的第3字段来自其它字段的组合(数据类型一样)——create   table   zz(a   int,b   int,c   as   a+b)

*临时表(#)#——当前连接临时表;##——全局临时表。

alter 对象对象名命令语句

alter table t_student add s_age int;——增加

alter table t_student alter column s_id int not null;——修改

alter table t_student drop constraint fk_stu_cla;——删除
alter table t_class add constraint pk_cla primary key(c_id);

truncate table 表名

create index idx_stu_age on 学生(年龄);
drop index idx_stu_age

*表的完整路径写法——数据库名.dbo 表名==数据库名.. 表名

数据操作语言(DML)——插入、更改、删除、查询

insert into 表名(字段名) values(数值)insert into 学生(学号,班级编号,姓名) values (1,101,'a');

update 表名 set KV对 where 条件update 学生表 set 分数=70 where 学号=100;


delete from 表名 where 条件delete from 班级 where 班号=100;

Drop

 内容和结构同时删除;不可回滚;该表的存储过程/函数将保留,但变为invalid.

Delete

 选择性删除内容(引用完整性);可回滚;

truncate

 只无差别删除内容,留结构等;不可回滚,无触发——物理删除;

 速度,一般来说: drop>; truncate >; delete

 

select * from 表名 select xs.学号,姓名,工资 from 学生表 xs,工资表 gz where xs.学号=gz.学号——将表在内存中合并为一个显示学号、姓名、工资的新表。

事物控制语言(tcl)

begin transaction——开启事物

1.commit:确认数据库的修改——以成功的方式结束当前事务

2.rollback:回滚让数据回到事务开始之前的位置

3.savepoint  segement  trigger——设置保存点,清除数据库修改的部分记录。

 

一个业务开始

  事务开始

  操作1 A帐户修改-500

  操作2 B帐户修改+500

  事务开始

一个业务结束

 

数据控制语言(DCL)——访问权限(grant<——>revoke)

 1.grant——权限授予。

2.revoke——权限回收

 

 

 

 

 

你可能感兴趣的:(数据结构,Tcl)