(1)DDL语言(data definition language)数据定义语言
1.建表 create table
2.操作表 alter table
alter table 表名 add 要添加的字段名
;alter table 表名 drop column 要删除的字段名
;alter table 表名 rename 原字段名 to 新字段名
;alter table 表名 modify 字段名 字段类型
;3.删除表 drop table
(2)DML语言(Data Manipulation Language)数据操纵语言
1.新增记录:insert into 表名(字段名...) values(信息...)
;
2.修改记录:update 表名 set 要修改的字段记录 where 判断条件
;
3.删除记录:delete from 表名 where 判断条件
;
(3)DQL语言(DQL Data Query Languate) 数据查询语言
1.查询记录:select 查询的字段 from 表名 where 判断条件
;
(4)DCL语言(Data Controller Languate) 数据控制语言
1.解锁: conn / as sysdba --用sys登录
alter user 用户名 account unlock --给用户解锁
锁定:alter user 用户名 account lock
2.创建用户:create user 用户名 identified by 密码
修改用户密码:alter user 用户名 identified by 密码
3.删除用户:drop user 用户名
drop user 用户名 cascade 删除用户和用户创建的对象
4.常用角色:
connect【修改会话的权限】
resource【创建table、view、procedure、trigger的·权限】
dba【拥有所有的系统权限,包括配置表空间,赋给其他用户权限】
5.权限:
grant create session to 用户名 [with admin option(权限可传递)]
revoke create session from 用户名 查看当前用户: select * from session_privs
grant 权限 on 对象 to 用户名 [with grant option(权限可传递)]
revoke 权限 on 对象 from 用户名
select * from user_tab_privs
6.角色:
connect角色
:该角色具有创建会话,修改会话等权限resource角色
: 具有创建表格(create table),创建视图(create view),创建存储(create procedure) 等 权限dba角色
:拥有所有的系统权限,包括无限制的空间选额和给其他用户授予各种权限的能力。用户SYSTEM 拥有DBA角色。grant 角色名... to 用户名
revoke 角色名 from 用户名
select * from user_role_privs
select * from role_sys_privs
create role 角色名
drop role 角色名
grant 权限名 to 角色名
revoke 权限名 from 角色名
select * from dba_sys_privs where grantee =角色名; --注意: 当前登录用需要dba角色的权限才能查看
7.表空间是数据库最大的逻辑单元,一个Oracle数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。在oracle中所有的表都存储在表空间中。
a. 创建user1_tablespace表空间--------- 注意:创建表空间需要对应的(create tablespace)权限
CREATE TABLESPACE user1_tablespace --表空间名称
DATAFILE 'E:\user1.DBF' ----路径名称
SIZE 100M ----是指定该数据文件的大小,也就是表空间的大小。
AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED ----大小自动扩展,没有最大限制
LOGGING ----logging 表示在创建表空间时,将生成日志记录
EXTENT MANAGEMENT LOCAL ----表示创建的表空间采用"本地化"方式管理
SEGMENT SPACE MANAGEMENT AUTO; ----设置表空间中段的管理方式为自动;
b. 创建了表空间怎么样 (分配给用户) 如果创建用户没有设置默认表空间,则默认为USERS表空间
CREATE USER 用户名
IDENTIFIED BY 密码
DEFAULT TABLESPACE user1_tablespace
c. 查看用户对应的默认表空间
SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS where USERNAME='user1';
d. 修改用户的默认表空间
alter user 用户名 default tablespace user1_tablespace;
e. 查看表空间的名称及大小
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) "ts_size(M)"
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;
f. 查看表空间物理文件的名称及大小
SELECT tablespace_name,
file_id,
file_name,
round(bytes / (1024 * 1024), 0) total_space
FROM dba_data_files
ORDER BY tablespace_name;
g. 查看表空间的使用情况
SELECT SUM(bytes) / (1024 * 1024) as "free_space(M)", tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;
h. 增加数据文件
ALTER TABLESPACE user1_tablespace
ADD DATAFILE 'E:\user1_add.DBF' --添加数据文件
SIZE 100M --大小100M
AUTOEXTEND ON -- 大小自动扩展
NEXT 10M --扩展的增量为10M
MAXSIZE 1024M; --最大扩展到1024M
i. 修改数据文件的大小
ALTER DATABASE DATAFILE 'E:\user1_add.DBF' -- 文件路径
RESIZE 50M;
j. 删除数据文件
ALTER TABLESPACE user1_tablespace
DROP DATAFILE 'E:\user1_add.DBF'
k. 删除表空间
删除user 只是删除了该user下的schema objects,是不会删除相应的tablespace的
drop user ×× cascade
删除tablespace
DROP TABLESPACE tablespace_xxx INCLUDING CONTENTS AND DATAFILES;
(5)约束
约束:保证数据库中数据的安全性
1.主键约束(唯一性、非空性):primary key
语法:alter table 表名 add constraint 约束名 primary key(约束的字段名)
2.唯一约束(唯一性,可以为空):unique
语法:alter table 表名 add constraint 约束名 unique(约束的字段名)
3.检查约束:check
语法:alter table 表名 add constraint 约束名 check(约束的字段名)
4.外键约束:foreign key
语法:alter table 表名 add constraint 约束名 foreign key(约束的字段名) references 主表 名(关联的字段名)
【on delete cascade(删除主表时,从表也删除)/on delete null(删除主表时,从表的关联设为空)】
(6)查询
1.单表查询
语法:select [distinct] 字段名 from 表名 where 条件 order by 排序字段 [asc/desc]
distinct
like '%*%'(包含*的)、like '*%'(以*开头的)、like '%*'(以*结尾的)
not
order by 排序依据 【 desc:降序/asc:升序(默认)】
2.分组查询
语法:select 分组的字段 ,查询的字段 from 表名 group by 分组的字段 having 查询条件
分组函数:
count
(统计函数)、max
(最大值)、min
(最小值)、avg
(平均值)、sum
(求和)数字函数:dual(dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录)
abs
(绝对值)、sqrt
(求平方根)、power
(求幂)、round
(四舍五入)字符函数:dual
concat(字符1,字符2)
replace(字符串,被替换的字符,替换的字符)
substr(字符串,从第几个开始,截取几个)
upper(被转的字符串)
lower(被转的字符串)
转换函数:dual
to_date(字符串,日期格式)
to_char(日期,'yyyy')得到日期的年份
、 to_char(日期,'mm')得到日期的月份
to_char(日期,'dd')得到日期的日(几号)
、to_char(日期,'day')得到日期的星期
日期函数:dual
select sysdate,add_months(sysdate,3) hz from dual;
select sysdate,last_day(sysdate) hz from dual;
select extract (year/month/day from date '2001-2-16' ) from dual;
3.内联查询:将一个查出来的结果当做条件来查询
4.多表关联查询
连接运算:连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分(符合选取运算)的行合并在一起
select 查询的字段 from 表1 left/right/inner join 表2 on 条件
left[outer] join(左连接)
:返回包括左表(集合)中的所有记录和右表(集合)中联结字段相等的记录right[outer] join(右连接)
:返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接)
:只返回两个表中联结字段相等的行(7)视图
1.视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中, 而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。
2.作用:
3.语法:
创建: create 【or replace】 view 视图名(视图字段名) as 结果集 【 with read only】
or replace
:若所创建的试图已经存在,ORACLE自动重建该视图;
force
:不管基表是否存在,ORACLE都会自动创建该视图;
noforce
:只有基表都存在,ORACLE才会创建该视图;
with read only
:该视图上不能进行任何DML操作;
with check option
:插入或者修改的数据必须满足视图定义的约束
删除: drop view 视图名
;
删除视图不影响基表中的数据。
(8)索引
1.类似书的目录结构,索引直接指向包含所查询值的行的位置,减少磁盘I/O,与所索引的表是相互独立的物理结构,Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引。
2.作用:提高数据库查询语句的速度
3.类型:
a.唯一索引:当某列的值都不相同时(当建立主键约束或唯一约束时会自动建立唯一索引)
语法:create unique index 索引名 on 表名(表字段)
b.组合索引:当两个或多个列一起出现在where条件中时,则在这些列中同时创建组合索引
语法:create unique index 索引名 on 表名(表字段)
c.反向索引:
语法:create unique index 索引名 on 表名(表字段) reverse
d.位图索引:列中有非常多的重复的值时候。例如某列保存了 “性别”信息。Where 条件中包含了 很多OR操作符。较少的update操作,因为要相应的跟新所有的bitmap
语法:create bitmap index 索引名 on 表名(字段名)
结构:位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE(1)、FALSE(0)、或NULL值。
优点:位图以一种压缩格式存放,因此占用的磁盘空间比标准索引要小得多
e.基于函数索引:在WHERE条件语句中包含函数或者表达式时
语法:create index 索引名 on 表名(function(字段名))