Oracle--使用DDL语句管理表、约束详解

Oracle DB 使用DDL语句创建和管理表 阅读详情
创建表空间

表空间是Oracle数据库的逻辑单元。数据库–表空间。一个表空间可以与多个数据库文件(物理结构)关联一个数据库下可以建立多个表空间,一个表空间可以建立多个用户、一个用户下可以建立多个表。

create tablespace zhangs
datafile 'd:\zhangs.dbf'
size 100m
autoextend on
next 10m;
  • zhangs:为表空间名称
  • datafile:指定表空间对应的数据文件
  • size:定义的是表空间的初始大小
  • autoextend on:自动增长,当表空间存储都占满时,自动增长
  • next:指定的时一次自动增长的大小
用户

1. 创建用户

create user acton
identified by 930205
default tablespace zhangs;
  • identified by:用户的密码
  • default tablespace:表空间名称

Oracle数据库与其它数据库产品的区别在于,表和其它的数据库对象都是存储在用户下的。

2. 用户赋权限
新创建的用户没有任何全新,登录后会提示
在这里插入图片描述
Oracle中已存在三个重要的角色:connect角色,resource角色,dba角色。

  • CONNECT角色:
    是授予最终用户的典型权力,最基本的
    ALTER SESSION:修改会话
    CREATE CLUSTER:建立聚簇
    CREATE DATABASE LINK:建立数据库连接
    CREATE SEQUENCE:建立序列
    CREATE SESSION:建立会话
    CREATE SYNONYM:建立同义词
    CREATE VIEW:建立视图

  • RESOURCE角色:
    是授予开发人员的
    CREATE CLUSTER:建立聚簇
    CREATE PROCEDURE:建立过程
    CREATE SEQUENCE:建立序列
    CREATE TABLE:建表
    CREATE TRIGGER:建立触发器
    CREATE TYPE:建立类型

  • DBA角色:
    拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构,并且系统权限也需要DBA授出,且DBA用户可以操作全体用户的任意表,包括删除

grant dba to acton;

进入system用户下给用户赋予dba权限,否则无法正常登录。

创建表

语法:

create table [schema.] table
	(column datatype [default expr][, ...]);

数据类型:

数据类型描述
VARCHAR2(size)可变长字符数据
CHAR(size)定长字符数据
NUMBER(p,s)可变长数值数据
DATE日期型数据
LONG可变长字符数据,最大可达到2G
CLOB字符数据,最大可达到4G
RAW and LONG RAE原始的二进制数据
BLOB二进制数据,最大可达到4G
BFILE存储外部文件的二进制数据,最大可达到4G
ROWID行地址

使用子查询创建表的语法:

create table t_table
	[(column, column...)]
as subquery;

//如果只想创建表结构,不需要表中的数据,可以给一个永远为假的条件
create table t_table1 as
select * from t_table2 where 1=2;

示例:创建person表:

create table person(
       pid number(10),
       name varchar2(10),
       gender number(1) default 1,
       birthday date);

insert into person(pid,name,gender,birthday)
values(1,'张三',1,to_date('1999-12-22','yyyy-MM-dd'));

select * from person;

在这里插入图片描述
修改表
在sql中使用alter可以修改表

  • 添加语法:
alter table 表名称 add(类名1 类型 [default 默认值], 列名2 类型 [default 默认值]...)
  • 修改语法:
alter table 表名称 modify(列名1 类型 [default 默认值],列名2 类型 [default 默认值]...)
  • 修改列名:
alter table 表名称 rename column 列名1 to 列名 2

示例:在person表中增加列address

alter table person add(address varchar2(10));

在这里插入图片描述
示例:把person表的address列的长度修改成20

alter table person modify(address varchar2(20));

删除表

drop table 表名
约束

在数据库开发中,约束是必不可少的,使用约束可以更好的保证数据库的完整性。在Oracle数据库中,约束的类型包括:

  • 主键约束:Primary Key
  • 非空约束:Not Null
  • 唯一约束:Unique
  • 外键约束:Foreign Key
  • 检查性约束 Check

