数据库第三章总结

SQL语言概览

SQL标准符合度分为四个等级:

  • Entry leve SQL
  • Transitional SQL
  • Intermediate SQL
  • Full SQL

SQL-99、SQL-92支持四个等级的四个标准
没有DBMS实现全部SQL标准(出于安全性等考虑)

SQL语言分为

DDL:

  ——create table, alter table,drop table

  ——create index,drop index

  ——create view, drop view

  ——create trigg,drop trigger

  ……各种create

DML:

  ——selec …… from
  ——insert, delete, update

DCL:

  ——grant,revoke

 

SQL用语言数据定义

回忆:

  • super-key
  • candidate key
  • primary key

  SQL例子:

CREATE TABLE instructor (
    ID char(5),
    name varchar(20) not null,
    dept_name varchar(20),
    salary numeric(8,2)
    primary key (ID)
);

  PS: char 类型会自动补空格,varchar不会

    not null 不能位空

SQL的DDL不仅能定义一组个关系,还能够定义每个关系的信息,包括:

  • 关系模式
  • 属性的取值类型
  • 完整性约束
  • 关系维护的索引集合
  • 关系的安全性和权限信息
  • 关系在磁盘上的物理存储结构

 

SQL语言基本模式定义

SQL提供的基本类型:

 

  • char(n): 固定字符串长度
  • varchar(n): 可变字符串长度
  • int: 整型类型,等价于全程integer
  • smallint: 小整数类型
  • numeric(p,d): 定点数,精度用户指定。p为数字位数,d为小数位数
  • null: 每种类型都可以包含一个空值,可以声明不为空
  • float(n): 精度至少为n的浮点数
  • real, double precison:浮点和双精度
  • date: 日期,含年月日,如'2020-2-26'
  • time: 时间,含时分秒,如'00:00:00' or '00:00:00.00'
  • timestamp: 时间+日期(时间戳), 如'2020-2-26 00:00:00.00'

ps:不同DBS的数据类型的声明有所区别


基本模式定义:

用creat table命令定义SQL关系:

CREATE TABLE r(
    (
        A1 D1,
        A2 D2,
        ...
        An Dn,
        <完整性约束1>;
            ...
        <完整性约束k>
    )
);            

  其中, r是关系名,每个Ai是关系r模式中的一个属性名,Di是属性Ai的域

 

完整性约束:(少数介绍)


not null,一个属性上的not null表示该属性上不允许空值

primary key(A1,...,An),声明表示A1……An构成关系的主码
  主码属性必须唯一且非空,SQL_89中需要特别声明

foreign key(A1,...,An)creference, 声明 表示关系中任意元组
  在属性上(A1,...,An)上的取值必须对应关系s中某元组的主码属性上的取值

check(P), P 是谓词条件,检测P

 

例:声明ID为instructor的主码,并确保,salary的值非负 

CREATE TABLE instructor(
ID char(5),
name varchar(20) not null,
dept_name varchar(20),
salary numeric(8,2),
primary key(ID),
check(salary >= 0);
);

 

drop table:删除数据库中关于被去掉关系的所有信息

  DROP TABLE r; 

如  DROP TABLE instructor2; 

alter table:为已有关系增加属性

 ALTER TABLE r ADD A D; 

如   ALTER TABLE instructor2 ADD brithday date; 

ps:新添加的值都会被设为null

  这个命令还可以用于修改关系中的属性

如  ALTER TABLE instructor MODIFY (ID cahr(10)); 

posted @ 2020-02-26 17:07  秦_殇  阅读(366)  评论(0编辑  收藏  举报