oracle笔记

2-1
启用scott用户
alter user username account unlock  #lock锁定  unlock解锁  account账号
例:alter user scott account unlock
conn scoot/tiger

进入表
select table_name from user_tables;  #user_tables 当前表信息

2-2
表空间分类:永久、临时、UNDO   #UNDO回退
创建表空间
create tablespace 名称 datafile '文件名' size 10m;  #size 后设定文件大小
临时
create temporary  tablespace 名称 tempfile '文件名' size 10m;
查询表空间位置
select file_name from dba_data_files where tablespace_name = '表空间名';

2-3
创建用户
create user 名字 identified by 密码  default tablespace 表名 temporary tablespace 临时表名  #dentified by 设置密码   ,已存在的表空间,default tablespace   #指定默认永久表空间   temporary tablespace #指定临时表空
查看用户
select unsername from dba_users
创建的用户授权
grant 权限 to 用户名
例:grant connect to yan;  #connect 连接权限,不能创建  resource 连接并创建实体  dba 连接创建数据库结构
连接创建用户
connect 用户/密码
更改密码
alter user 用户名 identified by 新密码;
不希望某用户登入,而又不删除,锁定用户
alter user 用户名 account lock;  # 用2-1相反
删除用户
drop user 用户名 cascade;  #加cascade则将用户连同其创建的东西全部删除

2-4
创建角色
create role 名字 ; 有了角色就能赋给多个权限,然后直接分配给用户
给角色权限:grant create table,create view to 角色名;  #赋予创建表创建视图权限
角色赋予用户权限:grant 角色名 to 用户;
拿回权限:revoke 角色名 from 用户;
删除角色:drop role 角色名;

2-5
查询oracle所有系统权限;
select *from sysyem_privilege_map;
查询oracle所有对象权限;
select *from table_privilege_map;  #常用权限select ,update,insert ,delete,all 所有权限

2-6
dba_tablespaces  #系统用户
user_tablespaces #
查看用户表空间
select tablespace_name from dba_tablespaces;
修改用户默认或临时表空间
alter user username default|temporary tablespace table_name;
例:alter user user01 default tablespace test1_tablespace temporary tablespace temptest1_tablespace;

2-7
修改表空间的状态
联机或脱机
alter tablespace 表空间名 offline;  #offline 脱机  ,read only 只读  ,read write  可读写,默认状态
修改数据文件
增加 删除文件
alter tablespace table_name add datafile '名称' size xx;  #add datafile 增加文件,drop datafile 删除文件

3-1
oracle sql developer工具下载

3-2
DDL 数据定义语音 create table  ,create index,drop table ,drop index ,truncate ,alter table,alter table add constraint.
DML 数据操作语言insert 添加. update修改,delete删除 ,select查询
DCL 数据控制语言grant授予权限,revoke回收权限,lock锁定
TCL 事务控制语言commit提交事务处理.rollback事务处理回退,savepoint设置保存点


3-3
创建表 create table table_name
        (
             column_name datatype,...            #column_name列名
             );
 数据类型
 字符类型:char 固定长度1-2000字节   varchar2 可变长度 最大4000字节
 数值类型:NUMBER[(p[,s])]  # p精度,s小数位,可以存储整数、浮点数等数值类型,最高精度38位
 例:number(5,0)最多可存储5位整数  number(5,2)   999.99
日期类型:date
lob类型:clob能存储大量字符数据   blob可存储较大二进制,如图形、视频剪辑和声音文件

3-4
约束constraint
主键约束 primary key     
创建constraint sid_pk primary key(sid) ;
修改 alter table table_name add constraint sid_pk primary key(sid);
删除主键约束:drop primary key

唯一性约束 unique
默认约束  default
非空约束 not null
检查  check
外部键 foreign key

3-5
非空约束:not null   #直接在列级后加not null
列级约束:colum [constraint constraint_name] constraint_type;   在列后面直接添加
表级约束:column sid_pk primary key(sid);  单独一行添加
修改表添加约束:
alter table table_name
   add  [constraint constraint_name] constraint_type (column);
alter table table_name   #非空约束使用
   modify (column datatype not null) ;
 删除约束:
 无效化或激活:disable | enable constraint constraint_name
 彻底删除:drop constraint constraint_name
                 alter table table_name           #非空约束推荐使用此方法删除
                         modify column_name datatype NULL;  
 
3-6
唯一性约束
创建
列级约束:直接加unique
表级约束:constraint uk_cardid unique(cardid)
修改:alter table table_name add constraint uk_cardid unique(cardid);
禁用约束:alter table table_name disable constraint constraint_name;
彻底删除:alter table table_name drop constraint constraint_name;

