Orcale_05 DDL(数据定义语言)

 DDL(数据定义语言)     

表的操作:新建表,修改表,删除表,主键,约束

表:是orcal常见对象之一

orcale对象:表,索引,视图,序列,同义词...

一、新建表

表的命名 

  • 必须以字母开头,长度在 30个字符之内
  • 可以包含的字符:字母,数字,下划线,#,$
  • 两个单词之间一般用下划线连接
  • 表名不可以在同一用户下重复
  • 表名不可以是关键字
  • 对大小写不敏感,不区分大小写
  • 如果强制的区分大小写,可以使用""进行包裹

语法:
create table 表名(
       列1  数据类型 【默认值】 【约束】,
       列2  数据类型 【默认值】 【约束】,
       列3  数据类型 【默认值】 【约束】
)

--案例:创建一个学生表(学号【主键】,姓名,年龄,入学时间,学费)
create table studentNew(
       sno varchar2(10) primary key,--设置为主键表示该字段非空唯一
       sname varchar2(20),
       sage number(3),
       sdate date,
       smoney number(7,2)
)
--插入
insert into studentNew values (01,'xiaojiang',20,to_date('2019-06-06','yyyy-mm-dd'),19000);
insert into studentNew values (02,'xiaowang',21,to_date('2019-06-06','yyyy-mm-dd'),20000);
insert into studentNew values (03,'wanghong',19,to_date('2017-09-07','yyyy-mm-dd'),8000);
insert into studentNew values (04,'jiangyan',20,to_date('2018-06-04','yyyy-mm-dd'),3000);
insert into studentNew values (05,'tiantian',20,to_date('2018-06-04','yyyy-mm-dd'),3000);
insert into studentNew values (09,'jiangyan',20,to_date('2018-06-04','yyyy-mm-dd'),3000);
--修改数据
update studentNew set sage=18 where sname = 'tiantian';
--删除数据
delete from studentNew where sno=09;

drop table studentNew;--删除表

二、修改表

(1)添加新字段(无论表中是否有数据都可以执行该操作)

alter table 表名

add(字段名    数据类型(m) [default  默认值])

(2)修改字段类型

  • 已有数据的情况下长度不能小于当前数据的长度
  • 已有数据的情况下类型不能乱改
--修改表
--1.添加新字段(无论表中是否有数据都可以执行该操作)
alter table studentNew
add(sgender varchar2(3) default '男');--它不能控制位置,只能在最后面

--2.修改字段类型
--已有数据的情况下长度不能小于当前数据的长度
alter table studentNew
modify (sname varchar2(20));
--已有数据的情况下类型不能乱改
alter table studentNew
modify (sname number(20));---不可以

--修改列名
alter table studentNew  rename column sgender to ssex;

(3) 修改列

alter table 表名

modify(字段名 数据类型(m))

(4)修改列名

alter table 表名 rename column 列名 to 新列名


--修改列名
alter table studentNew  rename column sgender to ssex;

(5)删除字段(列)

alter table 表名 drop(字段名)

--3.删除字段
alter table studentNew
drop (smoney);

(6)通过子查询建表

语法:

create table 表名

as 子查询

注意:子查询中若有表达式,必须使用别名

--通过子查询建表
create table emp_copy
as
select * from emp;

select * from emp_copy;
select * from emp_copy2;
--子查询中有表达式,必须使用别名
create table emp_copy2
as
select empno,ename,job,sal* 12 年薪,deptno from emp;

(7)使用小写字符进行定义表名

--使用小写字符进行定义表
create table "user"(
   u_id number(5),
   "u_name" varchar2(50)
)

(8)表的重命名


--表的重命名
rename emp_copy2 to emp_copy02;

(9)斩断表

truncate  table 表名

l类似于delete from 表名

不同点在于trunctae table 表名不可以回滚


--斩断表
--清空表内数据,不可以回滚
语法:
truncate table 表名
leisiyu delete from 表名
不同点在于TRUNCATE TABLE 表名不可回滚(rollback)
select * from emp_copy;
delete from emp_copy;

truncate table emp_copy;

(10)关系表

表与表之间有一定的关联

  • 主表(被引用的表)
  • 从表(引用主表的数据)
  • 主键(不可重复,不为空,一张表中一般只有一个,主键所在的表是主键(相对的))
  • 外键(必须为另一个表的主键,并加以引用,外键所在的表是从表)

表与表的关联关系

  • 一对一:一个表中的一条记录匹配另一个表的一条记录
  • 一对多:一个表中的一条记录匹配另一个表中的多条记录
  • 多对多:一个表中的多条记录匹配另一个表的多条记录

往往是多个一对多组成的

三、表的设计

遵从三大范式

  • 第一范式(1NF):任何列不可分割,每个列是表中的最小单元
  • 第二范式(2NF):在第一范式的基础上,任何列都必须依赖于主键存在,一张表值描述一个实体
  • 第三范式  (3NF)    :在第二范式基础上,要求每一个不得简介的依赖于主键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值