数据定义

  • 数据定义
  • 一.模式的定义与删除
    • 1.定义模式
    • 2.删除模式
  • 二.基本表的定义、删除与修改
    • 1.定义基本表
    • 2.数据类型
    • 3.模式与表
    • 2.修改基本表
    • 5.删除基本表
  • 三.索引的建立与删除
    • 1.建立索引
    • 2.查看索引
    • 3.修改索引
    • 4.删除索引
  • 四.数据字典

数据定义

1.SQL的数据定义功能:模式定义、表定义、视图和索引的定义。
2.现代关系数据库管理系统提供了一个层次化的数据库对象命名机制。
①一个关系数据库管理系统的实例(Instance)中可以建立多个数据库。

②一个数据库中可以建立多个模式。

③一个模式下通常包括多个表、视图和索引等数据库对象。

一.模式的定义与删除

1.定义模式

CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句> | <视图定义子句> | <授权定义子句>]

(1)定义模式实际上定义了一个命名空间

(2)在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。

(3)在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。

(4)例子:为用户ZHANG创建一个模式TEST,并且在其中定义一个表TAB1。

CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(COL1 SMALLINT,COL2 INT,COL2 CHAR(20));

2.删除模式

DROP SCHEMA <模式名> <CASCADE | RESTRICT>

(1)CASCADE(级联)
删除模式的同时把该模式中所有的数据库对象全部删除。

(2)RESTRICT(限制)
①如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。

②仅当该模式中没有任何下属的对象时才能执行。

(3)例子:删除模式ZHANG

DROP SCHEMA ZHANG CASCADE;  //删除模式ZHANG,同时该模式中定义的表TAB1也被删除。

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

1.定义基本表

CREATE TABLE <表名>
(
<列名> <数据类型> [列级完整性约束条件],

[,<表级完整性约束条件>]
);

(1)表名:所要定义的基本表的名字。

(2)列名:组成该表的各个属性(列)。

(3)列级完整性约束条件:涉及相应属性列的完整性约束条件。(主键、外键等条件)

(4)表级完整性约束条件:涉及一个或多个属性列的完整性约束条件。

(5)如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

(6)例子:建立一个课程表Course

CREATE TABLE Course
(
Cno CHAR(4) PRIMARY KEY,   //主键
Cname CHAR(40),
Cpno CHAR(4),
FOREIGN KEY (Cpno) REFERENCES Course(Cno) //设置外键为先修课程Cpno
);

2.数据类型

3.模式与表

(1)每一个基本表都属于某一个模式。
(2)一个模式包含多个基本表。
(3)定义基本表所属模式
①方法1:在表名中明显地给出模式名。

CREATE TABLE “S-T” .Student(…);
CREATE TABLE “S-T”.Course(…);

②方法2:在创建模式语句中同时创建表。
如上述创建模式的例子所示。

③方法3:设置所属的模式。

(4)创建基本表时,若没有指定模式,系统根据搜索路径来确定该对象所属的模式。

(5)关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名。

(6)若搜索路径中的模式名都不存在,系统将给出错误。
①显示当前的搜索路径:

SHOW search_path;

②搜索路径的当前默认值是:

$user,PUBLIC

(7)数据库管理员用户可以设置搜索路径,然后定义基本表

SET search_path TO “S-T”,PUBLIC;
CREATE TABLE Student(…);

2.修改基本表

ALTER TABLE <表名>
[ADD [COLUMN] <新列名> <数据类型> <完整性约束>]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE | RESTRICT]]
[DROP CONSTRAINT <完整性约束名> [RESTRICT | CASCADE]]
[ALTER COLUMN <列名> <数据类型>];

(1)表名:要修改的基本表。

(2)ADD子句:用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。

(3)DROP COLUMN 子句:用于删除表中的列。
①如果指定了CASCADE短语,则自动删除引用了该列的其他对象。
②如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列。

