数据库管理系统在Web中极其重要,我们会把数据放在数据库(database)。而在数据库中可能会有一张或多张表,表中的列都具有相应的数据类型,每一列都表示一种属性,表中的行是一个记录。表中的每一行都应该有主键。主键的满足条件为:
1 任意两行都不具有相同的主键值 |
2 每一行都必须具有一个主键(主键列不允许NULL值) |
3 主键列中的值不允许修改或者更新 |
4 主键不能重用(如果有一行从表中删除,它的主键不能赋给以后的新行) |
同时,主键通常定义在表的一列上,但并不是必须这样做。也可以使用多个列作为主键。但是多给列每个列都必须满足上面的条件。
事务机制可以确保数据一致性。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
- 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
表名:students
id | name |
1 | dog_1 |
2 | dog_2 |
1 索引数据
SELECT name FROM students;(数据库语句必须以分号分隔) 返回该列所有的内容
SELECT name id FROM students; --返回 name 和 id 两个列的内容
SELECT * FROM students; --返回所有的列
SELECT DISTINCT name FROM students; --只返回不同的列(不是所有列)
SELECT TOP 5 name FROM students; --限制输出结果
SELECT name FORM students LIMIT 5 OFFSET 5; --第五行之后的5行
2 排序检索数据
SELECT name FORM students ORDER BY name
SELECT id name FROM students ORDER 2 3 --按列位置排序
SELECT id ,name FROM students ORDER BY id DESC, name
3 过滤数据
SELECT id name FROM students WHERE BETWEEN 5 and 10
#空值检查
SELECT id FROM students is NULL;
4 高级过滤数据
视图
重用SQL语句 |
简化复杂的SQL操作,在编写查询后,可以方便的重用它而不必知道其基本的查询细节 |
使用表的一部分而不是整个表 |
保护数据。可以授予用户访问表的特定部分的权限,而不是整个表的访问权限。 更改数据格式和表示 。视图可返回与底层表的表示和格式不同的数据。 |
视图的规则和限制
与表一样,视图必须唯一命名 |
对于可以创建的视图数目没有限制 |
创建视图,必须具有足够的访问权限。这些权限通常是由数据库管理人员授予 |
视图可以嵌套,既可以利用从其他视图中检索数据的查询来构造视图 |
有些DBMS把视图作为只读的查询,这表示可以从视图检索数据,但是不能写回底层表。 |
视图不能索引,也不能有关联的触发器或默认值 |
很多DBMS禁止在视图查询中使用ORBER BY 字句 |
视图本身不包含数据,返回的数据是从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过的数据。因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时需要的所有检索。所以如果创建了复杂的视图或者嵌套了视图,性能可能会下降的很厉害。 |
ALTER TABLE | 用来更新现存表的模式 |
CREATE TABLE | 用来创建新的表 |
CREATE INDEX | 用来为一列或多列创建索引 |
CREATE VIEW | 用来创建一个或多个表的视图 |
DELETE | 用来从表中删除一行或者多行 |
DROP | 用来永久性地删除数据库对象 |
INSERT | 用来对表添加一个新行 |
INSERT SELECT | 用来将SELEC的结果插入表中 |
ROLLBACK | 用来撤销事务块 |
SELECT | 用来对一个或多个表中索引数据 |
UPDATE | 用来对表中的一行或多行进行更新 |
事务处理:使用事务处理来确保成批的SQL操作要么完全执行,要么不完全执行。来维护数据库的完整性。
事务(transaction) | 指一组SQL语句 |
回退 | 指撤销指定SQL语句过程 |
提交 | 指将未存储的SQL语句结果写入数据库表 |
保留点 | 指事务处理中设置临时占位符,可以对它发布回退 |