哎呦 SQL1啦

本文详细介绍了SQL的数据定义语言,包括创建和管理数据库、数据库模式、表的创建与删除、添加和修改列、创建索引以及维护数据完整性的方法。重点讲解了CREATESCHEMA、CREATEDATABASE、ALTERTABLE、CREATEINDEX等关键命令及其用法。
摘要由CSDN通过智能技术生成

目录

SQL的数据定义语言

创建数据库

删除数据库

创建表

删除表

修改表

索引

创建索引

删除索引


SQL的数据定义语言

关系和其他数据库对象是存在于环境中的

每个环境由一个或多个目录catalog组成,每个目录包含一个模式schema集合

模式是数据库对象的命名集合,模式中的对象可以是表、视图、域、索引,模式中的所有对象有相同的所有者

(看不懂

具体语法:

创建数据库
CREATE SCHEMA database-name AUTHORIZATION user-identifier;

创建一个名为database-name的数据库模式,并将其授权给指定的user-identifier用户。

eg:CREATE SCHEMA library_db AUTHORIZATION guoqing;

  1. CREATE DATABASE

    • CREATE DATABASE 用于创建一个新的数据库。
    • 数据库是一个包含多个表、视图、存储过程等数据库对象的容器。
    • 通常情况下,一个数据库会包含相关联的表和数据,以满足特定应用程序或业务需求。
  2. CREATE SCHEMA

    • CREATE SCHEMA 用于创建一个新的数据库模式。
    • 模式是数据库对象的逻辑集合,例如表、视图、存储过程等,它们彼此之间可能具有一定的关联。
    • 模式通常用于组织和管理数据库对象,可以将具有类似功能或用途的对象放置在同一个模式下。
    • 一个数据库可以包含多个模式,每个模式可以有不同的所有者和权限设置。

主要区别在于:

  • CREATE DATABASE 创建整个数据库,包含了所有的数据库对象。
  • CREATE SCHEMA 创建数据库内的逻辑组织单元,用于组织和管理数据库对象。
删除数据库
DROP SCHEMA database-name [RESTRICT | CASCADE];

RESTRICT - 如果模式内没有对象,则删除该模式

CASCADE - 删除模式中所有对象的内容和定义

根据具体需求选择

eg:DROP SCHEMA library RESTRICT;

创建表
CREATE TABLE TableName
(
    {columnName dataType [NOT NULL][UNIQUE][DEFAULT defaultOption[CHECK(searchConditin)]}[,...]
    [PRIMARY KEY(listOfColumns)],
    {[UNIQUE(listOfColumns)][,...]}
    {[FOREIGN KEY(listOfFKColumns)REFERENCES ParentTableName[(listOfCKColumns)],[ON UPDATE referentialAction][ON DELETE referentialAction]][,...]}
    {[CHECK(searchCondition)][,...]}
);

创建名为TableName的表

  • {columnName dataType [NOT NULL][UNIQUE][DEFAULT defaultOption][CHECK(searchConditin)]}[,...]: 这部分定义了表的列。每个列由列名(columnName)和数据类型(dataType)组成。选择性地为每列指定约束,比如NOT NULL表示该列不允许为空,UNIQUE表示该列中的值必须唯一,DEFAULT defaultOption表示当未指定值时,该列将采用默认值,CHECK(searchConditin)表示该列的值必须满足指定的条件。

然后是主键、唯一约束、外键以及表级别的检查约束:

  • [PRIMARY KEY(listOfColumns)]: 这部分定义了表的主键。listOfColumns是一个列名列表,指定了作为主键的列。主键列必须定义为NOT NULL
  • {[UNIQUE(listOfColumns)][,...]}: 这部分定义了表的唯一约束,确保列中的值在表中是唯一的。可以指定多个唯一约束。
  • {[FOREIGN KEY(listOfFKColumns) REFERENCES ParentTableName[(listOfCKColumns)] [ON UPDATE referentialAction] [ON DELETE referentialAction]][,...]}: 这部分定义了外键关系。它将当前表的列作为外键与另一个表的主键列关联起来。你可以指定外键的更新和删除动作,比如ON UPDATEON DELETE
  • {[CHECK(searchCondition)][,...]}: 这部分定义了表级别的检查约束,用于确保表中的数据满足指定的条件。

eg:定义选课表SC:

  CREATE TABLE  SC
  (
    S# CHAR(8) NOT NULL,
    C# CHAR(8) NOT NULL,
    G     SMALLINT,
    PRIMARY KEY(S#,C#),
    FOREIGN KEY (S#) REFERENCES S(S#),
    FOREIGN KEY (C#) REFERENCES C(C#)
  );
删除表
DROP TABLE TableName [RESTRICT|CASCADE];
  • RESTRICT: 在删除表之前,会检查是否有其他对象依赖于该表,如果有依赖关系存在,则会阻止删除操作,保持数据库的完整性。
  • CASCADE: 会自动删除与该表相关联的所有依赖对象,然后再删除该表。
修改表
ALTER TABLE TableName
[ADD NewColumnName dataType {NULL}]
[DROP 完整性约束条件]
[MODIFY columnName dataType];

ADD 向表中添加新列,和新的完整性约束条件

DROP 删除指定的完整性约束条件

MODIFY 修改指定列的数据类型

索引
创建索引
CREATE [UNIQUE] [CLUSTER] INDEX 〈索引名〉
    ON <表名>(<列名> [<次序>][,<列名>[<次序>]] …);
  • CREATE INDEX: 这部分是SQL语句的开始部分,指示要创建一个索引。
  • [UNIQUE]: 这是一个可选项,用于指定索引是否是唯一的。如果指定了UNIQUE,则表明每个索引值只对应唯一的数据记录。

唯一索引只能建立在键(主键、候选键)上?

Sql新标准不主张使用索引,系统自动在主键上建立索引

唯一索引可以有多个,但索引列的值必须唯一,索引列的值允许有空值

  • [CLUSTER]: 这也是一个可选项,用于指定索引是否是集群/聚簇索引。即索引项的顺序与表中记录的物理顺序一致;一个基本表最多只能建立一个聚簇索引。
  • 〈索引名〉: 这是要创建的索引的名称。需要将〈索引名〉替换为你想要创建的实际索引名。
  • ON <表名>: 这部分指定了要在哪个表上创建索引。需要将<表名>替换为你想要创建索引的实际表名。
  • (<列名> [<次序>][,<列名>[<次序>]] …): 这是指定索引包含哪些列的部分。你需要列出要在索引中包含的列名,并可以选择指定每列的排序顺序。

eg:在学生表S中按S#升序建 唯一索引

CREATE UNIQUE INDEX S_S# ON S(S#);

在SC中按S#升序和C#降序建唯一索引

CREATE UNIQUE INDEX SC_S#C#
    ON SC(S# ASC,C# DESC);

删除索引
DROP INDEX <索引名>;

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值