1. 主键约束:
主键约束都是在id上使用,而且本身已经默认了内容不能为空,可以在建表的时候指定。创建一张表,把pid作为主键

create table person(
	pid number(10) primary key,
	name varchar2(10),
	gender number(1) default 1,
	birthday date);

主键不可重复,SCOTT.SYSC0017981是系统自动分配的约束名字\color{red}{主键不可重复,SCOTT.SYS_C0017981是系统自动分配的约束名字}主键不可重复,SCOTT.SYSC​0017981是系统自动分配的约束名字
在这里插入图片描述主键不可为空\color{red}{主键不可为空}主键不可为空
在这里插入图片描述我们可以自己来指定主键约束的名字

create table person(
	pid number(10),
	name varchar2(10),
	gender number(1) default 1,
	birthday date,
	constraint person_pk_pid primary key(pid));

在这里插入图片描述
2. 非空约束:
使用非空约束,可以使指定的字段不可以为空。
示例:建立一张pid和name不可以为空的表

create table person(
	pid number(10) not null,
	name varchar2(10) not null,
	gender number(1),
	birthday date);

在这里插入图片描述
3. 唯一约束(unique):
表中的一个字段的内容是唯一的
范例:建一个name是唯一的表

create table person(
	pid number(10),
	name varchar2(10) unique,
	gender number(1),
	birthday date);

在这里插入图片描述唯一约束的名字也可以自定义

create table person(
	pid number(10),
	name varchar2(10),
	gender number(1),
	birthday date,
	constraint person_name_unique(name));

在这里插入图片描述
5.检查约束:
使用检查约束可以来约束字段值的合法范围。
示例:创建一张表性别只能是1 或 2

create table person(
	pid number(10),
	name varchar2(10),
	gender number(1) check(gender in (1, 2)));

在这里插入图片描述检查约束也可以自定义

create table person(
	pid number(10),
	name varchar2(10),
	gender number(1),
	birthday date,
	constraint person_gender_ck check(gender in (1, 2)));

在这里插入图片描述
5. 外键约束:
之前所讲的都是单表的约束,外键是两张表的约束,可以保证关联数据的完整性。
示例:创建两张表,一张订单表,一张订单明细表,订单和明细是一对多的关系

create table orders(
	order_id number(10),
	total_price number(10, 2),
	order_time date,
	constraint orders_order_id_pk primary key(order_id));

create table order_detail(
	detail_id number(10),
	order_id number(10),
	item_name varchar2(10),
	quantity number(10),
	constraint order_detail_detail_id_pk primary key(detail_id));
insert into orders values(1, 200, to_date('2015-12-12', 'yyyy-MM-dd'));

insert into order_detail values(1, 2, 'java', 1);

向两张表中插入如上两条数据,我们发现在order_detail表中插入的order_id在order表中并不存在,这样在数据库中就产生了脏数据。此时需要外键来约束它。

再次建表:

create table orders(
	order_id number(10),
	total_price number(10, 2),
	order_time date,
	constraint orders_order_id_pk primary key(order_id));

create table order_detail(
	detail_id number(10),
	order_id number(10),
	item_name varchar2(10),
	quantity number(10),
	constraint order_detail_detail_id_pk primary key(detail_id)
	constraint order_detail_order_id_fk foreign key(order_id) references orders(order_id));

在这里插入图片描述
注意:
外键一定是主表的主键
删表时一定先删子表再删主表,如果直接删主表会出现由于约束存在无法删除的问题
SQL> drop table orders
drop table orders
ORA−02449:表中的唯一/主键被外键引用\color{red}{ORA-02449:表中的唯一/主键被外键引用}ORA−02449:表中的唯一/主键被外键引用

但是可以强制删除:
drop table orders cascade constraint;
但是不建议使用

删除主表的数据可以先删除子表的关联数据,再删出表,也可以使用级联删除\color{red}{级联删除}级联删除。
级联删除在外键约束上要加上on delete cascade

constraint order_detail_order_id_fk foreign key(order_id)
	references orders(order_id) on delete cascade

