数据库概论(3):数据定义和查询

数据定义

SQL的数据定义功能:定义各种数据库的“对象”

  • 模式定义
  • 表定义
  • 视图定义
  • 索引定义

在这里插入图片描述
现代关系数据库管理系统提供了一个层次化的数据库对象命名机制

  • 一个数据库中可以建立多个模式
  • 一个模式下通常包括多个表、视图和索引等数据库对象
  • 数据库->模式->表
    在这里插入图片描述

数据字典

数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有对象的定义信息以及一些统计信息:

  • 关系模式、表、视图、索引的定义
  • 完整性约束的定义
  • 各类用户对数据库的操作权限统计信息等

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

模式定义

创建模式

首先对某一个用户创建一个模式

CREATE SCHEMA TEST;

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

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

CREATE SCHEMA<模式名>AUTHORIZ,ATION<用户名>[表定义子句>水<视图定义子句><授权定义子句>]

删除模式

DROP SCHEMA<模式名 <CASCADE|RESTRICT>

CASCADE(级联)

  • 删除模式的同时把该模式中所有的数据库对象全部删除

RESTRICT(限制)

  • 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
  • 仅当该模式中没有任何下属的对象时才能执行。
DROP SCHEMA TEST RESTRICT;
DROP SCHEMA TEST CASCADE;

表定义

创建基本表

定义基本表
CREATE TABLE<表名> /基本表的名称*/

  • (<列名><数据类型>[<列级完整性约束条件>】组成该表的列l
  • [,<列名><数据类型>[<列级完整性约束条件>]]
  • [,<表级完整性约束条件>]);
    • <列级完整性约束条件>:涉及相应属性列的完整性约束条件
    • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
    • 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上。
CREATE TABLE student (
	m_name VARCHAR(8) PRIMARY KEY,
	m_age INT,
	m_sex INT
);

在这里插入图片描述

修改基本表

<表名>是要修改的基本表

  • ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
  • DROP COLUMN子句用于删除表中的列
    • 如果指定了CASCADE短语,则自动删除引用了该列的其他对象
    • 如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
  • DROP CONSTRAINT子句用于删除指定的完整性约束条件
  • ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类刑
ALTER TABLE student2 ADD time VARCHAR(6);

删除基本表

DROP TABLE<表名>[RESTRICTCASCADE];
RESTRICT:删除表是有限制的。

  • 欲删除的基本表不能被其他表的约束所引用如果存在依赖该表的对象,则此表不能被删除
    CASCADE:删除该表没有限制。
  • 在删除基本表的同时,相关的依赖对象一起删除
DROP TABLE student2 CASCADE;

索引定义

创建索引

CREATE [UNIQUE] [CLUSTER] INDEX <索引名>ON <表名>(<列名>[<次序>][,<列名>[<次序]].);
  • <表名>:要建索引的基本表的名字
  • 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔
  • <次序>:指定索引值的排列次序,升序: ASC,降序: DESC。缺省,值: ASC
  • UNIQUE:此索引的每一个索引值只对应唯一的数据记录的
  • CLUSTER:表示要建立的索引是聚簇索引

看题:
在这里插入图片描述

修改索引

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

删除索引

DROP INDEX <索引名>;
# 删除索引时,系统会从数据字典中删去有关该索引的描述。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实验报告一 数据定义简单查询实验 一 实验目的: 1 要求学生熟练掌握和使用SQL SQL Server企业管理器创建数据库 表索引和修改表结构 并学会使用SQL Server 查询分析器接收Transact SQL语句和进行结果分析 2 掌握查看 修改数据库和表的属性的方法 3 在建立好的数据库表中输入部分虚拟数据 学会如何实现基于单表的简单查询 二 实验环境: Microsoft Windows 2000操作系统 SQL Server 2000数据库管理系统标准版或企业版 三 实验内容 步骤 结果和实验过程中出现的问题: 1>内容: 1 使用SQL Server 2000企业管理器和查询分析器工具(即用Transact SQL语句)创建一个“图书读者数据库”(Book Reader DB); 2 使用企业管理器查看Book Reader DB的数据库属性 并进行修改 使之符合你的要求; 3 使用企业管理器和在查询分析器中用Transact SQL语句的两种方法建立图书 读者和借阅三个表 其结构为: 图书(书号 类别 出版社 作者 书名 定价 备注); 读者(编号 姓名 单位 性别 电话); 借阅(书号 读者编号 借阅日期) 要求:① 对每个属性选择合适的数据类型;② 定义每个表的主码 是否允许空值和默认值等列级数据约束;③ 对每个表的名字和表中属性的名字尽可能用英文符号标识 4 实现相关约束:①使用企业管理器来建立上述三个表的联系 即实现:借阅表与图书表之间 借阅表与读者表之间的外码约束;② 实现读者性别只能是“男”或“女”的约束 5 分别用企业管理器和查询分析器修改表的结构 在“图书”表中 增加两个字段 分别为“数量”和“购买日期” 在“借阅”表中增加一个“还书日期”字段 6 用企业管理器在上述三个表中输入部分虚拟数据 7 在查询分析器中实现基于单个表的查询 ① select from Book ② select from book where Bclass ’计算机’ ③ select count from book group by Bclass ④ select from Reader ⑤ select from Borrow ⑥ select rno count bno from Borrow group by rno order by rno ⑦ select bno count rno from Borrow group by bno order by bno 2>步骤和结果: 1 方法a:打开SQL Server 2000企业管理器 在SQL Server组中新建SQL Server注册 在数据库中选择新建数据库 文件名称为“Book Reader DB” 方法b:打开SQL Server 2000查询分析器工具 输入“create database Book Reader DB” 按F5执行 一个名为“Book Reader DB”的数据库就建好了 ">实验报告一 数据定义简单查询实验 一 实验目的: 1 要求学生熟练掌握和使用SQL SQL Server企业管理器创建数据库 表索引和修改表结构 并学会使用SQL Server 查询分析器接收Transact SQL语句和进行结果分析 2 掌握查看 修 [更多]
1、使用SQL Server 2000企业管理器和查询分析器工具(即用Transact-SQL语句)创建一个“图书读者数据库”(Book_Reader_DB); 2、使用企业管理器查看Book_Reader_DB的数据库属性,并进行修改,使之符合你的要求; 3、使用企业管理器和在查询分析器中用Transact-SQL语句的两种方法建立图书、读者和借阅三个表,其结构为: 图书(书号,类别,出版社,作者,书名,定价,备注); 读者(编号,姓名,单位,性别,电话); 借阅(书号,读者编号,借阅日期)。 要求:① 对每个属性选择合适的数据类型;② 定义每个表的主码、是否允许空值和默认值等列级数据约束;③ 对每个表的名字和表中属性的名字尽可能用英文符号标识。 4、实现相关约束:①使用企业管理器来建立上述三个表的联系,即实现:借阅表与图书表之间、借阅表与读者表之间的外码约束;② 实现读者性别只能是“男”或“女”的约束。 5、分别用企业管理器和查询分析器修改表的结构。在“图书”表中,增加两个字段,分别为“数量”和“购买日期”。在“借阅”表中增加一个“还书日期”字段。 6、用企业管理器在上述三个表中输入部分虚拟数据。 7、在查询分析器中实现基于但个表的查询 ① select * from Book ② select * from book where Bclass=’计算机’ ③ select count(*) from book group by Bclass ④ select * from Reader ⑤ select * from Borrow ⑥ select rno, count(bno) from Borrow group by rno order by rno ⑦ select bno, count(rno) from Borrow group by bno order by bno

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妖怪喜欢风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值