oracle数据库笔记
文章目录
- oracle数据库笔记
-
- 数据库四种语言:
-
- 1.DDL (Data Definition Language )数据库定义语言 statements are used to define the database structure or schema.
- 2.DML (Data Manipulation Language)数据操纵语言 statements are used for managing data within schema objects.
-
- 插入一条记录:
- 修改一条记录:
- 删除一条记录:
- 查询一条记录:
- 查询并修改:(过后必须commit)
- 表达式:
- 取别名:
- 关系运算符 > < = >= <= <> !=
- 逻辑运算符 and or not
- 集合操作符:
- 交集intersect:
- 集合差运算minus:
- 排序查询
- 聚合函数(分组函数)(统计函数)max(列名)最大,min(列名)最小,count(列名)数量,sum(列名)总和,avg(列名)平均数
- 分组查询:在oracle中 分组查询中 只有在group by中列 才能出现在select的列中
- distinct 去除重复
- 模糊查询 like not like
- 区间 between..and..(between and 必须从小到大)
- 外连接:(left join --right join --full join)
- 内连接:(inner join)
- 日期函数
- 字符函数
- 数字函数
- nvl 判断是否为null 如果为null 则替换
- 如果两个表达式相同 则为空 否则为第一个值
- 四大排名函数row_number ,dense_rank, rank ,ntile
- 3.DCL(Data Control Language)数据库控制语言 授权,角色控制等
- 4.TCL(Transaction Control Language)事务控制语言
- oracle的数据类型:
- oracle的两个伪列:(rowid rownum)
- 同义词
- 序列
- 锁和表分区
- 连接数据库
- select from where group by having order by limit 顺序 不能颠倒
- 索引:提高查询效率
- 查询优化:分区,索引,分表,(视图),优化SQL
- 锁机制:共享锁,排他锁
- 乐观锁:
- 防重复提交:令牌机制 token
数据库四种语言:
ddl---数据库定义语言
dml---数据库操作语言
dcl---数据库控制语言
tcl---事务控制语言
1.DDL (Data Definition Language )数据库定义语言 statements are used to define the database structure or schema.
DDL是SQL语言的四大功能之一。
用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束
DDL不需要commit.
CREATE 创建表
ALTER 修改表
DROP 删除表
TRUNCATE 清空表
COMMENT 提交
RENAME 重命名
创建表:
create table 表名(
列名 类型 约束primary key,---唯一主键
列名 类型 约束 not null ,---不能为空
列名 类型 约束 default' ' , ---默认约束
类名 类型 约束 unique , ---唯一约束
)
删除表:
drop table 表名;
修改表:
-
增加列:
alter table 表名 add 列名 类型 约束;
-
删除列:
alter table 表名 drop column 列名;
-
修改列类型:
alter table 表名 modify 列名 类型;
-
重命名列名:
alter table 表名 rename column 列名1 to 列名2;
-
给列添加唯一约束:约束命名(pk_主键,uk_唯一,fk_外键,ck_检查)
alter table 表名 add constraint 列名 unique(列名);
-
为教师表、部门表创建主键约束;
alter table teacher add constraint pk_teacher primary key(tno); alter table dept add constraint pk_dept primary key(deptno);
-
为教师姓名列添加唯一约束;
alter table teacher add constraint uk_teacher unique(tname);
-
为教师性别列添加检查约束,其值只能为男和女;
alter table teacher add constraint ck_teacher check(gender in ('男','女'));
-
教师表添加外键约束,要求所有有雇员的部门一定在部门表中存在
alter table teacher add constraint fk_teacher foreign key (deptno) references dept(deptno); (表名) (约束名) (字表中的字段) (父表名)(父表主键)
查看表结构 (需要在命令窗口执行)
desc usertbl;
清空表 ddl: truncate
truncate table usertbl;
利用现有表创建新表
select * from student;
创建新表 同时 复制数据
create table student_backup
as
select * from student;
创建新表 但是不复制数据
create table student_backup2
as
select * from student where 1=2;
select * from student_backup2;
复制表数据插入 要求:表结构一致
insert into student_backup2
select * from student;
drop table student_backup2;
select * from student_backup2 for update;
2.DML (Data Manipulation Language)数据操纵语言 statements are used for managing data within schema objects.
由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。
DML分成交互型DML和嵌入型DML两类。
依据语言的级别,DML又可分成过程性DML和非过程性DML两种。
需要commit.
SELECT 查询数据
INSERT 插入
UPDATE 修改数据
DELETE 删除数据
MERGE
CALL
EXPLAIN PLAN
LOCK TABLE
插入一条记录:
insert into 表名 (列名1 , 列名2 , 列名3 )values(值1 , 值2 , 值3 );
修改一条记录:
update 表名 set 列名="修改后的值" where 条件;
删除一条记录:
delete from 表名 where 条件
查询一条记录:
select from 表名 where 条件
查询并修改:(过后必须commit)
select * from emp for update;
表达式:
select 1+1 from dual
select 1-1 from dual
select 3*2 from dual
select 4/2 from dual
select mod(6,4) ss from dual
取别名:
select 1+1 as 计算结果 from dual;
select 1+1 计算结果 from dual;
select uname 姓名,upass 密码 from dual;
select '姓名为:'||uname ||' 密码为:'|| upass as 基本信息 from usertbl;
用户信息 from usertbl;
select userid+upass as 结果 from usertbl;
关系运算符 > < = >= <= <> !=
select * from student where stuid>=2;
select * from student where stuid=2;
select * from student where stuid<>2;
select * from student where stuid!=2;
逻辑运算符 and or not
select * from student where stuid>1 and stuid<3;
select * from student where stuid>1 or stuid<3;
select * from student where not stuid>1
select * from usertbl;
集合操作符:
select * from student where stuid=1 or stuid=2
union
select * from student where stuid=2 or stuid=3;
select * from student where stuid=1 or stuid=2
union all
select * from student where stuid=2 or stuid=3;
交集intersect:
select * from st