1、创表
语法:create table 表名(列名1 列的类型(大小),列名2 列的类型(大小)…)
create table student(
id number(10) primary key, --主键 primary key
name varchar2(100) not null, --不能为空 not null
age number(10) not null default(18) --默认值 default
);
--创建一个已存在的表一样结构的表
--没有之前表的数据
create table studentA as select * from student where 1 = 0;
--保留之前表的数据(可以用作备份数据)
create table studentA as select * from student where 1 = 1;
2、给表添加备注
语法:comment on column 表名.列名 is ‘备注’;
comment on column student.rank is '学生排名';
3、给表添加字段
语法:alter table 表名 add 新增字段名(类型+长度);
alter table student add rank varchar2(50);
4、删除表的字段
alter table student drop column rank;
5、修改表字段的长度
语法:alter table 表名 modify 字段名 类型长度;
alter table student modify rank varchar2(100);
6、修改表的数据
语法:update 表名 set 列名= 修改的值 where 条件;
update student p set p.rank = '2' where p.student_id = '100011373';
7、插入数据
语法:insert into 表名(列名) values(数据);
列名可以不用写,代表表中全部的列都需要插入数据,列名和数据要一一对应
insert into student (rank) values(1);
8、删除数据
语法:delete from 表名 where 条件;
delete不带where代表整个表的数据全部删掉,可以进行回滚
delete删除数据不会释放表空间,要释放表空间的话用TRUNCATE。
语法:TRUNCATE table 表名;删掉表中全部的数据也会释放表空间,不会删除表结构
drop table 表名;删掉整个表,表的结构都会删掉
--删除一条数据
delete from student t where t.student_id = '100011373';
--删除整表数据
delete from student t;
--truncate
truncate table student;
--dorp
drop table student;
9、序列
- 创建序列
语法:
create sequence 序列名 [可选参数]
序列名:一般是以"seq_xxx"的形式进行命名
可选参数说明:
increment by:序列每次增加的值,负数表示递减,缺省值为1;
start with:序列的初始值,缺省值为1;
maxvalue:序列可生成的最大值,默认就是不设置,为nomaxvalue,最大值为10^27;
minvalue:序列可生成的最小值,默认就是不设置,为nominvalue;
cycle(循环)/nocycle(不循环):定义当序列达到最大/小值后是否循环,缺省值为不循环;如果不使用循环达到限制值后继续产生新值就会出错;使用循环达到最大值后的下一个值为1,和start with设置的值无关,递增还是increment by设置的值;
cache:定义缓存序列的个数,缺省值为20,nocache表示不设置缓存;使用缓存可以提高序列的性能,但当发生异常时可能会造成数据丢失导致序列不连续;
create sequence seq_student
increment by 1
start with 1
maxvalue 999999
minvalue 1
cycle
nocache;
- 删除序列:
语法:drop sequence 序列名;
drop sequence seq_student;
- 修改序列
语法: alter sequence 序列名 [可选参数]
alter sequence seq_student
increment by 2
start with 2
maxvalue 1000000
minvalue 2
cycle
nocache;
- 序列使用
语法:序列名.currval/nextval
--查询序列的当前的值
select seq_student.currval from daul;
--查询序列的下一个值
select seq_student.nextval from daul;
- 查看序列
--查询当前用户的序列
select * from user_sequences;
--查询所有用户的序列
select * from all_sequences;