这样删除主表数据的时候会把子表的关联数据一同删除\color{red}{这样删除主表数据的时候会把子表的关联数据一同删除}这样删除主表数据的时候会把子表的关联数据一同删除
在这里插入图片描述

终极示例:
 create table student
(
   sid number constraint student_pk primary key,
   sname varchar2(20) constraint student_name_notnull not null,
   gender varchar2(2) constraint student_gender check (gender in ('男','女')),
   email varchar2(40) constraint student_email_unique unique
                      constraint student_email_notnull not null,
deptno number constraint student_fk references dept(deptno) on delete set null
);
使用C#调用百度地图并实现坐标点的设置以及读取 使用C#调用百度地图申请百度地图密钥以及查看百度API程序实现功能:最终图利用webBrowser控件展示地图 申请百度地图密钥以及查看百度API 网址:http://lbsyun.baidu.com/apiconsole/key#/home 网址:http://lbsyun.baidu.com/jsdemo.htm#c1_3 程序实现功能: 1、输入网址那可以调用本地的html文件,也可以访问其他网站 2、输入坐标、添加坐标按钮,可以将坐标值传入html文件中,显示在经纬度的文本框中 3、定位按钮可以 阅读详情

相关推荐

logisim实验——通过2个半加器实现1-bit全加器,通过4个一位全加器构成4-bit加法器(详解)

一、由异或门和与门所构成的半加器: 二、由两个半加器构成的1-bit全加器: ..

zep 1万+

oracle获取ddl建表语句dbms_metadata.get_ddl(‘TABLE‘,‘TABLE_NAME‘)

oracle获取ddl建表语句dbms_metadata.get_ddl('TABLE','TABLE_NAME')

mrsubo的博客 1687

Petalinux-2018.3添加内核驱动(linux-xlnx源码打补丁)

大部分模块可以直接使用,需要添加自己的驱动文件时,可以通过linux-xlnx源码打补丁方式和使用PetaLinux编译为.ko文件加载运行,本文章介绍通过linux-xlnx源码打补丁方式添加内核驱动文件。根据查找资料,了解到可以通过打补丁方式添加到工程文件中。. /opt/tool-pkg/petalinux/2018.3/components/yocto/source/arm/layers/core/oe-init-build-env (该执行文件在Petalinux软件安装路径下)

sanyuedtaifen的博客 1554

oracle表空间ddl,Oracle中获取表空间DDL语句

----------------------------------------------------------------------------------- create table ----------------------------------------------------------------------------------- create table bak_db...

weixin_29386469的博客 292

交流伺服电机绝对式位置控制实战指南

伺服电机控制是工业自动化的核心技术之一,其核心原理是通过闭环反馈实现精确位置控制。绝对值编码器作为关键传感器,能提供单圈内的绝对位置信息,避免了增量式编码器的累计误差问题。在工程实践中,电子齿轮比配置、位置环PID调节等技术直接影响系统动态性能。本文以包装机械为典型场景,详细解析了从硬件选型到参数整定的全流程实现方案,特别是针对单圈绝对值编码器初始化和限位保护等易错环节,给出了经过验证的解决方案。通过合理设置17位编码器的电子齿轮比和优化运动控制算法,最终实现了±0.05°的高精度定位。

weixin_42531588的博客 281

金蝶云星空API实战:从零到一,用Postman打通业务数据流

本文详细介绍了如何使用Postman调试金蝶云星空API,从创建第三方应用到实战调试技巧,帮助开发者快速打通业务数据流。文章重点讲解了API配置的关键细节、常见问题排查方法以及自动化测试方案,提升开发效率与准确性。

weixin_33712987的博客 519

Oracle 数据库表空间tablespace操作

Oracle 数据库表空间tablespace操作

u013534849的专栏 502

PE启动盘结合360杀毒离线版:深度清除顽固病毒实战指南

