SQL语句整理(二) 数据定义语言DDL
前言:
这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点。
我的教材是人大王珊老师的《数据库系统概论》。
因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试后我也没有继续整理)。
1. 模式 SCHEMA
CREATE SCEMA <模式名> AUTHORIZATION <用户名>;
eg:
CREATE SCEMA"S-T" AUTHORIZATION WANG;
Note:
用户可以在定义模式的同时创建基本表、视图,定义授权:
CREATE SCHEMA<模式名> AUTHORIZATION <用户名> [<表定义子句>|
<视图定义子句>|<授权定义子句>];
eg:
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1
( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
DROP SCHEMA <模式名> <CASCADE|RESTRICT>;
eg:
DROP SCHEMA ZHANG CASCADE;
Note:
CASCADE --> 级联 --> 连带将模式中的数据库对象都删除
RESTRICT -> 限制 --> 有下属数据库对象时,不删除
2. 表 TABLE
CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件]
...
[,<表级约束条件>]);
eg:
CREATE TABLE Course
( Cno CHAR(4) PRIMARY KEY,
Cname CHAR(20) UNIQUE,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpn) REFERENCES Course(Cno)
);
Note:
1.PRIMARY KEY (Sno,Cno)
2.UNIQUE(Cname)
3.“主码”同时也可以是“外码”
4.“数据类型”见 P83
5.定义“表”所属“模式”:
显示给出模式名:
CREATE TABLE "S-T".Student(...);
显示当前搜索路径:
SHOW searched_path;
默认值:$user,PUBLIC
数据库管理员设置搜索路径:
SET searched_path TO "S-T",PUBLIC;
DROP TABLE <表名> <CASCADE|RESTRICT>;
Note:
1.CASCADE --> 级联 --> 连带将模式中的数据库对象都删除
RESTRICT -> 限制 --> 有下属数据库对象时,不删除
2.默认:RESTRICT
ALTER TABLE <表名>
[ ADD [COLUMN] <新列名> <数据类型> [完整性约束] ]
[ ADD <表级完整性约束> ]
[ DROP [COLUMN] <列明> <CASCADE|RESTRICT> ]
[ DROP CONSTRAINR <完整性约束名> [RESTRICT|CASCADE] ]
[ ALTER COLUMN <列名> <数据类型> ];
Note:
DROP [COLUMN] <列名> <CASCADE|RESTRICT> 中:
CASCADE --> 自动删除引用了该列的其它对象,如视图
RESTRICT -> 如果该列被其它对象引用,则不删除
3. 视图 VIEW
CREATE VIEW <视图名> [<列名>[,<列名>]...]
AS
<子查询>
[ WITH CHECK OPTION ];
eg:
CREATE VIEW IS_S1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Grade
FROM Student.SC
WHERE Sdept='IS'
AND Student.Sno=SC.sno
AND SC.Cno='1';
Note:
1.WITH CHECK OPTION --> 对视图进行数据操纵(UPDATE、INSERT、DELETE)
操作时要保证更新、插入、删除的行满足视图定义中<子查询>表达式
2.属性列名要么全指定,要么全省略
省略时默认由<子查询>中各个列的诸字段组成
以下3种情况必须显示指出视图的所有列名:
1) <子查询>中对应的列名是聚集函数或列表达式
2) 多表连接时,选出的视图字段在多个表中是同名字段
3) 需要在视图中为该列启用新的名字
DROP VIEW <视图名> [CASCADE];
eg:
DROP VIEW IS_S1 CASCADE;
Note:
CASCADE --> 级联 --> 将由该视图导出的所有视图都删除
SQL语句整理(二) 数据定义语言DDL的更多相关文章
- MySQL之数据定义语言(DDL)
写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...
- ODPS SQL <for 数据定义语言 DDL>
数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...
- <MySQL>入门三 数据定义语言 DDL
-- DDL 数据定义语言 /* 库和表的管理 一.库的管理:创建.修改.删除 二.表的管理:创建.修改.删除 创建:create 修改:alter 删除:drop */ 1.库的管理 -- 库的管理 ...
- 30441数据定义语言DDL
数据定义:指对数据库对象的定义.删除和修改操作. 数据库对象主要包括数据表.视图.索引等. 数据定义功能通过CREATE.ALTER.DROP语句来完成. 按照操作对象分类来介绍数据定义的SQL语法. ...
- SQLite基础-4.数据定义语言(DDL)
目录 一.创建数据库 1. 创建方式 2. 数据库命名规范 二. 创建表 1. 基本用法 2. 数据表命名规范 3. 字段命名规范 三. 删除表 一.创建数据库 1. 创建方式 在第二章中我们讲了如何 ...
- oracle 数据定义语言(DDL)语法
DDL语言包括数据库对象的创建(create).删除(drop)和修改(alter)的操作 1.创建表语法 create table table_name( column_name datatype ...
- 【MySQL笔记】数据定义语言DDL
1.创建基本表 create table <表名> (<列名><数据类型>[列级完整性约束条件] ...
- SQL语句汇总(二)——数据修改、数据查询
首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述. 添加新数据: INSERT INTO <表名> (<列名列表>) VALUES (<值列表>) ...
- mysql数据库-mysql数据定义语言DDL (Data Definition Language)归类(六)
0x01 创建数据库并指定字符集和排序规则 -- 三种实例写法 create database temptab2 character set utf8 collate utf8_general_ci; ...
随机推荐
- bzoj2705Longge的问题
题目链接 题意很简单 $$ans=\sum_{i=1}^{n}gcd(i,n)$$ 然后推一下式子,求一下欧拉函数就好了 细节是由于$BZOJ$的评测计时策略, 不能线性筛啊$……$ 必须每个数单独筛 ...
- 三,PHP中错误日志display_errors与error_reporting配置
1,display_errors display_errors 错误回显,一般常用语开发模式,但是很多应用在正式环境中也忘记了关闭此选项.错误回显可以暴露出非常多的敏感信息,为攻击者下一步攻击提供便利 ...
- UITableView定制左滑效果
UITableViewRowAction类 object defines a single action to present when the user swipes horizontally in ...
- react的一些思考
在做好第一个需求之后,我接到了一个react写的产品,这让我异常的兴奋,终于能写react了 开始做的时候整体框架已经搭建好了,这让我有点小失落,我还以为我要开始搭框架了呢,没事,搭的也挺好的. 有了 ...
- Python+selenium 模拟wap端页面操作
from selenium.webdriver.chrome.options import OptionsmobileEmulation = {'deviceName': 'iPhone X'}opt ...
- JAVA 多线程 杂谈
一:java创建线程的三种方式: 1.继承Thread类: 2.实现Runnable接口: 3.实现Callable接口:Callable接口重写的是 call() 方法.1-允许有返回值,2-允许抛 ...
- django 后台格式化数据库查询出的日期
在项目中,我遇到这样的情况,使用ajax获取查询出来的数据,而这些数据中某个字段是日期datetime格式,在模板中显示的样式很怪异.由于前端使用了js控件,也不能使用django的模板过滤器. 所以 ...
- Opencv ValueError: not enough values to unpack (expected 3, got 2)解决办法
问题背景 有些人在用我去年的毕设运行时(感谢QAQ),报错 Opencv ValueError: not enough values to unpack (expected 3, got 2) 当时就 ...
- 离线安装eclipse的maven插件包
离线安装eclipse的maven插件包 1.打开你本地的eclipse根目录,随便新建一个文件夹例如mavenPlugin,把maven离线插件包中两个文件夹复制到这个新建的这个文件夹里边 2.找到 ...
- SpringCloud---客户端负载均衡---Spring Cloud Ribbon
1.概述 1.1 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具: 基于Netflix Ribbon实现: 通过Spring Cloud的封装,可以轻松将面向服务 ...