数据定义语言(DDL)

模式的定义与删除

定义模式

模式定义语句如下:
create schema <模式名> authorization <用户名>;
如果没有指定<模式名>,那么<模式名>隐含为<用户名>

注意: 在使用该语句时,你必须是管理员权限,或者获得了数据库管理员授予的create schema的权限。
当然你也可以在创建模式的同时在这个模式定义中进一步创建基本表、视图、定义授权。
格式如下:
create schema <模式名> authorization <用户名>
[表定义子句]
[视图定义子句]
[授权定义子句];
例:给用户demo 创建一个模式 test,并定义一个基本表 TAB
create schema test authorization demo
create table TAB
(
	sname varchar(20),
	sage int
);

删除模式

drop schema <模式名> <cascade |  restrict>;
cascade(级联)restrict(限制)两者必选其一。
cascade表示在删除模式的同时把该模式中所有的数据库对象全部删除。
restrict 表示如果该模式中已经定义了下属的数据库对象(如:表、视图等),则拒绝该删除语句的执行。

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

详细文章,点下方跳转。
基本表的定义、删除和修改

索引的建立与删除

当表的数据量较大时,查询操作会比较耗时。
建立索引是加快查询速度的有效手段。
建立索引

格式如下:
create [unique] [cluster] index <索引名>
on <表名>(<列名> [<列序>] [,<列名>[<次序>]]......);

索引可以建立在该表的一列或多列上。
unique 表明此索引的每一个索引值只对应唯一的数据记录。
cluster表示要建立的索引是聚簇索引。

例:给student表按sname建立唯一索引。
create unique index Stusname on student(sname);

在这里插入图片描述
查看索引

格式如下:
show index from 表名;show keys from 表名;

在这里插入图片描述

在这里插入图片描述

修改索引

格式如下:
alter index <旧索引名> rename to <新索引名>;

例:将Student表的Stusname索引名改为Stusn。
alter index Stusname rename to Stusn;

【alter更改索引名】‘rename’ 附近有语法错误。
原因:

alter不能改变索引名,如若改变索引名就需要调用存储过程。

解决办法:

错误代码如下

alter index stusno rename to stusno3;
调用存储过程代码如下:

EXEC sp_rename @objname = 'student.stusno1', @newname = 'stusno2', @objtype = 'index'
/*或者如下*/
EXEC sp_rename '表名.旧索引名', '新索引名', 'index'
调用存储过程时会出现:

注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。

这时命令已经成功执行了。
转载于:https://www.cnblogs.com/Neavotre/p/11463366.html

删除索引

格式如下:
drop INDEX <索引名> on <表名>;
sql语句版本一直在更新,语法也一直在变化。

例:删除student表的Stusn索引。
drop index Stusname on student;

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页