学习数据库系统概念,设计及应用心得

数据字典或系统目录:是一个系统数据库,它是描述数据库中数据信息的仓库,是关于数据的数据或元数据。
元组—>行或记录 属性—>列或字段 元组的数量—>基数 属性的数量—>度
关系—>表 域—>合法的值或原子的值的集合 键—>唯一标识符
每个元组中的每个属性的值是原子的,意味着每个值取自属性的域,并且不允许有多个或重复的值。

  • 超键:是一个属性或属性集合,唯一的标识了一个关系中的元组
  • 关系键:一个或多个关系属性连接后的集合,大多数关系理论限制关系键为最小的属性数量,并且不包含任何不必要的属性
    • 唯一性
    • 没有冗余:从属性集合中删除一个属性,则剩余的属性不再拥有唯一性性质
    • 有效性:键中没有属性值是空
  • 候选键:当有多个属性或属性组可以作为唯一标识符
  • 主键:是超键,从关系中挑选出来用于唯一标识元组的键
  • 外键:为一个或多个属性集合,在一个关系中匹配一些其他的关系(也可能是相同的关系)中的候选键

    关系代数

  • 集合论的操作

名字 符号 键盘形式
u UNION
n INTERSECT
- MINUS
乘积 X TIMES

- 专门的关系操作

名字 符号 键盘形式
投影 R[] R[]
选择 R where condition R where condition
连接 join
÷ divide by

笛卡尔集运算
也成叉积运算,是将一来自第一个命名表(关系)中的每个元组(行)与第二表中的每个元组进行连接。笛卡尔集将两个关系相乘定义第三个关系,第三个关系中包含这两个关系中的所有可能的元组对。因此,如果一个关系有K个元组和M个属性,另一个关系中有L个元组和N个属性,则笛卡尔积产生的关系有(N+M)个属性和(K*L)个元组。

SQL数据类型

数据类型 说明
CHAR(n) 或character(n) 固定长度的字符串
varchar(n) 可变长度的字符串,最大长度为n
integer或int 整数
float(p) 精度等于或大于p的浮点数
可变长度的字符串,最大长度为n
real 单精度浮点数
date 日期,用YYYY-MM-DD
time 时间,用HH:MM:SS

SQL运算符

运算符 说明
算术运算符
+,- 一元运算符,表示正,负
* 乘法
/
+
-
比较运算符 $1600
= 等于
!=,<> 不等于
< 小于
> 大于
=
大于等于
<= 小于等于
IN 等于任何一个成员
NOT IN 不等于任何一个成员
IS NULL 对空值进行检测
IS NOT NULL 对非空值进行检测
LIKE 当第一个表达式与第二个表达式的模式匹配是返回真
ALL 与列表中的全部值进行比较
ANY,SOME 与列表中的每个只进行比较
EXISTS 如果子查询至少返回一行为真
BETWEEN x AND y
=x并且<=y
逻辑运算符
AND
OR
NOT
集合运算符
UNION 从两个查询中返回去掉重复行后的所以行
UNION ALL 从两个查询中返回所以行
INTERSECT 返回两个查询所选择的所有行
MINUS 返回属于第一个查询而不属于第二个查询的行
聚集运算符
AVG 平均值
MIN 最小值
MAX 最大值
SUM 合计
COUNT 计数

SQL数据库定义语言(DDL)

  • CREATE TABLE
  • CREATE VIEW
  • CREATE INDEX
  • ALTER TABLE
  • DROP TABLE
  • DROP VIEW
  • DROP INDEX

SQL数据查询语言(DQL)

SELECT [ALL|DISTINCT] column-name
FROM table-name
[WHERE condition expression
GROUP BY column-name
HAVING condition expression
ORDER BY column-name]
SQL数据操纵语言(DML)

  • INSERT命令
    INSERT INTO table-name[(attribute-value)]
    VALUES (lists of values for row 1,
    lists of values for row 2,
    .
    .
    .
    lists of values for row n);

  • DELETE命令
    DELETE FROM table-name
    WHERE condition expression
    delete from table1只是清除所有的数据
    drop table1删除该表,包括表的结构和数据

  • UPDATE 命令
    UPDATE table-name
    SET target-value-list
    WHERE ondition expression

SQL数据控制语言(DCL )

  • GRANT

    DBA用此命令授权。
    GRANT privileges
    ON table-name/view-name
    TO user-id
    得到授权的用户可以将此权限授权给其他用户。

  • REVOKE
    DBA用此命令收回用户的权限
    REVOKE privileges
    ON table-name/view-name
    FROM user-id

    事务
    数据库处理的逻辑工作单元,包括一个或多个数据库访问操作。

    锁的粒度:数据库级,表级,页级,行级,属性级
    最简单的加锁模式是两种类型的锁:S共享锁(或读锁)和X排它锁(写锁)。
    如果:

  • 事务T在粒度G上有一个S锁,将允许事务W发出的S锁的请求。换句话说,读-读是可交换的

  • 事务T在粒度G上有一个S锁,将拒绝事务W发出的X锁的请求。换句话说,读-写是不可交换的
  • 事务T在粒度G上有一个X锁,将拒绝事务W发出的任何请求。换句话说,写是不可交换的。

锁的分类

  • 二元锁
    锁主要有两种状态:加锁的(或称为‘1’状态),不加锁的(或称为‘0’状态)。如果数据库表,页,元组(行)或属性(字段)的一个对象被一个事务加锁了,则任何其他的事务就不能访问了。产生的问题是:若两个事务都对表进行读操作,也不能访问,不能并发,效率低。
  • 共享/排他(或读/写)锁
    读加锁也称为共享锁,因为允许其他的事务读取这个数据项。写加锁也称为排他锁,因为只允许有一个事务持有数据项上的锁。

自主访问控制

  • 账户级别的权限分配:在账户级别的权限分配上,DBA为每一个账户指定独立于数据库关系(或表)的特定权限。

    • CREATE SCHEMA权限:创建模式
    • CREATE TABLE 权限:创建表
    • CREATE VIEW权限:创建视图
    • ALTER权限:添加或移除关系的 属性
    • DROP权限:删除关系或视图
    • MODIFY权限:删除,插入或更新元组
    • SELECT权限:使用SELECT查询语句从数据库中检索信息
  • 关系(或表)级别的权限分配:DBA控制访问数据库中关系或视图的权限。

    • R上的SELECT权限:查询或读取R中的元组
    • R上的MODIFY权限:修改(UPDATE,INSERT和DELETE)R中的元组
    • R上的REFERENCES权限:引用关系R
      eg:
      GRANT {ALL|privilege-list}
      ON {table-name[(column-comma-list)]|view-name[(column-comma-list)]}
      TO {PUBLIC|user-list}
      [WITH GRANT OPTION]
      ALL:说明将指定对象的所有操作权限都赋于指定用户
      privilege-list:权限列表
      ON:指明了对哪个对象的权限,该对象可以是表或视图
      column-comma-list:约束指定列的权限。如果没有指定,那么权限将覆盖整个的表和视图
      TO:用来指定被授权的用户
      PUBLIC:表示把权限授予系统中所有具有有效用户ID和口令的用户
      user-list:被授权用户列表
      WITH GRANT OPTION:说明被授权用户可以将指定的权限授予其他用户
      收回权限的例子:
      eg:
      REVOKE {ALL|privilege-list}
      ON {table-name[(column-comma-list)]|view-name[(column-comma-list)]}
      FROM {PUBLIC|user-list}
      级联授权,收回权限也是级联收回。

你可能感兴趣的:(学习数据库系统概念,设计及应用心得)