oracle複習(一)

1、系統操做
cmd->sqlplus / as sysdba; //以管理員身份登陸數據庫
alter user system account unlock; //解鎖用戶system
alter user scott identified by tiger; //把scott的密碼改成tiger
grant resource,connect to scott; //給scott賦予多個權限
role 角色(connect,resource)
grant 權限/角色 to 用戶名 //賦予權限
revoke 權限/角色 from 用戶名 //解除權限sql

2、表的數據類型
number(5) -數值型
number(18,2)-錢 ,18是長度,2是小數點後兩位
nvarchar2(20) -字符串。(支持中文)
varchar2(20) -字符串,(不支持中文)
date 日期類型。 年月日,時分秒
timestamp 日期類型。 年月日,時分秒毫秒
nclob -大數據類型。 存儲大量文本文檔(可存中文)
clob -大數據類型。 存儲大量文本文檔(不可存中文)
blob -大數據類型。 存儲大量二進制數據,存儲圖片數據數據庫

3、表的構成
1.primary key 主鍵,能惟一表示一條記錄 用主鍵 來 強制約束,不能重複。
2.foreign key 外鍵 表的外鍵是另外一表的主鍵, 外鍵能夠有重複的, 能夠是空值。
3:列的默認值:在插入一條數據時,不須要人爲給定值,系統自動加上指定的默認值。
4:範圍約束
age>= 6 and age <= 10
sex='男' or sex='女'
限制姓名的長度:
length(name)>=1 and length(name)<=2 安全

4、sql語句
1.增長數據:insert into
語法:insert into 表名(字段列表1,字段名2) values(值列表);
把字符串'1990/08/08'按'yyyy/mm/dd'格式轉換成date類型to_date('1990/08/08','yyyy/mm/dd')
增長一條記錄到t_student表
insert into t_student
(studentid,name,sex,birthday,age,classnum)
values(4,'小明',0,to_date('1990/08/08','yyyy/mm/dd'),27,1);
2.刪除數據: delete from
語法:delete from 表名 where 條件
3.修改數據: update
update 表名 set 列名=新值
給每一個員工的工資增長200元
update emp set sal=sal+200;
給每一個員工的工資減200,可是獎金增長3000
update emp set sal=sal-200,comm=3000;
給工做等於CLERK的員工獎金翻倍
update emp set comm=comm*2 where job='CLERK';
4.查數據: select
select 列名1,列名2,列名...from 表名
select * from 表名 表示查詢表中的全部列
select * from 表名 where 條件
select 列名 from 表名 where 條件
select * from emp where job in('CLERK', 'SALESMAN') in(值列表) not in(值列表)
模糊查詢like
通配符:%表明0-N個字符
select * from emp where ename like '%S%'
通配符; _表明一個字符
5.排序:order by 字段 排序順序 asc是升序,desc是降序
6.去除重複的數據: select distinct job from emp;
7.查詢工資大於1K而且工做=CLERk而且名字帶S的員工信息
select * from emp where sal>=1000 and job='CLERK' and ename like '%S%'
8.oracle對每條記錄 有一個惟一標識(字符串形式),rowid
rowid根據記錄的存儲地址 生成。
rownum是一個虛擬不存在的字段,表示「結果記錄」的序號
查詢5條記錄
select t.*,t.rowid,rownum from emp t where rownum<=5
*查詢表別名:
select * from 表名 別名
select t.*,t.rowid from emp t
select e.empno,e.ename,e.job from emp e
9.序列
標識列(自動增加的列)
create sequence seq_sid
minvalue 1
maxvalue 1000000
start with 1
increment by 1
cycle;
序列有當前值,及下一個值
當前值:序列名.currval
取下一個值:序列名.nextval
往學生表增長數據,主鍵從序列取值
insert into t_student values(seq_sid.nextval,'aaa',0,sysdate,1,15);
select * from t_student;oracle

5、視圖
視圖能夠簡化 複雜查詢
視圖是給 複雜查詢 取別名
視圖能夠隱藏 查詢細節,更安全。ide

6、索引
索引是 數據表 的 目錄
索引的做用 是 加快 查詢速度
索引的類型:normal,unique(惟一索引),bitmap(位圖索引)
unique索引:做用的數據字段值不能重複
normal索引:數據字段值能夠重複(相似姓名字段)
bitmap索引:適合加到字段只有某幾個值的表中(適合性別字段,只有'男','女'2個值)函數

7、oralce函數
Upper把字符串轉換成大寫
select e.empno,upper(e.ename) from emp e;
select upper('asdf') from dual;
lower把字符串轉換成小寫
select e.empno,lower(e.ename) from emp e;
select upper('SADFSDF') from dual;大數據

八substr函數
substr(要截取的字符串,從什麼位置開始截取1表示開始位置,截取長度)
select e.empno, substr(e.ename,1, 2) from emp e;orm

9、instr函數
instr(要查找的字符串,被查找的子串,開始查找的位置)
返回查找到的位置,若是沒有,返回0
查找位置若是是負數,則表示從後面往前面找。
select instr('hello world','o', -9) from dual;排序

10、length(字符串)
返回字符串的長度
select length('Hello') from dual;返回5索引

lengthb(字符串)返回字符串的字節數 select lengthb('Hello中文') from dual;返回9

相關文章
相關標籤/搜索