创建表
建表的统一格式
CREATE TABLE [schema.]table(
column datatype [DEFAULT expr]
[column_constraint],
…
[table_constraint]
);
create table student_demo(
id number(7),
name varchar2(50),
gender varchar2(10)
);
default 是在列后面默认值
如;
create table student(
id number(7),
name varchar2(50),
gender varchar2(10) default ‘male’
);
命名规则 表名 列名
i 必须以字母开头
ii 最多长30个字符长
iii 必须只包含A–Z,a–z,0–9,_,$和#
iv 不能复制同一用户所拥有的另一个对象的名称
v 不能是Oracle10g服务器保留字
约束:
i not null
只能写为列级约束,
ii primary key
主键
联合主键设置在表级上。
iii unique
唯一性约束
可以列级约束,可以表级约束。
foreign key
声明在列级别
dept_id number(7) constraint emp_deptid_fk (把关键字省略) references dept(id)
create table w(
id number(7) primary key ,
wc_id number(7) references wc(id)
);
声明在表级别
create table c(
id number(7) primary key,
c number ,
foreign key(c) references wc(id)
);
constraint emp_deptid_fk foreign key(列名) references dept(id)
联合外键只能建立到表级别上
constraint leo_id_fk foreign key (aid,aname) references b (id,name) ON DELETE CASCADE
ON DELETE CASCADE 级联删除行内 内容
删除父表中的数据,把关联的子表数据一同删除
如果没有设置级联删除,需要先删除外键所在的表中的内容,再删除主表中的内容
否则会出现以下错误:
CHECK
用来验证插入列中的值是否符合规则
check(逻辑表达式)
通过使用子查询创建表
create table 表名[(列名1,列名2,列名3…)]
as
子查询
create table emp1
as
select id,last_name,salary,dept_id
from s_emp
where 1=2;
DML语句 data manipulating language
insert delete update
执行DML语句的时候会产生事务(commit后修改的数据才会生效)
insert语句:
insert into table_name(col1,col2,col3,..,colN) values(val1,val2,val3,…,valN);
insert into table_name values(表中有几个列这里就要插入几个值顺序也要和表中的列的顺序一致)
使用子查询向test表中插入数据
insert into test(id,last_name,salary)
select id,last_name,salary
from s_emp
where id<6;
update语句
update table_name
set col1=val1,col2=val2 …
where …
s_emp 张三 —-> 李四
update s_emp
set last_name=’李四’
where last_name=’张三’
delete语句
delete from table_name
where …
删除表中last_name是李四的数据。
delete from s_emp
where last_name=’李四’;
删除test表中所有数据
delete from test;
删除test表中id大于3的数据
delete from test
where id>3;
TRUNCATE
truncate和delete作用一样,也是删除表中数据
delete是DML语句,删除数据后需要自己手动的提交事务或者回滚事务
truncate是DDL语句,删除数据后会自动的帮我们提交事务
例如:
truncate table test;
相当于:
delete from test;
commit
事务:
是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行
事务的特点:ACID(原子性、一致性、隔离性和持久性)
commit 事务完成 提交
rollback; 回滚事务:让前面的DML操作都撤销
注意:事物回滚是在没有提交的情况下,可以回滚到相应的位置,如果提交,回滚不回去。
savepoint 保存回滚点
rollback to 保存点 :回滚到保存点。
回滚事务:让前面的DML操作都撤销
例如:
insert into ….
savepoint a;
insert into ….
rollback to a
注意:执行DDL语句会让当前存在并且还没提交的事务进行提交
(DDL语句) data define language
修改表结构
alter 表名 对应的操作
在表中添加一个新的列
alter table table_name
add(column_name datatype constraint)
alter table w add(name varchar(20) not null);
添加列时,如果列的约束是not null 约束,则表中必须为空,否则会出现以下错误
在表中删除一列
alter table table_name
drop column column_name;
alter table wc
drop column name;
修改表中列的数据类型
alter table table_name
modify(column_name datatype);
添加或修改列的约束:
alter table w add(hello varchar(20) unique);
alter table w modify(hello not null);
创建序列
CREATE SEQUENCE name
[INCREMENT BY n] 步长
[START WITH n] 起始值 1
[{MAXVALUE n | NOMAXVALUE}] 最大值 10
[{MINVALUE n | NOMINVALUE}] 最小值1
[{CYCLE | NOCYCLE}] 序列循环
[{CACHE n | NOCACHE}]
create sequence myseq
increment by 2
start with 1;
每个序列对象有俩个属性:
nextval 序列中的下一个值
currval 序列中的当前的值
视图(view):
视图是一条查询的sql语句,用于显示一个或多个表或其他视图中的相关数据。
视图将一个查询的结果作为一个表来使用,因此视图可以被看作是一个虚拟表.
创建视图:
create view view_name
as
subquery
删除视图:
drop view view_name
索引 index
作用:加快数据查询的速度
主键列上面默认会加入索引
由数据库系统自行维护
CREATE INDEX index
ON table_name (column_name);
drop index index_name;
操作用户的语句
创建用户:
CREATE USER 用户名
IDENTIFIED BY 密码;
create user wc identified by wc;