网站首页 > 技术文章 正文
一、模式的定义与删除
1.定义模式
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
如果没有指定<模式名>,那么<模式名>隐含为<用户名>
例如:定义一个学生—课程模式S-T
CREATE SCHEMA S-T AUTHORIZATION WANG;
为用户WANG定义了一个模式S-T.
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。
2.删除模式
DROP SCHEMA <模式名><CASCADE|RESTRICT>
其中CASCADE、RESTRICT两者必选一个
.选择CASCADE(级联),表示再删除模式的同时把该模式中所有的数据库对象全部一起删除
.选择RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象,则拒绝执行该删除语句。
例如:DROP SCHEMA S-T CASCADE;
该语句删除了模式S-T。同时把该模式下的表、视图等删除。
二、基本表的定义、删除与修改
1.定义基本表
CREATE TABLE <表名> (<列名> <数据类型> [列级约束条件], <列名> <数据类型> [列级约束条件], …… [<表级约束条件>]);
建立一个"课程"表Course。
CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY, /*列级完整性约束条件,Cno是主码*/ Cname CHAR(40), Cpno CHAR(4), /*Cpno的含义是先修课*/ credit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) /*表级约束性条件,Cpno是外码,被参照表是Course,被参照列是Cno*/ );
2.修改基本表
ALTER TABLE <表名> [ADD <新列名><数据类型>[完整性约束]] [DROP <完整性约束名>] [ALTER COLUMN <列名> <数据类型>];
向 Course表增加“开始时间”列,将其数据类型为日期型
ALTER TABLE Course ADD C_start DATE;
将Ccredit 分数的数据类型由短整数改为整数
ALTER TABLE Course ALTER COLUMN Ccredit INT ;
增加课程名称必须取唯一值得约束条件
ALTER TABLE Course ADD UNIQUE(Cname);
3.删除基本表
DROP TABLE <表名> [RESTRICT|CASCADE]
.选择RESTRICT :则该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束所引用(如 CHECK,FOREIGN KEY等约束,不能有视图,不能有触发器,不能 有存储过程或者函数等。如果存在这些依赖该表的对象,则此表不能被删除。
.选择CASCADE:则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,如视图,都被删除。
不同的数据库在遵循SQL标准的基础上具体实现细节和处理策略会与标准有差别:
?
三、索引的建立与删除
1、建立索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>],[,<列名>[<次序>]]……);
. 其中,<表名>是要建索引的基本表的名字。索引可以建立在该表的一列过着多列上,各列之间用逗号分隔。每个<列名>后面还可以用<次序>指定索引值的排列次 序,可选用ASC(升序)或DESC(降序),缺省值为ASC。
.UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。
.CLUSTER表示要建立的索引是聚簇索引。所谓的聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。
例如: CREATE CLUSTER INDEX Coursename ON Course(Cname);
将会在Course表的Cname列上建立一个聚簇索引,而且Course表中的记录将按照Cname值得升序存放。
2、删除索引
DROP INDEX <索引名>;
例如: 删除Course表的Coursename索引
DROP INDEX Coursename;
删除索引的同时,系统会同时从数据字典中删去有关该索引的描述
??
??
- 上一篇: 超详细!SQL语法速成就靠这篇了!(下)
- 下一篇: C语言数组入门到精通(c语言数组教程)
猜你喜欢
- 2024-09-23 当我们输入一条SQL查询语句时,发生了什么?
- 2024-09-23 超详细!SQL语法速成就靠这篇了!(下)
- 2024-09-23 sql语句(sql语句增删改查)
- 2024-09-23 数据库触发器(数据库触发器的创建和使用)
- 2024-09-23 SQL创建触发器(sql创建触发器禁止修改成绩)
- 2024-09-23 MySQL_08_触发器(mysql触发器的使用及语法)
- 2024-09-23 被低估的SQL(被低估的中国半导体龙头)
- 2024-09-23 都2021年了不会还有人不会用SQL吧
- 2024-09-23 Navicat工具中“清空表”与“截断表”区别,望文生义惹的祸
- 2024-09-23 Impala工作常用函数和诡异bug问题总结[1]
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 573℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 513℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 486℃启用MySQL查询缓存(mysql8.0查询缓存)
- 469℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 449℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 446℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (83)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)