在系统安全维护领域,离线查杀是一种在独立于宿主操作系统的环境下进行病毒扫描和清除的核心技术。其原理是通过一个预启动环境(如PE)加载杀毒软件,从而绕过可能已被感染或受保护的系统核心,直接访问和扫描磁盘文件。这项技术的核心价值在于能够彻底处理那些在正常系统运行时难以清除的深度隐藏病毒、Rootkit和驱动级木马。典型的应用场景包括应对勒索软件、顽固感染型病毒以及系统启动项被劫持等情况。本文以“PE启动盘”和“360杀毒离线版”这一经典组合为例,详细解析了从工具选型、环境部署到深度查杀策略的全流程,为系统维护人

weixin_29741447的博客 410

创建主键的三种方式对指定索引表空间操作的纠正

《Oracle创建主键的三种方式》曾说了创建主键的三种方式,对第三种方式的作用,提到了这个原因,往往在生产环境,数据表空间和索引表空间是分开的,如果采用第一种和第二种的方式,主键索引会创建...

bisal的专栏 3544

DRM遇到的实际问题及领悟(3)

DRM遇到的实际问题及领悟(3)

phmatthaus的专栏 636

28-3 文件上传漏洞 -白盒审计绕过

这行代码是用来获取文件名中最后一个点(.)后的部分,也就是文件的后缀名。这个函数会返回以最后一个点(.)开始到字符串末尾的部分,包括点(.)本身。然而,这段代码存在一个潜在的安全风险。攻击者可以利用多个点(.)来构造恶意文件名,以绕过后缀名检查。切换到bp将抓到的上传请求发送到重发器然后改包。先上传一个普通的php文件然后使用bp抓包。

weixin_43263566的博客 392

Oracle权限赋予的一些事

授予使用dbms_metadata.get_ddl()的权限 grant select_catalog_role to 用户名; 权限不足时,执行select dbms_metadata.get_ddl('TABLE', '表名', '用户名') from dual会报ORA-31603错误 2. 授予v$xxxx格式命名的系统视图的查询权限。 grant select on v_$xxxx to 用户名; 实际上v$xxx是视图v_$xxx的同义词,因此授权时需要根据同义词名查询系统视图实际的名字.

总想试试,万一成了呢?? 1244

Unreal5从入门到精通之如何实现移动端触屏滑动手势

随着移动设备的普及,越来越多的游戏和应用选择在移动平台上发布。Unreal Engine 5(UE5)作为一款强大的游戏引擎,提供了丰富的工具和功能,帮助开发者打造出色的移动体验。UE5不仅提升了图形质量,还大幅简化了开发流程,使得开发者能够更专注于游戏设计和用户体验。在移动游戏中,触屏滑动手势是用户与应用互动的主要方式之一。然而,许多开发者在实现这些功能时常常遇到困难。为了填补这一知识空白,本篇文章将详细介绍如何在UE5中实现移动端触屏滑动手势,帮助你从入门到精通,提升你的开发技能。

TxNet 1137

Oracle数据库之使用DDL语句管理表、约束(二十)

在Oracle数据库中,DDL(Data Definition Language)语句用于定义和管理数据库结构,如表、约束、索引等。以下是如何使用DDL语句来管理表和约束的一些示例。

pursue_mony的博客 546

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

使用DDL语句管理表

使用DDL语句管理表 创建表空间 表空间是oracle数据库的逻辑单元。一个表空间可以与多个数据文件(物理结构)关联,一个数据库下可以建立多个表空间,一个表空间可以建立多个用户、一个用户下可以建立多个表。 create tablespace itcast datafile 'd:\itcast001.dbf' size 100m autoextend on next 10m 用户 1. 创建用户 create user tom identified by 916437 default tab

brrby 312

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

10.使用DDL语句创建和管理表——Oracle数据库学习日记

使用DDL语句创建和管理表,包括CREATE TABLE,ALTER TABLE,COMMENT,DROP语句,以及约束等条件

weixin_43639821的博客 318

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

10、使用DDL建立与管理表

十、使用DDL建立与管理表 数据库对象:database objects 命名原则: 1、必须以字母开头 2、长度在1--30字符 3、只能包含a--z,A--Z,1--9,_,$,#字符 4、同一用户下不能重名 5、不能使用Oracle服务器保留字,例如 from,select等 建表语句:create table statement 1、必须具有足够的储存空间 2、指定表名和列数据类型和长...

