1.Oracle建表及表子段操作

本文介绍了如何在数据库中创建表,包括遵循第三范式的设计原则,设置主键和外键,处理NULL值以及指定默认值。还详细阐述了INSERT、UPDATE、DELETE操作,以及ALTERTABLE用于修改表结构和TRUNCATE、DROPTABLE用于删除表的内容及结构。
摘要由CSDN通过智能技术生成
1.概述

1. 表:用于 '存储数据' -- 是我们最常见的数据库对象
2. 表设计注意事项
   (1) 表设计时,尽量遵从 '第三范式(3NF)'
   (2) 名称不能超过 30 个字符  -- 超过会报错
   (3) 名称只能以 '字母' 大头,可由'数字'、 '_'、 '$' 或 '#' 组成

2.语法
2.1 创建表 create table
-- 创建表: student_info 属主: scott (默认当前用户)
create table scott.student_info (
  sno         number(10) constraint pk_si_sno primary key,
  sname       varchar2(10),
  sex         varchar2(2),
  create_date date
);

-- 添加注释
comment on table scott.student_info is '学生信息表';
comment on column scott.student_info.sno is '学号';
comment on column scott.student_info.sname is '姓名';
comment on column scott.student_info.sex is '性别';
comment on column scott.student_info.create_date is '创建日期';

-- 语句授权,如:给 hr 用户下列权限
grant select, insert, update, delete on scott.student_info to hr;

2.1.1创建单列主外键

主键值必须是唯一的。也就是说,表中的每一行都必须具有唯一的主键值

create table tb_supplier
(
  supplier_id number not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  constraint pk_supplier primary key (supplier_id)   
);
 
create table tb_products
(
  product_id number not null,
  product_name varchar2(100),
  supplier_id number not null,
  constraint fk_products_supplier foreign key (supplier_id) references tb_supplier(supplier_id)
);

创建多列主外键

create table tb_supplier
(
  supplier_id number not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  constraint pk_supplier primary key (supplier_id,supplier_name)
);
 
create table tb_products
(
  product_id number not null,
  product_name varchar2(100),
  supplier_name varchar2(50),
  supplier_id number not null,
  constraint fk_products_supplier foreign key (supplier_id,supplier_name)  references tb_supplier(supplier_id,supplier_name)
);

使用alter table命令定义外键 

create table tb_supplier
(
  supplier_id number not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  constraint pk_supplier primary key (supplier_id,supplier_name)
);
 
create table tb_products
(
  product_id number not null,
  product_name varchar2(100),
  supplier_name varchar2(50),
  supplier_id number not null
);
 
--使用alter table创建外键
 alter  table  tb_products  add  constraint fk_products_supplier  foreign  key (supplier_id,supplier_name)  references   tb_supplier(supplier_id,supplier_name);

2.1.2 处理NULL值

create table vendors
(
  vend_id      int        not null,
  vend_name    char(50)   not null ,
  vend_address char(50)   null ,
  vend_city    char(50)   null ,
  vend_state   char(5)    null ,
  vend_zip     char(10)   null ,
  vend_country char(50)   null
);

2.1.3指定默认值

在插入行时,如果没有指定值,Oracle允许指定默认值。默认值是在CREATE TABLE语句中的列定义中使用DEFAULT关键字指定的

create table orderitems
(
  order_num  int           not null ,
  order_item int            not null ,
  prod_id    char(10)     not null ,
  quantity   int               default 1 not null ,
  item_price decimal(8,2) not null
);
2.2 insert  插入验证数据
-- 插入
insert into scott.student_info (sno, sname, sex, create_date)
values (1, '张三', '男', sysdate);
insert into scott.student_info (sno, sname, sex, create_date)
values (2, '李四', '女', sysdate);
insert into scott.student_info (sno, sname, sex, create_date)
values (3, '王五', '男', sysdate);

-- 修改
update scott.student_info si set si.sex = '女' where si.sno = 3;

-- 删除 
delete scott.student_info si where si.sno = 1; 

-- 提交
commit; 

-- 查询
select * from scott.student_info;
2.3 修改表 alter table
1. '增加' 一列或者多列
   alter table scott.student_info add address varchar2(50);
   alter table scott.student_info add (id_type varchar2(2), id_no varchar2(10));

2. '修改' 一列或者多列
   (1) 数据类型
   alter table scott.student_info modify address varchar2(100);
   alter table scott.student_info modify (id_type varchar(20), id_no varchar2(20));
   (2) 列名
   alter table scott.student_info rename column address to new_address;
   (3) 表名
   alter table scott.student_info rename to new_student_info ;
   alter table scott.new_student_info rename to student_info;   

3. '删除' 一列或者多列,删除多列时,不需要关键字 column
   alter table scott.student_info drop column sex;
   alter table scott.student_info drop (id_type, id_no);
2.4 删除表(记录和结构)的语名:delete —— truncate —— drop
-- delete (删除数据表里记录的语句)
delete from 表名 where 条件; 
2.5 删除表 drop table
-- 删除表结构
drop table scott.student_info;
2.6 清空表 truncate table
-- 清空表数据
truncate table scott.student_info;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值