SQL 数据定义

本文介绍如何定义模式、基本表和索引。

一、模式的定义和删除

1.什么是模式

定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。

2.定义模式

1
create schema 模式名 authorization 用户名;

如果没有指定模式名,那么模式名隐含为用户名

3.删除模式

1
drop schema 模式名 cascade/restrict ;

其中 cascade 和 restrict 二者必选其一,

选择了 cascade (级联),表示在删除模式时将该模式包含的数据库对象一并删除;

选择了 restrict (限制),表示如果模式中包含数据库对象,则拒绝删除请求。

4.MySQL 中的数据库

(1) schema 和 database

在 MySQL 中, schema 和 database 在物理上是等效的。可以在 MySQL 中用 schma 替换 database 。

MySQL :: MySQL 8.0 Reference Manual :: MySQL Glossary

schema

Conceptually, a schema is a set of interrelated database objects, such as tables, table columns, data types of the columns, indexes, foreign keys, and so on. These objects are connected through SQL syntax, because the columns make up the tables, the foreign keys refer to tables and columns, and so on. Ideally, they are also connected logically, working together as part of a unified application or flexible framework. For example, the INFORMATION_SCHEMA and performance_schema databases use “schema” in their names to emphasize the close relationships between the tables and columns they contain.

In MySQL, physically, a schema is synonymous with a database. You can substitute the keyword SCHEMA instead of DATABASE in MySQL SQL syntax, for example using CREATE SCHEMA instead of CREATE DATABASE.

Some other database products draw a distinction. For example, in the Oracle Database product, a schema represents only a part of a database: the tables and other objects owned by a single user.

See Also database, INFORMATION_SCHEMA, Performance Schema.

(2) 创建数据库

1
2
3
create database 数据库名;

create schema 数据库名;

(3) 删除数据库

1
2
3
drop database 数据库名;

drop schema 数据库名;

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

1.定义基本表

1
2
3
4
5
create table 表名(
属性名 数据类型 列级完整性约束条件,
属性名 数据类型 列级完整性约束条件,
表级完整性约束条件
);

建表的同时还可以定义与该表有关的约束条件,当用户操作表中数据时,由关系数据库管理系统自动检查。

2.数据类型

在 SQL 中,域的概念用数据结构来实现,定义表的各个属性时需要指明其数据类型和长度。不同的关系库数据系统中支持的数据类型不完全相同。

3.模式与表

每一个基本包都属于某一个模式,一个模式包含多个基本表。在定义基本表时可以用一下三种方法定义它属于的模式:

  • 直接给出基本表

    例如:

    1
    create table "模式".表名(···);
  • 在创建模式语句同时创建表

    例如:

    1
    2
    create schema 模式名 authorization 用户名
    create table 表名(···);
  • 设置所属的模式

4.修改基本表

(1) 语句格式

随着应用环境和应用需求的改变,有时需要修改已建好的基本表。 SQL 语言用 ALTER TABLE 语句修改基本表,其一般格式为:

1
alter table 表名 修改内容;

(2) 修改内容

  • ADD 语句用于增加新列、新的列级完整性约束条件、新的表级完整性约束条件
  • DROP COLUMN 用于删除表中的列,有级联和限制两种选项
  • DROP CONSTRAINT 用于删除表中的完整性约束条件,同样的,有级联和限制两种选项
  • ALTER COLUMN 用于修改原有的列定义,包括列名和数据类型

5.删除基本表

1
drop table 表名 cascade/restrict ;

三、索引的建立与删除

1.什么是索引

当表的数据量比较大时,查询操作会比较耗时,建立索引是加快查询速度的有效手段。索引类似于”指路牌”,能够帮忙快速定位到需要查询的内容。用户可以根据应用环境在基本表上建立一个或多个索引,以加快查找速度。索引虽然能够加速数据库查询,但需要占用一定的存储空间,并且需要在基本表更新时进行相应的维护。因此会加重数据库负担,需要根据实际需求有选择地创建。

索引有多种类型,包括顺序文件上的索引、B+ 树索引、散列索引、位图索引等。但索引是数据库的内部实现技术,属于内模式的范畴,由数据库管理系统自动选择合适的索引。

2.建立索引

1
2
3
4
create [可选参数] index 索引名 on 表名 (
属性名 可选次序,
属性名 可选次序,
);

3.可选参数

包含两个值:

  • unique:表示此索引的每一个值都只对应唯一的数据记录
  • cluster:表示要建立的索引是聚簇索引

4.可选次序

可以通过参数选择指定索引值的排列次序:

  • asc:升序(默认)
  • desc:降序

5.索引更名

1
alter index 索引名 rename to 新索引名;

6.删除索引

索引已经建立就由系统使用和维护,不需用户干预。建立索引是为了减少查询操作的时间,但不必要的索引反而会拖慢系统的速度。

1
drop index 索引名;

四、数据字典

数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束、各类用户对数据库的操作权限、统计信息等。

参考

  • 数据库系统概论