3-7
检查约束
列级约束:check(sex='男' or sex='女')
表级约束:constraint ck_sex check(sex='男' or sex='女')
修改:alter table table_name add constraint ck_sex check(sex='男' or sex='女')
禁用约束:alter table table_name disable constraint constraint_name;
彻底删除:alter table table_name drop constraint constraint_name;

3-8
外键约束
列级约束:create table (column_name datatype peferences   #从表
                (column_name) [on delete cascade],...);               #主表
表级约束:constraint constraint_name foreign key (column_name)
peferences 主表(column_name)
[on delete cascade]
修改外键:alter table table_name add constraint fk_depid foreign key(depid)
             references department(depid)
             on delete cascade;
禁用约束:alter table table_name disable constraint constraint_name;
彻底删除:alter table table_name drop constraint constraint_name;

 3-9
 修改表
 添加列 alter table table_name add 新增列名 数据类型;
 例:alter table student add tal varchar2(11);
 修改列alter table table_name modify 列名 新数据类型
 例:alter table student modify tel number(11,0);
 删除列 alter table table_name drop column 列名;
 例:alter table student drop column tel;
 修改列名alter table table_name rename column 列名 to 新列名;
 例:alter table student rename column sex to gender;
 修改表名: rename 表名 to 新表名;
 例:rename student to studentinfo;
 删除表
 truncate table 表名;   #用于删除表中的全部数据,并不是把表结构删除掉,速度比delete快,叫截断表
 drop table 表名;   删除表结构
 
 3-10
 表的增删改查
 DML 数据操作语言insert 添加. update修改,delete删除 ,select查询
 添加信息:insert into 表名[(列1,列2...列n)] values(值1,值2...值n);
 例:insert into student(sid,name,sex) values(20010001,'张三','女');
 查询select *| column[,...] from 表名;
 例:select sid,name from student;
 select * from student;
 修改信息:update table set column = value [where condition];
 例:update student set tel = '13599998888' where sid = 20010001
 update student set address = '辽宁省大连市'
 删除信息:delete from table [where condition];
 例:delete from student;
 delete from student where sid = 20010011;
 
 3-11