weixin_43403578的博客 436

Oracle学习的第三天(使用DDL语句管理表_视图_序列_索引_PLSQL入门)

一、使用DDL语句管理表 1.Oracle的体系结构 数据库--> 数据库实例Orcl--> 表空间(创建用户,创建表)--> 数据文件 2.创建数据库表空间 --创建表空间 create tablespace datafile --创建表空间文件的路径 datafile 'D:\oracle\io\datafile.dbf' --表空间文件的初始化大小 size 10M --如果空间不够自动扩展 autoextend on --自动扩展5M next 5M --删除表空间 drop

飞奔的嗨少 425

Oracle day03 DDL,DML,视图,PLSQL编程

文章目录1.DDL语句管理表1-1 创建表空间1-2 创建用户1-3 授权1-4 创建表1-5 修改表1-6 约束2. DML管理表数据2-1 插入数据2-2 更新数据2-3 删除数据2-4 事务3.其它数据库对象3-1 视图3-2 序列3-3 索引4. PLSQL编程4-1 输出4-2 条件判断4-3 循环操作 1.DDL语句管理表 1-1 创建表空间 创建表空间: 逻辑单位, 通常我们新建一个...

m_awdawdw的博客 284

oracle数据库创建及管理表

Oracle 数据库创建及管理表

csw_2001的博客 236

【Oracle】DDL语言

DDL就像是数据库的"工程师",专门负责数据库结构的设计和管理。它定义了数据如何存储、如何组织,以及各种数据库对象之间的关系。在Oracle这个数据王国里,DDL就是制定规则和建造基础设施的核心工具。fill:#333;color:#333;color:#333;fill:none;DDL数据定义语言CREATE创建ALTER修改DROP删除TRUNCATE清空COMMENT注释表/视图/索引结构修改对象删除数据清空添加说明。

Guiat的博客 1062

oracle语句管理表_DDL

学习oracle的语句管理之前,我们需要了解oracle的体系结构 oracle database 数据库是由 数据库 + 实例组成实例:实例是数据库启动时初始化的一组进程和内存结构 数据库:数据库则指的是用户存储数据的一些物理文件 从概念上来看, 实例是暂时的,它不过是一组逻辑划分的内存结构和进程结构,实例会随着进程的关闭而关闭,但是数据库不一样,数据库是一堆物理文件,数据库是永久存

qq_40794266的博客 289

[转]Oracle DB 使用DDL语句创建和管理表

• 对主要的数据库对象进行分类 • 查看表结构 • 列举列可以使用的数据类型 • 创建简单的表 • 说明创建表时如何创建约束条件 • 描述方案对象如何工作 • 数据库对象 – 命名规则 • CREATE TABLE语句: – 访问另一个用户的表 – DEFAULT选项 • 数据类型 • 约束条件概览:NOT NULL、UNIQUE、PRIMARY KEY、 FORE...

weixin_30482181的博客 156

Oracle之DDL管理表(create/alter/drop)

一、Oracle体系结构 二、表空间管理 1.创建表空间 --创建表空间 create tablespace 表空间名称 datafile '数据文件名' size 表空间大小 autoextend on(自动扩展) next 每次扩展的大小; 2.删除表空间  --删除表空间 drop tablespace ...

绣花针 1017

Oracle中SQL语句学习四(DDL语句)

一、insert插入数据    1、将整张表的数据插入到一张表中      语法:insert into 表名(子查询)       使用子查询将整张表插入到制定的表中,有两种方式,如下:       (1)、insert into cip_test (select *from cip_tmp)。       (2)、insert /*+append*/into cip_test (se

迎风悟极道的专栏 951
上一篇: Oracle---集合运算(交、并、差)详解
下一篇: Oracle--常用数据库对象(视图、序列、索引、同义词)详解
吴声子夜歌
博客等级 码龄9年 2688粉丝 2268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值