(4)DROP CONSTRAINT子句:用于删除指定的完整性约束条件。

(5)ALTER COLUMN子句:用于修改原有的列定义,包括修改列名和数据类型。

5.删除基本表

DROP TABLE <表名> [RESTRICT | CASCADE];

(1)RESTRICT:删除表是有限制的。
①要删除的表不能被其他表的约束所引用。
②若存在依赖该表的对象,则此表不能被删除。

(2)CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除。

三.索引的建立与删除

(1)建立索引的目的:加快查询速度(当数据量特别大的时候)。

(2)关系数据库管理系统中常见索引:
①顺序文件上的索引;
②B+树索引;
③散列(hash)索引;
④位图索引。

(3)特点
①B+树索引具有动态平衡的优点;
②HASH索引具有查找速度快的特点。

(4)索引
①谁可以创建索引
数据库管理员或表的属主(即建立表的人)

②谁维护索引
关系数据库管理系统自动完成

③使用索引
关系数据库管理系统自动选择合适的索引作为存取路径,用户不必也不能显示地选择索引。

1.建立索引

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名> (<列名> [<次序>] [,<列名>[<次序>]]…);

(1)<表名>:要建索引的基本表的名字;

(2)索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔;

(3)<次序>:指定索引值的排列次序,升序:ASC,降序:DESC,默认升序;

(4)UNIQUE:此索引的每一个索引值只对应唯一的数据记录;

(5)CLUSTER:表示要建立的索引是聚簇索引。

聚簇:一组表有一些共同的列,或相关的数据存储在同一个数据块上,在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起;一旦找到第一个键值,具有后续索引值毗连在一起而不必进一步搜索,避免了大范围扫描。

(6)例子:
为学生-课程数据库中的Student,Course,SC三个表建立索引。Student表按学号升序建立唯一索引,Course表按课程号升序建立唯一索引,SC表按学号升序和课程号降序建立唯一索引。