TCL 事务控制语言commit提交事务处理.
rollback事务处理回退,
savepoint设置保存点: savepoint a;设置保存点 ,rollback to a; 回滚部分事务 ,roolback 回滚全部事务


 3-12
 数据字典:user_*、all_*、dba_*
 查看相应数据库信息
 查看当前用户下的用户信息select * from user_users;
 当前用户有权访问的所有用户的基本信息select * from all_users;
 数据库所有用户的用户信息:select * from dba_users;
 
 
 4-1
 单表查询
 select * [{distinct] column | expression [alias],...} from table [where condition]
 table 用户名   column 用于指定列名 expression 用于指定表达式  alias   用于指定列的别名  condition  用于指定查询条件
 特定列查询
 全部列查询
 排除重复行distinct   ,select distinct depton,job from emp;
 日期列的查询:默认格式DD-MON-RR  ,RR代表年,  
     简体中文显示:nls_language参数设置成simplified chinese,alter session set nle_language = 'simplified chinese';       #'AMERCAN'美国显示
     特定格式显示:alter session set nls_date_format = 'YYYY/MM/DD';
 条件查询
 对查询结果排序
 
 
 4-2
 算术运算符查询
 select empno,ename,sal,sal * 12 from emp;
 例:需求,查看雇员编号,雇员名,年收入(年薪加半月工资)
 select empno, ename , sal*12+sal/2 from emp;
 
 
 4-3
 列别名 as
 使用列的别名:select empno "雇员编号", ename "雇员名", sal*12 "全年工资" from emp;
 select empno as "雇员编号", ename as "雇员名", sal*12 as"全年工资" from emp;
 连接符 ||
 列与列 列与字符连接
 例:select ename || sal || job from emp;
 
 4-4
 where 子句使用数字值
 select * from emp where deptno = 20;
 where 子句使用字符值
 select * from emp where job = 'MANAGER';
  where 子句使用日期值
 select * from emp where hiredate = '02-4月-81';
 比较运算符

 
 4-5
 范围查询between..and
 between  较小值 and 较大值
 例select empno , ename ,sal from emp where sal between 1500 and 3000;
 范围查询in
 in(值1, 值2...值n)
 select empno ,ename , job from emp;
 where job in ('salesman','MANAGER','clerk');
 等价于select empno,ename,job from emp where job = 'salesman' or job = 'MANAGER' or job = 'clerk';
 模糊查询like
 需要%和_搭配使用 %表示0个或多个字符  _表示单个字符
 例:select * from emp where ename like 'J%';
 select * from emp where ename like '_AR%';
 模糊查询中特殊符号的处理
 字符本身有_和%就要用escape和转义符
 回避特殊字符:使用转移符,例:[%]转为[\%]、[_]转为[\_],然后再加上[escape '\']即可
 例:select * from emp where ename like 'G\_' escape '\';
 判断空值is null
 操作符用于检测列或表达式的结果是否为NULL,如果为NULL,返回true,否则false
 判断列或表达式的结果是否为空可以用is null 或is not null 但是不能用= null或<>null 来判断
 例select empno, ename ,sal .comm from emp where comm is null;
 select empno, ename,sal,comm from emp where comm is not null;
 
 
 4-6
 逻辑操作符and 优先级2  or优先级3    not 优先级1
 
 
 4-7
 单列排序
 多列排序
 使用列别名排序
 排序数据order by 子句
 select * | column[,column...] from table [where condition] [order by column [asc|desc]]; #asc 升序 desc降序
 注意:order by必须是最后一条语句
 升序:如果排序列存在NULL行,那么NULL显示在最后面
  select ename,sal from emp order by sal asc;
  select ename,sal from emp order by sal;   #默认升序
  降序:NULL在最前面
  select ename,sal from emp order by sal desc;
   使用列别名排序
   select empno,ename,sal * 12 年收入 from emp order by 年收入 desc;
   多列排序:首先按第一列排序,第一列相同后以第二列进行排序
   例:select empno,ename,deptno,sal from emp order by deptno asc,sal desc;
   
 4-8
 SQL PLUS
 
 5-1
 SQL函数:单行函数和多行函数
 字符函数:
 大小写控制函数:upper大写 、lower小写、initcap首字母大写
 字符控制函数: concat(str1、str2)连接、
 substr(char,m[,n])截取 #char指定源字符串,m用于指定从哪开始截取,n用于截取长度,m为0首字符开始,m负数,从尾部开始
 length长度、
 instr(char1,char2[,n[,m]]) #用于取得字符串位置,char1 用于指定源字符串,char2指定子串,n指定搜索位置,m第m次出现的次数
 lpad(char1,n,char2)左端填充,#n用于填充后char1的总长度
 rpad (char1,n,char2) 右端填充
 trim
 replac(char,search_string[,replacement_string]):  替换
 例:replac('hello oracle','oracle','world')
      结果:hello world
 
 
 5-2
 数值函数:round(n,[,m])四舍五入  #n任意数,m整数  例:round(25.328,2) 结果:25.33
 trunc(n,[m]) 截取数字,#n任意数字,m必须整数截取位, 例:trunc(25.328) 结果:25
 mod(m,n)  求余数:例mod(25,6) 结果1
 
 5-3

sysdate:当前系统时间 可-1 +1

months_between(d1,d2): 按月计算  ,两值的时间差,round()四舍五入,

add_month(d,n):返回特定时期时间之后或之前的月份所对应的日期时间

next_day(d,char): 必须和系统时间对应 ,例:(sysdate,'星期一')

last_day(d):当前的最后一天

trunc(d[,fmt]):用于截断日期时间数据,d用于指定日期时间值,fmt用于指定截断日期时间数据的方法trunc,例(sysdate,'year'),(sysdate,'month')
 

5-4

转换函数

to char(d[,fmt[,'nlsparams']]) d指定日期值,fmt 指定日期格式模型(默认dd-mon-rr) ,nlsparams指定日期语音          

todate()

to_number()    to_char()

 

5-5

通用函数

NVL(expr1,expr2):如果expr1是null,返回expr2

NVL(expr1,expr2,expr3)如果expr1是null,返回expr2,如果expr1不是null返回3

NVLLIF(expr1,expr2) 1=2 返回null 否则返回 expr1

coalesce(expr1,expr2)返回表达式列表第一个not null表达式的结果

 

5-6

条件表达式

case表达式

case 列名

  when(当它是)  ‘’  then (显示为)‘’

else 否则显示 ‘’

end

decode函数

decode() 当列等于条件1返回result1 条件2返回result2 ,不满足返回default

 

5-7

嵌套函数

6

分组函数

行转列:wm_concat(列名)

group by 不包含组函数都需要加入group by

having:where后不允许使用分组函数,需加having

 

7-1

 

posted @ 2018-09-27 06:49  ssyyhh  阅读(233)  评论(0编辑  收藏  举报