创建表
第一种方式,语法如下:
--column_name:列名
--type:数据类型
--注意:多个列名之间用逗号分隔,最后一列不要加逗号
create table table_name(
column_name type,
column_name type
)
第二种方式,语法如下:
--这种方式会自动导入数据,如不想要数据,可以加条件where 1=2,当然也可以导入你想要的数据,就看你加的什么条件了
create table table_name
as
select * from departments
--where 1=2
修改表
语法如下:
-- table_name:表名,column_name:列名,type:数据类型
-- 表重命名
-- old_tablename:原表名,new_tablename:想更改的表名
rename old_tablename to new_tablename
-- 新增列
alter table table_name add(column_name type);
-- 修改列
-- 方括号里为可选,not null:不能为空,default:默认值
alter table table_name modify(column[not null][default exp] type)
-- 列重命名
alter table table_name rename column old_column to new_column
-- 删除列
alter table table_name drop column column_name
-- 设置列不可用
alter table table_name set unused column column_name
-- 删除不可用列
alter table table_name drop unused column
-- 清空表,无法回滚
truncate table table_name
-- 删除表里所有数据,可以回滚
delete from table_name
--在数据库中删除整个表
drop tabel table_name
数据类型:
字符数据类型 char 、varchar2、long…
数字类型 int、number、decimal…
日期类型 date
其它数据类型 raw、long raw、Blob、Clob、Bfile
创建约束
约束有下面五种:
1、非空约束:NOT NULL
2、唯一约束:UNIQUE
3、检查约束:CHECK
4、主键约束:PRIMARY KEY
5、外键约束:FOREIGN KEY
作用范围:
列级约束只能作用在一个列上
表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上)
注意:
NOT NULL只能使用到列级约束,其他约束两种方式皆可
创建主键约束相当于创建了NOT NULL、和UNIQUE两个约束,一个表只能有一个主键
语法:
--con_name:约束名,这个约束名起不起都无所谓,只是到时候查看约束以及对约束进行操作的时候的方便,见名知意
--列级约束在定义列的时候跟在列后面
--表级约束定义完列以后单独在下面定义
constraint con_name Check(约束条件)
constraint con_name foreign key(外键名) references 主键表(主键)
--这两个是在定义外键的时候可以加的
on delete cascade --级联删除
on delete set null --级联置空
下面举个例子:
create table employees(
employee_id number(8),
--列级约束
hire_date date not null,
dept_id number(8),
email varchar2(8) constraint UQ_email unique,
first_name varchar2(8),
--表级约束
constraint PK_emp_id primary key(employee_id),
constraint UQ_first_name unique(first_name),
constraint FK_dept_id foreign key(dept_id) references departments(department_id) ON DELETE CASCADE
)
对约束的一些操作:
--table_name:表名,con_name:约束名
--无效化约束,也就是相当于禁用,一个意思
alter table table_name disable constraint con_name
--激活约束,有禁用就有启用,相当于启用
alter table table_name enable constraint con_name
--删除约束
alter table table_name drop constraint con_name
-- 这个表是用户下的一些约束信息,可以看一看,注意表名要大写
select constraint_name,constraint_type,search_condition from user_constraints where table_name='TABLE_NAME'
-- 查看表的列上有哪些约束,同样的表名要注意大写
select constraint_name ,column_name from user_cons_columns where table_name='TABLE_NAME'