DDL数据定义语言

简介

常用的四种关键字为create,drop,alter,truncate。

1.create

create,可以用来创建,定义表,视图,序列,索引等等,这里拿建表举例

1.1 格式

有两种:
第一种:

create table 表名(    字段名 数据类型  [列约束类型],    字段名 数据类型  [列约束类型],    字段名 数据类型  [列约束类型],    字段名 数据类型  [列约束类型],    字段名 数据类型  [列约束类型]
);

第二种:

create table 表名(    字段名 数据类型  [列约束类型],   字段名 数据类型  [列约束类型],    字段名 数据类型  [列约束类型],    字段名 数据类型  [列约束类型],    [表级约束],    [表级约束]
);

中括号里面的内容表示可选,列级约束,表级约束都是对列中的值进行约束限制的

1.2 表的命名

对应表和列的名字:

  1. 必须是字母开头
  2. 必须是1-30个字符之间的长度
  3. 表名中只能出现字母、数字、_、#
  4. 不能和数据库中己有对象的名字重复
  5. 不能是数据库中的关键字

1.3 数据类型

  1. char 、varchar 、varchar2 都是存储字符串
    char 存储数据的长度是固定的。varchar2 存储数据的长度是可变的。
    char 效率比 varchar2效率高。 varchar是数据库标准类型,varchar2类型是oracle数据库中特有
    varchar2不能存空字符串,可以存null。varchar可以存空字符串
  2. number(p,s)
    p 表示最大位数(整数位+小数位), s表示保留的小数位(四舍五入),也可以为负数。
    例如,number(5,2)
    存进去123.456,取出来为123.46
    存进去12345.456,运行报错:值大于为此列指定的允许精度
    可以直接使用number,不加参数,描述没有默认没限制
  3. date日期类型
  4. blob 存二进制对象,例如视频,音频,图片等
  5. clob存储大文本,例如很多很多文字

1.4 约束

约束就是对值的要求,如值是否可以为空,是否是惟一,等等

1.4.1 常见约束

  1. 主键约束 PRIMARY KEY primary key
  2. 外键约束 FOREIGN KEY foreign key
  3. 唯一约束 UNIQUE unique
  4. 非空约束 NOT NULL not null
  5. check约束 CHECK check

1.4.2 约束分类:

(1)列级约束
不带约束建表

create table student(   id number primary key,  name varchar2(200) not null,   age number,   birthday date
);

带约束建表:

create table student(   id number primary key,   name varchar2(100) not null,   email varchar2(100) unique,   gender char(1) check(gender in('f','m')),   age number,birthday date
);

(2)表级约束

create table student(   id number,   name varchar2(20) not null,   age number default 20,   email varchar2(100),   gender char,   primary key(id),   unique(email),   check(gender in('f','m'))
);

注意,非空约束(not null),不能声明成表级约束

使用表级约束声明外键约束

create table t_customer(     id number primary key,   name varchar2(200) not null
);
create table t_order(   id number primary key,   content varchar2(200) not null,   customer_id number,   foreign key(customer_id) references t_customer(id)
);

使用表级约束 声明 联合唯一约束

create table student(   id number primary key,  class varchar2(50) not null,   name varchar2(50) not null,   unique(class,name)
);

联合唯一约束必须使用表级约束来声明

表级约束和列级约束对比:

  1. 表级约束和列级约束所写的位置不一样
  2. not null约束不能用表级约束来声明
  3. 表级约束和列级约束声明语法稍有所不同
  4. 如果要声明的约束为联合主键、联合外键、联合唯一的时候,就一定要用表级约束

1.4.3 给约束起名字

在创建约束的时候(行级、表级都可以),还可以给约束起一个名字,这时候就要使用关键字constraint
起名字的规律一般会是:表名_列名_约束类型,如果没有给约束起名字,那么系统也会给这个约束起一个默认的名字,将来我们可以根据之前给约束起好的名字,而找到这个约束,然后进行修改获取其他操作

例如:
(1)列级约束起名字

create table student(   id number constraint student_id_pk primary key,   name varchar2(100) constraint student_name_nn not null,   email varchar2(100) constraint student_email_un unique,   gender char(1) constraint student_gender_ck check(gender in('f','m')),   age number,   birthday date
);

(2)表级约束起名字

create table t_customer(     id number,   name varchar2(20) not null,   age number,   email varchar2(100),   gender char,   constraint cus_id_pk primary key(id),   constraint cus_email_un unique(email),   constraint cus_gender_ck check(gender in('f','m')));create table t_order(       id number,   price number not null,   customer_id number,   constraint order_cid_fk foreign key(customer_id) references t_customer(id)
);
建表时的一些特殊操作

(1)建立一张表和s_dept一模一样,s_dept的表结构和表中的数据全部复制过来

create table test1
as
select * from s_dept;

(2)建立一张表和s_dept一模一样,只拿来s_dept的表结构,没有数据

create table test2
as
select * from s_dept
where 1=2;

(3)建立一张表和s_dept一模一样,只复制表中某几个指定列的数据

create table test3
as
select id,last_name,salary from s_dept;

2、drop

作用:进行删除操作。

drop用来删除表,序列,视图,索引等,这里拿表举例。

drop from 表名;

没错,就这么简单

当两个表中存在外键约束时:

//这是一个顾客表
create table t_customer(   id number primary key,       name varchar2(200) not null
);//这是订单表
create table t_order(       id number primary key,   content varchar2(200) not null,   customer_id number references t_customer(id)
);drop table t_customer;
drop table t_order;