CREATE UNIQUE INDEX Stusno ON Student (Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

2.查看索引

SHOW INDEX FROM 表名;

3.修改索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>

4.删除索引

DROP INDEX <索引名>;

删除索引时,系统会从数据字典中删去有关该索引的描述。

四.数据字典

(1)数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息:

①关系模式定义;
②视图定义;
③索引定义;
④完整性约束定义;
⑤各类用户对数据库的操作权限;
⑥统计信息等。

(2)关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。

SQL语言 --- 数据定义相关推荐

  1. 【ClickHouse SQL 极简教程】ClickHouse SQL之数据定义语言 DDL

    1.1. ClickHouse SQL之数据定义语言 DDL  本节介绍 ClickHouse 中进行数据库.表结构的定义和管理. 1.1.1. 概述 在SQL中,数据定义语言( DDL ) 用来创建 ...

  2. 数据库 ----- 实验二:SQL的数据定义和数据更新

    实验二 SQL的数据定义和数据更新 [实验目的和要求] 1.掌握SQL Server Management Studio中以SQL 命令方式和以向导方式操作表和数据的操作: 2.掌握SQL 的数据定义 ...

  3. 【数据库系统】第一部分 数据库基础(3) 关系数据库标准语言SQL(3) 数据定义

    本文属于「数据库系统」系列文章之一,这一系列着重于「数据库系统知识的学习与实践」.由于文章内容随时可能发生更新变动,欢迎关注和收藏数据库系统系列文章汇总目录一文以作备忘.需要特别说明的是,为了透彻理解 ...

  4. mysql实验6语言结构_实验六 SQL语言数据查询语言DQL.pdf

    实验六 SQL语言数据查询语言DQL 实验六 SQL 语言数据查询语言DQL 一.实验目的 数据查询语言指对数据库中的数据查询.统计.分组.排序等操作.查询语 句可以分为简单查询.连接查询.嵌套查询和 ...

  5. mysql对所有列的数据进行修改6_MySQL的SQL语句 - 数据定义语句(6)- ALTER TABLE 语句 (3)...

    添加和删除列 使用ADD向表中添加新列,使用DROP删除现有列.DROP col_name是对标准SQL的MySQL扩展. 若要在表行的特定位置添加列,请使用FIRST col_name 或者 AFT ...

  6. SQL的数据定义功能及语句:

    定义各种数据库的"对象" 模式定义 表定义 视图定义 索引定义 SQL的数据定义语句 操作对象 操作方式 创建 删除 修改   模式 CREATE SCHEMA DROP  SCH ...

  7. MySQL→数据库、启动连接数据库、SQL→DDL数据定义语言及数据类型、DML数据操作语言、DQL数据查询语言、数据库约束→主键、唯一、非空、默认、外键、SQL、三大范式及一多关系、视图、内外连接

    MySQL连接退出命令 mysql –uroot -proot mysql –h127.0.0.1 –uroot -proot mysql --host=localhost --user=root - ...

  8. 交互式SQL(数据定义部分)

    在Oracle Database XE 的SQL命令窗口中,使用SQL语言定义Student表,该表的结构描述如下: 表3.1 Student表结构 列名 数据类型 是否为空 约束 Sno CHAR( ...

  9. SQL语言---数据的查询

    文章目录 前言 一.SQL语言的数据查询 1.SELECT语句格式 (1)定义格式 (2)WHERE子句中条件表达式F的语法申明 (3)SELECT语句的语法格式 2.单表查询 (1)什么是单表查询? ...

  10. SQL语言 --- 数据查询

    数据查询 一.单表查询(查询仅涉及一个表) 1.选择表中的若干列 2.选择表中的若干元组 3.ORDER BY子句 4.聚集函数 5.GROUP BY子句 二.连接查询 1.等值与非等值连接查询 2. ...

最新文章

  1. 今日头条反爬措施形同虚设,论多平台协同在安全方面的重要性
  2. 数据结构--KMP算法总结
  3. 测试可编程波形发生器 AD9833
  4. Android CameraSurfaceView在SurfaceView上实现拍照,视频录像
  5. Linux 文件和目录的属性及权限
  6. TMS320C6678上电配置和FPGA复位DSP
  7. HH SaaS电商系统的仓储系统设计
  8. SpringBoot指南(三)——静态资源、欢迎页、Favicon、默认页面
  9. SpringBoot-@ControllerAdvice 拦截异常并统一处理
  10. 我爱Java系列---【1.Vue的快速入门案例】
  11. 基于SSM实现的演唱会网上订票系统-JAVA【数据库设计、源码、开题报告】
  12. 2021-10-19 资源收藏
  13. java重载和重写的区别_Java重载和重写的区别
  14. 『HDU 5745』La Vie en rose
  15. mysql临时表在哪找_MySQL 中的临时表
  16. Linux利用脏牛漏洞提权
  17. 七夕情人节教你如何告白~html+css+js制作唯美满天星3D相册(含音乐)程序员520表白必备
  18. jemeter做微信公众号压测
  19. 误删除系统libselinux.so.1之后
  20. AutoCAD.net-错误消息大全

热门文章

  1. Android原生TTS的基本使用以及配合中文语音包实现中文TTS
  2. 防火墙——NAT穿越(IPSec3)
  3. matlab画一个点电荷电场线,matlab画点电荷电场线
  4. Eclipse 模板使用
  5. 手游修改 wpe封包 fiddler抓包 逆向破解 gg修改 哪种最厉害?
  6. java简单入门教程_史上最快速最简单的java入门教程
  7. 颠覆QQ,干掉微信?腾讯内测“朋友”,会是下一个国民社交APP吗
  8. macOS 锐捷校园网解决方案
  9. cc2530按键流水灯c语言程序,CC2530流水灯程序
  10. vb html转义字符,在VB中用什么转义字符表示双引号