SQL之数据定义

  • 数据定义
    • 基本表的定义、删除、修改
      • 定义基本表
      • 数据类型
      • 修改基本表
      • 删除表
    • 索引的建立与删除
      • 建立索引
      • 修改索引
      • 删除索引
    • 数据字典

数据定义

文章为个人读书总结笔记 发现错误以及如果有什么建议可以及时通知我哟!

  • SymbolMeaning( 符号含义
    • < > :
    • Angle brackets delimit character strings that are the names of syntactic elements, the non-terminal symbols of the SQL language
      • 解释:尖括号用于分隔字符串,这些字符串是语法元素的名称,即SQL语言的非终结符号
    • : := :
    • The definition operator. This is used in a production rule to separate the element defined by the rule from its definition.The element being defined appears to the left of the operator and the formula that defines the element appears to the right
      • 解释定义运算符。 这用于创建规则中,以将规则定义的元素与其定义分开。定义的元素显示在运算符的左侧,定义该元素的公式显示在右侧
    • [ ]
    • Square brackets indicate optional elements in a formula. The portion of the formula within the brackets may be explicitly specified or may be omitted
      • 解释:方括号表示公式中的可选元素。 括号内公式的部分可以明确指定 可以省略
    • { }
    • Braces group elements in a formula. The portion of the formula within the braces shall be explicitly specified
      • 解释:公式中的元素组合。括号内公式的部分应明确规定
    • |
    • The alternative operator. The vertical bar indicates that the portion of the formula following the bar is an alternative to the portion preceding the bar. If the vertical bar appears at a position where it is not enclosed in braces or square brackets, it specifies a complete alternative for the element defined by the production rule. If the vertical bar appears in a portion of a formula enclosed in braces or square brackets, it specifies alternatives for the contents of the innermost pair of such braces or brackets
      • 解释替代操作。 垂直条表示公式之后的公式部分是条之前的部分的替代。 如果垂直条出现在未用大括号或方括号括起来的位置,则它将为生产规则定义的元素指定一个完整的备选项。 如果竖线显示在用大括号或方括号括起来的公式的一部分中,则它指定了最内层的这对大括号或括号中的内容的替代方案
    • . . .
    • The ellipsis indicates that the element to which it applies in a formula may be repeated any number of times. If the ellipsis appears immediately after a closing brace “}”, then it applies to the portion of the formula enclosed between that closing brace and the corresponding opening brace “{“. If an ellipsis appears after any other element, then it applies only to that element
      • 解释:省略号表示它在公式中应用的元素可以重复任意次数。 如果省略号紧接在右括号“}”之后出现,则它适用于在该右大括号和相应的大括号“{”之间所包含的公式部分。 如果在任何其他元素之后出现省略号,则它仅适用于该元素
    • !!
      • 解释介绍普通的英文文本。 当BNF中没有表达一个语法元素的定义时使用它

基本表的定义、删除、修改

定义基本表

SQL语言使用CREATE TABLE 语句定义基本表

  • 格式

    CREATE    TABLE   <表名>(
      <列名><数据类型> [列级完整性约束]
      [,<列名><数据类型> [列级完整性约束]]
      ...
      [,<表级完整性约束条件>]
    );
  • 例子 :创建 ” 课程 “ 表 Course

    
    CREATE    TABLE   Course(
    Cno CHAR(4) PRIMARY KEY,
    Cname CHAR(40) NOT NULL,
    Cpno CHAR(4),
    Ccredit SMALLINT,
    FOREIGN KEY (Cpno) REFERENCES Course(Cno)
    );

数据类型

数据类型 含义
CHAR(n), CHARACTER(n) 长度为n的定长字符串
VARCHAR(n), CHARACTERVARYING(n) 最大长度为n的变长字符串
CLOB 字符串大对象
BLOB 二进制大对象
INT,INTEGER 4字节整数
SMALLINT 2字节整数
BIGINT 8字节整数
NUMERIC(p, d) p位数字组成且小数点后有d位数字
DECIMAL(p, d), DEC(p, d) 同NUMERIC
REAL 取决于机器的单精度浮点
DOUBLE PRECISION 取决于机器的双精度浮点
FLOAT(n) 可选精度浮点,精度至少为n位数字
BOOLEAN 逻辑布尔
DATE 日期,格式: YYYY-MM-DD
TIME 时间,格式: HH:MM:SS
TIMESTAMP 时间戳类型
INTERVAL 时间间隔类型

修改基本表

SQL语言使用ALTER TABLE语句来修改基本表

  • 格式

    ALTER TABLE   <表名>
    [ADD [COLUMN] <新列名><数据类型> [完整性约束]]
    [ADD <表级完整性约束>]
    [DROP [COLUMN] <列名> [CASCADE|RESTRICT]]
    [DROP CONSTRAINT<完整性约束名> [RESTRICT|CASCADE]]
    [ALTER COLUMN <列名><数据类型>];
    • ADD
      • 增加新列、新的列级完整性约束条件
      • 增加表级完整性约束条件
    • DROP COLUMN
      • 删除表中的列
        • CASCADE : 自动删除引用了该列的其他对象(例如:视图
        • RESTRICT : 如果被其他对象引用则拒绝删除
    • DROP CONSTRAINT
      • 删除指定的完整性约束
    • ALTER COLUMN
      • 修改原有列定义( 列名,数据类型
  • 例子

    • 向 S 表中加入 Time列,数据类型为DATE ( 注意:新加的列值全重置为空值
    ALTER TABLE S
        ADD Time DATE;  
    • 将Sage由字符型修改为整数
    ALTER TABLE S
        ALTER COLUMN Sage INT
    • 增加Course中的Cname属性必须取唯一值的约束条件
    ALTER TABLE Course
        ADD UNIQUE(Cname);

删除表

SQL语言使用DROP TABLE语句来删除

  • 格式

    DROP  TABLE   <表名> [RESTRICT|CASCADE];
    • RESTRICT
      • 如果此表被其他表引用,则拒绝删除
    • CASCADE
      • 依赖项一起被删除(例如:视图)
  • 例子:删除 Course表

    DROP  TABLE   Course CASCADE;

索引的建立与删除

建立索引

SQL语言使用CREATE INDEX建立索引

  • 格式

    CREATE    [UNIQUE] [CLUSTER] INDEX <索引名>
    ON    <表名>(
    <列名> [<次序>]
    [,<列名> [<次序>]]
    ...
    );
    • 表名
      • 想要建立索引的基本表的名字
        • 索引可以建立再该表的一列或者多列上面
    • 次序
      • 指定索引值的排序次序
      • 可选值:
        • ASC :升序
        • DESC:降序
        • 默认: ASC
    • UNIQUE
      • 此索引的每一个索引值只对应唯一的数据记录
    • CLUSTER
      • 聚族索引 (我以后会介绍)
  • 例子

    • 为S表建立唯一索引,按Sno升序
    CREATE UNIQUE INDEX Stu ON S(Sno);
    • 为C表建立唯一索引,按Cno升序
    CREATE UNIQUE INDEX Cou ON C(Cno);
    • 为SC表建立唯一索引,按Sno升序和按Cno降序
    CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC);

修改索引

SQL语言使用ALTER INDEX语句来修改索引

  • 格式 : 这边使用重命名语法

    ALTER INDEX <旧索引> RENAME TO <新索引名>;  
  • 例子 :将SC表中的SCno索引名修改为SCSno

    ALTER INDEX SCno RENAME TO SCSno;

删除索引

SQL语言使用DROP INDEX语句来删除索引

  • 格式

    DROP  INDEX <索引名>;
  • 例子:删除S表中的Stuname索引

    DROP INDEX Stuname;
  • 删除索引时,系统会同时从数据字典中删去有关索引的描述

数据字典

  • 定义:关系数据库管理系统内部的一组系统表
    • 记录了数据库中的所有定义信息
    • 信息:
      • 关系模式定义
      • 视图定义
      • 索引定义
      • 完整性约束定义
      • 用户操作权限
      • 统计信息
  • 一般性解释:执行SQL语句实际上就是在更新数据字典表中的相应信息

更多相关资料在 我的”SQL专栏” 中可以找到 !
如果文章对你有帮助的话 给我点个赞吧b( ̄▽ ̄)d !

你可能感兴趣的:(SQL)