sql 两大类 DDL数据定义语言 和DCL数据控制语言
SQL分为五大类:
DDL:数据定义语言 DCL:数据控制语言 DML:数据的操纵语言 DTL:数据事务语言 DQL:数据查询语言。
DDL (date definition language):create,drop,alter,rename to 创建表,删除表,alter对列的修改 对列中约束的修改 ,修改列名 alter table 表名 rename column 原列名 to 新列名 。(对表和列的操作)
创建表:定义列(列名), 数据类型,添加约束
数据类型:
数字类型 : number (数字位数) (数字总位数,小数位数)
字符型 : char(字符长度) 规定的字符长度 不够空格填满 varchar2(字符长度) 不定长 最长字符长度
日期类型 : Date 年月日时分秒
Time 时分秒
Timestamp 年月日时分秒,还有小时位,如1.2秒
插入日期格式' 03-5月-1990' 或者 to_date('年月日','yyyy-mm-dd')
大数据类型:clob character large object 大字符型对象,最大可存4G
blob binary large object 大二进制对象,最大可存4G (图片,视频,音频,转换 成2进制存取)
DCL: 数据控制语言
约束 constraint
作用:约束表格中是数据,相对于数据类型而言,用来进一步限定表中的数据,使得添加到表中的数据 都是合法有效的,符合业务需求的数据,不会出现无效数据;
Oracle中的5种约束类型
primary key PK 含义:主键约束,非空唯一(表中最多只能含有一个主键约束)
not null NN 含义:非空
unique UK 含义:唯一
check CK 含义:自定义约束(往往用来定义业务的约束,如分数不能为负)
foreign key FK 含义:外键约束(表示此列的值是引用自己的或其他表的主键)
注意:能够被外键所引用的列,其本身也必须是主键约束或唯一性约束
创建表格的第一种方法:
语法:
create table 表名(
列名 数据类型(默认值) 约束,
列名 数据类型(默认值) 约束,
列名 数据类型(默认值) 约束
);
添加约束名的语法:
constraint 约束名 约束类型;
创建表的第二种方法:
2.【重点】表级语法添加——先定义列,然后在添加约束
--创建账户表(tbl_account,id,accountNo非空唯一,realName,password六位数/默认值000000,balance不能小于0)
create table tbl_account (
id number(6),
accountNo number(6) not null,
realName varchar2(26) not null ,
password char(6) default '000000',
balance number(10,2),
constraints tbl_account_id_pk i primary key(id),
constraints tbl_account_accountNo_nn unique (accountNo),
constraints tbl_account_balance_ck check (balance>0)
);
注意:not null不支持表级语法,只能支持列级语法添加。但是也可以采用check 模拟非空
6.补充:创建表格的第二种方法(根据已经存在的某张表创建一张新表格):
--复制某张表中的指定列,构建一张新的表格(拷贝了数据)
create table 新表格名 as select 列,列,列from原表格;
例:创建一张表格,表格中只有s_emp表中的id,first_name,salary三列数据
create table new_emp as select id,first_name,salary from s_emp;
--复制了某张表格的指定列,构建一张新表格(不拷贝数据,取表结构)
create table 新表格名 as select 列,列,列from原表格 where 恒假条件;
例:创建一张表格,表格中只有s_emp表中的id,first_name,salary三列数据
create table new_emp as select id,first_name,salary from s_emp where 1=2;
注意:此处1=2表示恒false,则数据库不会被拷贝,只能得到一张空表
删除表格(注意约束控制)
基本语法:drop table 表名 [cascade constraints];
注意:cascade constraints表示连带约束一起删除(暴力删除);如果不添加,当有外键引用,不能删除。
修改表格:
--列相关
1.添加列
alter table 表名 add 列名 数据类型 [default默认值] 约束;
例:--给tbl_user表添加一列年龄
alter table tbl_user add age number(3) default 18 not null;
2.删除列
alter table 表名 drop column 列名;【注意关键字column】
例:删除tbl_user表中age列
alter table tbl_user drop column age;
3.修改列(修改列数据类型和约束)
alter table 表名 modify 原列名 新数据类型 新约束;
例:修改tbl_user表中password列为char(6)默认值‘000000’非空
alter table tbl_user modify password default'000000' not null;
4.修改列名
alter table 表名 rename column 原列名 to 新列名;
--修改tbl_user表中password列名为pwd
alter table tbl_user rename column password to pwd;
--约束相关
1.添加约束
alter table 表名 add constraint 约束名 约束类型(列名)
注意:如果是添加非空约束,则:
alter table 表名 add constraint 表名_列名_nn check (is not null)
注意:所有的DDL语句都是自动提交事务的,所以语句是不能回滚的
2.删除约束
alter table 表名 drop constraint 约束名;
3.使约束生效
alter table 表名 enable constraint 约束名
4.使约束失效
alter table 表名 disable constraint 约束名
sql 两大类 DDL数据定义语言 和DCL数据控制语言的更多相关文章
- ODPS SQL <for 数据定义语言 DDL>
数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...
- Hive 官方手册翻译 -- Hive DDL(数据定义语言)
Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...
- DDL数据定义语言
DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库.表.列等:创建.删除.修改 库,表结构.主要分为操作数据库的DDL和操 ...
- SQL语言学习-数据定义语言
Sql语言至今已经有6个版本.SQL查询语言包括了所有对数据的操作命令,这些操作可分为四类:数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)和嵌入式SQL语言. 数据定义语言(D ...
- mysql DDL数据定义语言
DDL数据定义语言 本节涉及MySQL关键字:create.alter(rename,add,chang,modify,drop).drop.delete.truncate等. -- 创建表:-- 数 ...
- CREATE TABLE——数据定义语言 (Data Definition Language, DDL)
Sql语句分为三大类: 数据定义语言,负责创建,修改,删除表,索引和视图等对象: 数据操作语言,负责数据库中数据的插入,查询,删除等操作: 数据控制语言,用来授予和撤销用户权限. 数据定义语言 (Da ...
- 【MySQL】DDL数据定义语言的基本用法create、drop和alter(增删改)
DDL 的基础语法 文章目录 DDL 的基础语法 对数据库进行定义 对数据表进行定义 创建表结构(数据表) 设计工具 修改表结构 小结 参考资料 简单复习一波 SQL必知必会 DDL 的英文全称是 D ...
- MySQL之数据定义语言(DDL)
写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...
- Oracle language types(语言种类) 表的相关操作 DDL数据定义语言
数据定义语言 Data Definition Language Statements(DDL)数据操纵语言 Data Manipulation Language(DML) Statements事务控制 ...
随机推荐
- Vue源码(一)
入口文件 src/core/instance/index.js 中可以看到 function Vue (options) { if (process.env.NODE_ENV !== 'product ...
- 数据库设计不推荐使用Bool类型
参见博文:http://blog.csdn.net/zhang_xinxiu/article/details/8521673
- WTL教程
很不错的教程 http://www.yakergong.net/wtl/
- Tkinter Entry
Python - Tkinter输入(Entry): 用于接受用户Entry小窗口部件单行文本字符串. 用于接受用户Entry小窗口部件单行文本字符串. 如果你想显示多行文本可以编辑,那么你应该使 ...
- Django学习---ajax
Ajax 应用场景:我们在输入表单进行提交的时候往往会判断输入的数据形式是否正确,这个时候如果我们点击了提交就会刷新页面.如果我们不想要它刷新页面,让它“悄悄的提交数据”,这个时候我们就需要使用aja ...
- 接触C# 反射
1.反射的概念详解[1] 1.1 理解C#中的反射 1.B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况.这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内 发 ...
- leetcode513
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- nginx root与alias区别
引用于文章https://blog.csdn.net/line_aijava/article/details/71473793 root: Sets the root directory for re ...
- jaegeropentracing的Java-client
关于jaegeropentracing的Java-client做记录如下: 1.依赖jar包 <!-- 以下jar包是jaegeropentracing依赖的日志jar -->slf4j- ...
- WPF——Sharder实现Logo走光动画
利用WPF的走光动画实现的走光动画. 资源 实例程序 示例代码 LogoEffect logoEffect = }; //要添加走光动画的物体 logo.Effect = logoEffect; D ...