
使用DDL语句管理表
主键不能为空
当然我们也可以自定义主键约束的名字:
发布日期:2021-05-08 13:40:42
浏览次数:25
分类:精选文章
本文共 3976 字,大约阅读时间需要 13 分钟。
使用DDL语句管理表
创建表空间
表空间是oracle数据库的逻辑单元。一个表空间可以与多个数据文件(物理结构)关联,一个数据库下可以建立多个表空间,一个表空间可以建立多个用户、一个用户下可以建立多个表。
create tablespace itcast datafile 'd:\itcast001.dbf' size 100m autoextend on next 10m
用户
1. 创建用户
create user tom identified by 916437 default tablespace itcast
2. 用户赋权限
新创建的用户没有任何权限,登陆后会提示。
- 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 connect,resource to tom;//给tom赋予connect和resource的权限
创建表
- 语法:
-
-
创建表范例:创建people表create table people( 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('2020-7-9','fmyyyy-mm-dd'));
修改表
在sql中使用alter 可以修改表
添加语法:ALTER TABLE 表名称 ADD(列名1 类型 [DEFAULT 默认值], 列名2 类型 [DEFAULT默认值] ····)修改语法:ALTER TABLE 表名称 MODIFY(列名1 类型 [DEFAULT 默认值], 列名2 类型
[DEFAULT默认值] ····)修改列名:ALTER TABLE 表名称 RENAME COLUMN 列名1 TO 列名2
范例:在people表中增加列address
alter table people add(address varchar2(10))范例:把people表的address列的长度修改成20长度
alter table people modify(address varchar(20))删除表
- 语法:
- drop table 表名
约束
- 在数据库开发中,约束是必不可少,使用约束可以更好的保证数据的完整性。在Oracle数据库中,约束的类型包括:
- 主键约束( Primary Key) 非空约束( Not Null) 唯一-约束( Unique) 外键约束( Foreign Key) 检查性约束( Check)
1. 主键约束
主键约束都是在id上使用,而且本身已经默认了内容不能为空,可以在建表的时候指定。创建一张表,把id作为主键
create table people( id number(10) primary key, name varchar2(10), gender number(1) default 1, birthday date);
TOM.SYS_C0011095是系统自动分配的约束的名字(系统自动命名的主键名)


create table people( id number(10), name varchar2(10), gender number(1) default 1, birthday date, constraint people_pk_id primary key(id));
2. 非空约束
使用非空约束,可以使指定的字段不可以为空。
create table people( id number(10) not null, name varchar2(10) not null, gender number(1) default 1, birthday date);
3. 唯一约束(unique)
表中的一个字段的内容是唯一的
create table people( id number(10), name varchar2(10) unique, gender number(1) default 1, birthday date);
也可以自定义唯一约束的名字:
create table people( id number(10), name varchar2(10), gender number(1) default 1, birthday date, constraint people_name_uk unique(name));
4. 检查约束
使用检查约束可以来约束字段值的合法范围。
create table people( id number(10), name varchar2(10) unique, gender number(1) check(gender in (1,2)), birthday date);
也可以自定义检查约束名:
create table people( id number(10), name varchar2(10) unique, gender number(1), birthday date, constraint people_gender_ck check(gender in (1,2)));
5. 外键约束
之前所讲的都是单表的约束,外键是两张表的约束,可保证关联数据的完整性。
范例:创建两张表,一张订单表,一张是订单明细表,订单和明细是一对多的关系create table orders( order_id number(10), toal_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(20), quantity number(10), constraint order_detail_detail_id_pk primary key(detail_id));--向订单表里添加一条数据,order_id为1,总价为500,添加时间是现在--insert into orders values(1,500,sysdate);--向订单明细表里添加一条数据,明细id为1,order_id为2,商品信息为’小米手环‘,数量为2--insert into order_detail values(1,2,'小米手环5NFC版',2);
我们在两张表中插入如上两条数据,我们发现在order_detail表中插入的order_ id在order表中并不存在,这样在数据库中就产生了脏数据。此时需要外键来约束它。
我们再次建表:
create table orders( order_id number(10), toal_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(20), quantity number(10), constraint order_detail_detail_id_pk primary key(detail_id), constraint order_detail_detail_id_fk foreign key(order_id) references orders(order_id));insert into orders values (1, 500, sysdate)insert into order_detail values(1,2,'小米手环5NFC版',2)
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月13日 23时30分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
iview组件库中,Form组件里的Input,无法正确绑定on-enter事件
2021-05-14
记录-基于springboot+vue.js实现的超大文件分片极速上传及流式下载
2021-05-14
JavaScript高级程序设计第四版学习记录-第九章代理与反射
2021-05-14
怎么解决Windows 10文件/文件夹正在使用无法删除
2021-05-14
matlab函数:fix 向0取整
2021-05-14
ORCAD创建元件库时,格点对不起怎么办
2021-05-14
Allegro中如何消除器件本身Pin间距报错
2021-05-14
AD中拖动器件,无法移动在一起如何解决
2021-05-14
linux--练习001-基础类型
2021-05-14
Flask--简介
2021-05-14
Flask模板--过滤器与测试器
2021-05-14
16 python基础-恺撒密码
2021-05-14
06.1 python基础--结构控制
2021-05-14
Frame--Api框架
2021-05-14
Frame--WEB框架
2021-05-14
idea 在Debug 模式中运行语句中函数的方法
2021-05-14
springboot2.1.1开启druid数据库连接池并开启监控
2021-05-14
《朝花夕拾》金句摘抄(五)
2021-05-14