11. sql DDL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11. sql DDL相关的知识,希望对你有一定的参考价值。
SQL分为5大类:
DDL:数据定义语言
DCL:数据控制语言
DML:数据操纵语言
DTL:数据事务语言
DQL:数据查询语言
1、DDL(data definition language):create,drop,alter,rename to
数据类型
①、数字类型,可以数学运算
number(4)代表整数,最大4位数,也就是9999
number(7,2)代表小数,总长度7位,小数2位,整数5位
②、字符型,可以拼接
char(20), 固定长度,不管里面多少内容,只要小于20,输出结果就是20个字符
varchar2(20),不固定长度,最长20个字符
在数据库中要用 ‘ ‘ 标注字符串
③、日期类型,可以加减运算
date 年月日时分秒
time 时分秒
timestamp 年月日时分秒,还有小时位,如1.2秒
④、大数据类型
clob character large object 大字符型对象,最大可存4G
blob binary large object 大二进制对象,最大可存4G
注意:大数据类型不支持查看结果
约束(constraint)
作用:约束表格中是数据,相对于数据类型而言,用来进一步限定表中的数据,使得添加到表中的数据都是合法有效的,符合业务需求的数据,不会出现无效数据
2、oracle中的5种约束
primary key PK 含义:主键
not null NN 含义:非空
unique UK 含义:唯一
check CK 含义:自定义约束,相当于添加条件
foreign key FK 含义:外键
3、创建表格
create table abc(
id number(4),
name varchar2(10),
title varchar2(10),
constraint abc_id_pk primary key(id),
constraint abc_name_nn check(name is not null),
constraint abc_title_nn check(title is not null)
);
create table bcd(
id number(4),
name varchar2(10),
manager_id number(4),
constraint bcd_id_pk primary key(id),
constraint bcd_name_nn check(name is not null),
constraint bcd_manager_id_fk foreign key(manager_id) references abc(id)
↑ ↑ ↑
外键的列 主键表 主键id
);
创建表格的另一种方法,就是把已有的表复制过来
--复制某张表中的指定列,构建一张新的表格(拷贝了数据)
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,则数据库不会被拷贝,只能得到一张空表
4、删除表格
drop table 表名
注意约束,外键
5、修改表格
--列相关
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 约束名
以上是关于11. sql DDL的主要内容,如果未能解决你的问题,请参考以下文章
写出Oracle 11g和SQL Server 2008 ent中备份数据库的ddl语句
Apache-Flink 1.11 无法在 Java Flink Streamming Job 中通过 SQL Function DDL 使用 Python UDF