Oracle创建表语句

2024-11-21 1

oracle 创建表时,表名称会自动转换成大写,oracle 对表名称的大小写不敏感。

oracle 表命名规则:

  • 1、必须以字母开头

  • 2、长度不能超过30个字符

  • 3、避免使用 Oracle 的关键字

  • 4、只能使用A-Z、a-z、0-9、_#S

二、语法

2.1 创建表 create table

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- 创建表: 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;

插入验证数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-- 插入数据
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.2 修改表 alter table

1. '增加' 一列或者多列

1
2
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) 数据类型

1
2
alter table scott.student_info modify address varchar2(100);
alter table scott.student_info modify (id_type varchar(20), id_no varchar2(20));
  • (2) 列名

1
alter table scott.student_info rename column address to new_address;
  • (3) 表名

1
2
alter table scott.student_info rename to new_student_info ;
alter table scott.new_student_info rename to student_info;

3. '删除' 一列或者多列,删除多列时,不需要关键字 column

1
2
alter table scott.student_info drop column sex;
alter table scott.student_info drop (id_type, id_no);

2.3 删除表 drop table

1
2
-- 删除表结构
drop table scott.student_info;

2.4 清空表 truncate table

1
2
-- 清空表数据
truncate table scott.student_info;

2.5 查询表、列、备注信息

  • 权限从大到小:

1
'dba_xx' > all_xx > user_xx ('dba_xx' DBA 用户才有权限)
  • 1. 查询表信息

1
select * from dba_tables; -- all_tables、user_tables
  • 2. 查询表的备注信息

1
select * from dba_tab_comments;
  • 3. 查询列信息 

1
select * from dba_tab_cols t order by t.column_id;
  • 4. 查询列的备注信息

1
select * from dba_col_comments;