两张表中的关系是:订单表中的外键列customer_id的值,是引用自顾客表t_customer中的主键列id的值
此时直接删除顾客表示不会成功的,因为t_customer的主键列的值被别的表给引用了
那么该如何删除呢:
(1)方式一:可以先删除订单表t_order,然后再删除t_customer就可以了
(2)方式二:如果非要想直接删除当前这个顾客表t_customer,就需要使用下面的语句:
drop table t_customer cascade constraints;
表示删除t_customer表的同时,也级联删除与表相关的约束,外键约束没有了,这个表自然可以被删除掉,cascade是级联的意思

3、alter

在表创建好的情况下,可以使用alter关键字,来修改表的信息。
alter属于DDL语句,会自动当前事务。

具体使用:
测试用表:

create table t_user(   id number constraint user_id_pk primary key,   name varchar2(100),   salary number
);
drop table t_user;

(1)在表中添加新列

alter table t_user
add birthday date;

(2)删除表中的列

alter table t_user
drop column birthday;

(3)给表中添加约束

alter table t_user
add constraint user_name_ununique(name);

(4)删除表中的约束

alter table t_user
drop constraint user_name_un;

(5)修改表名

rename t_user to mytest;
rename mytest to t_user;

(6)修改列的数据类型

alter table t_user
modify (name varchar2(500));

(7)设置约束失效

alter table t_user
disable constraint user_id_pk cascade;

这里必须知道约束的名字

4、truncate

用来截断表中的数据,表示先删除,再提交。

truncate table t_user;

相当于下面的代码

delete from t_user;
commit;

oracle数据库基础:DDL语言相关推荐

  1. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  2. oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx

    <ORACLE数据库基础测试题oracle数据库复习题.docx>由会员分享,可在线阅读,更多相关<ORACLE数据库基础测试题oracle数据库复习题.docx(18页珍藏版)&g ...

  3. Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作

    Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  4. Web阶段--Oracle数据库基础知识点

    Web阶段–Oracle数据库基础知识点 一.数据库 1.定义 是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db) 2.为什么需要应用数据库? 1.现有文本文件存放数据 ...

  5. Oracle数据库基础

    Oracle数据库基础 1.Oracle简介:Oracle是一个数据库管理系统,是Oracle公司的核心产品. Oracle数据库主要特点特点: > 支持多用户.大事务量的事务处理 > 在 ...

  6. Oracle数据库基础知识点大全(一)

    Oracle数据库基础知识点大全 一.数据库基本概念 E-R模型 数据库对象 二:标准SQL包含了4种基本的语句类别 三:DML语句(数据操作语句) 数字和日期使用的数学表达式 常用 where 查询 ...

  7. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  8. 【Oracle SQL数据库-教学2】--- Oracle数据库基础

    [Oracle SQL数据库-教学2]- Oracle数据库基础 文章目录 [Oracle SQL数据库-教学2]--- Oracle数据库基础 本期主要内容: 一. 数据库管理系统概述 ① 数据处理 ...

  9. Oracle数据库基础教程

    查看书籍详细信息: Oracle数据库基础教程 编辑推荐 体现作者多年的数据库管理与开发经验,结合大量实用技巧,重点突出,便于灵活掌握,提供典型应用实例与上机实验,分析详细,实用性强. 本书是作者结合 ...

  10. oracle运行原理ppt,oracle数据库基础培训PPT

    PPT内容 这是一个oracle数据库基础培训PPT,主要介绍了描述 Oracle 服务器的体系结构及其主要构件.列举用户连接到 Oracle 实例所涉及的结构等内容. Oracle数据库维护培训胶片 ...

最新文章

  1. android如何看百分比版本,【JAVA】Android百分比布局
  2. 曲线数学NURBS之bezier曲线
  3. 还在用Logback?Log4j2的异步性能已经无敌了,还不快试试
  4. 完整的维纳滤波器Matlab源程序
  5. c# html 后台拼_c#编写html后台
  6. linux c之gcc编译出现error:lvalue required as unary ‘‘ operand解决办法
  7. [AtCoder Regular Contest 060] E - Tak and Hotels
  8. php 查找数组相同元素,查找数组中重复的元素
  9. 向ES6看齐,用更好的JavaScript(三)
  10. graphpad多条不同的曲线_应用Graphpad Prism制作多组ROC曲线图
  11. 如何使用maven打包
  12. axure 画小程序效果图_微信小程序-基于canvas画画涂鸦
  13. python 把当前目录文件夹中的所有图片缩放为640*480
  14. 二叉树遍历——递归算法
  15. (转载)SpringBoot配置Druid数据源监控服务Yml格式
  16. 计算机的奇迹英语作文,高中英语作文范文:奇迹
  17. 华硕bios更改固态硬盘启动_华硕bios怎么设置固态硬盘为第一启动项
  18. 程序猿和hr面试时的巅峰对决
  19. Java14它真的来了, 真是尾气都吃不到了
  20. CISP——密码学基本概念(术语)

热门文章

  1. 渗透学习-靶场篇-安全狗的安装与绕过实验(后续还会更新)
  2. php两个数组合并 不使用函数,php数组合并array_merge()函数使用注意事项
  3. java潮流奢侈品购物网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  4. python解析二维码_Python如何识别二维码
  5. oracle连接出现问题
  6. java静态数据与非静态数据的初始化
  7. 牛腩细节(SQLHelper再识)
  8. 12306铁路订票系统的一个小bug
  9. Windows 下载git
  10. java流程引擎实现_手写实现一套流程编排