Oracle基础学习笔记-基于马士兵Oracle视频

  • 2
  • 179 views
  • A+
所属分类:数据分析

#oracle默认用户:scott / tiger
#oracle默认端口号:5560
#oracle常用的客户端工具:toad和plsql
#oracle默认操作界面:sqlplus和网页
sqlplus tiger/password as sysdba

#解锁用户tigerdual用来做数学计算

alter user tiger account unlock;

#默认的三张表:emp,dept,sal

#字符串合并(||)如果有单引号,用两个单引号即可。
select empno || 'hello''world' from emp; #hello'world

#如果as列名有空格或者有中文、特殊符号、希望小写,需要用单引号引起来

#distinct后如果跟多个字段,表示取多个字段组合不重复的行

#虚表dual用来做数学计算
select 25 * 4 from dual;
select sysdate from dual;

#空值的处理is null和is not null
select * from sal where comm is not null

#in / not in
select * from sal where empno in (800,1500,2000)

#日期
#不使用日期函数时,条件中的日期必须按sysdate格式
select * from emp where hiredate > '20-2月-1981'

#模糊查询like
select * from emp where ename like '%all%'
select * from emp where ename like '_a%'

#默认的转义字符为反斜杠\
select * from emp where ename like '%\%%'

#排序
#系统默认是升序的
select * from emp order by empno desc, ename asc;

#综合例子
selet ename, (sal * 12) as '年薪' from emp where ename not like '_A%' order by ename desc;

#函数
lower(),upper(),substr(),chr(),ascii(),round()
select lower(ename) from emp;

select substr(ename,2,3) from emp;
select chr(65) from dual;
select ascii('A') from dual;
select round(23.456) from dual;
select round(23.356,2) from dual;
select round(23.456,-1) from dual;

#授权
#先用超级管理员登录
#直接切换用户
conn sys/password as sysdba;
grant create table, create view to scott;
conn scott/password as sysdba;

#view
#视图就是一个虚表,或者子查询
#视图的作用主要是限制权限(保护数据安全)、简化查询频率非常高的相同操作(简化查询)
#创建视图要认真考虑,视图太多一旦参考的表结构调整、维护工作量非常大
#视图可以用来更新数据,但是很少这么用,不安全
create view v$_all_emp as
select * from emp;

#使用
select * from v$_all_emp

#表空间
#用户登录后默认操作的是自己权限可以操作的表空间里的表,oracle默认创建了users表空间
#不同用户操作自己表空间里的内容,互不影响
#创建新用户并赋值表空间给他
#只有sys用户有权限穿件表空间
#请不要drop 系统自带的用户!
drop user xxxx cascade;

#创建新用户并把scott用户的表空间数据、权限等恢复给他
#备份scott用户
cd /home/tmp
exp #执行exp命令,其实是执行oracle的一个脚本
#创建新用户(以sys用户登录)
create user cherry identifed by zxcvbnm default tablespace users quota 100M on users;
grant create session,create table,create view to cherry;
#cd /home/tmp
imp #导入刚才备份的文件给cherry用户

#备份表的一种方式
create table emp2 as select * from emp;

#rownum
#创建表之后,系统默认给每一行指定了一个行号(看不见,但查询的时候可以作过滤条件)
#rownum只能和<和<=符号一起使用,不能和其他符号一起用,这个设计傻波
select * from emp where rownum <= 5;
select rownum r, ename from emp;

#oracle取第几行到第几行非常麻烦,要子查询实现
select enaame from(select rownum r, ename from emp) where r in (1,5)

#创建表
create table stu(
id number(6),
name varchar2(20) not null,
sdate date,
grade number(2) default 1,
email varchar2(20) unique
)

#五个约束条件(constraint)
非空(not null)、唯一(unique)、主键(key)、外键(foreign key)、check.
#unique字段可以插入null,不会报错;
#约束可以自己取名字,否则系统会给你取。(类似constraint xxxx not null)
#约束可以在单独字段加,也可以在表级别(在最后一个字段后加逗号,然后加约束)
#字段组合不允许重复(组合约束)
create table stu(
id number(6),
name varchar2(20) not null,
sdate date,
grade number(2) default 1,
email varchar2(20),
constraint xxxxx unique(name,email)
)

#数据字典(dictonary)
#所谓数据字典,就是oracle用来保存用户下的所有信息的表。
#数据字典的父表dictionary
desc dictionary;
desc user_names;
desc user_views;
desc user_tables;
desc user_constraints;
……以此类推

#索引
#索引主要是为了提升查询效率的,就跟新华字典一样
#但是除了读的效率提升,其他效率会降低,因为其他操作同时也要操作索引
#不要轻易建立索引,会降低其他操作效率、占用大量空间,除非某个字段读取频率非常高
#如果表里有主键或unique约束,则系统会自动创建索引或组合索引
#人工给某个字段或者某几个字段的组合创建索引
create index idx_stu_email on emp(email);
create index idx_stu_name_email(name,email);
#查询你有哪些索引plsql
select index_name from user_indexes;
#删除索引
drop index idx_stu_email

#plsql
#由于标准的sql语句没有分支(if ..else...)、循环(for...)等操作,对于比较复杂的数据库操作,使用标注SQL很难完成,因此各个数据库就诞生了一套夹杂SQL语句和其他关键字的编程语言,
oracle数据库中称为plsql(PL/SQL is Oracle's procedural extension to industry-standard SQL.)

#我们在学习的时候,如果要在命令行中显示plsql的执行结果,需要先打开一个配置:
set serveroutput on
#plsql写完之后输入/ 就能执行
#plsql标准结构:
begin
dbms_output.put_line('Hello World!');
end;

#整个语句块
declare
v_num number := 0;
begin
v_num := 2/v_num;
dbms_output.put_line(v_num);
exception
when others then
dbms_output.put_line('error');
end;

#declare 变量
#赋值 :=
#输出 dbms_output.put_line(xxx);
#变量定义约定俗成以v_开头

#plsql常用变量类型
binary_integer:用来做计数和数组下标的整形
number:数字,可以是整形或者小数
char:定长字符串

#plsql申明变量动态参考其他表里的字典%type
#动态参考,当参考对象变了,plsql里也会变
v_name emp.name%type
v_dept emp.dept%type

更多详细内容请点击右侧链接:oracle基础学习

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • ag

      视频教程:http://study.163.com/course/courseLearn.htm?courseId=344012

      • ag

        更多,百度搜索:马士兵 oracle 笔记