權(quán)限
? ? 系統(tǒng)權(quán)限:用戶對數(shù)據(jù)庫的相關(guān)操作權(quán)限
? ? 我通過system不僅要賦予user1登錄到數(shù)據(jù)庫的權(quán)限坊夫,還要讓user1能夠賦予其他人登錄權(quán)限(注:權(quán)限無法接力幔翰,除非管理員賦予權(quán)限可接力權(quán)限,grant 權(quán)限 to 用戶 with admin option )
? ? 對象權(quán)限:用戶是否有對其他用戶的對象進行操作的權(quán)限
用戶口令:profile猴蹂,文件內(nèi)包含了所有用戶的配置信息
? ? Oracle在創(chuàng)建完成之后就會有一個default的profile。
用戶鎖定
? ? 指定某一個用戶如果連續(xù)輸錯3次密碼,就將他鎖定切端,在2天之后自動解鎖
? ? create profile loak_account limit failed_login_attempts 3 password_lock_time 2;
? ? 新建profile文件? ?文件名? ? ? ? ? ? ? ? ? ? ?連續(xù)輸錯密碼次數(shù)? ? ? ? ? ? ? ? 自動解鎖時間
? ? 將創(chuàng)建的profile賦予給user1
? ? alter user user1 profile loak_account;
? ? 當user1被鎖定后,通過DBA解鎖
? ? alter user user1 account unlock;
Oracle中表(表格顷啼,二維表踏枣,table)的操作
? ? Oracle中表名的命名規(guī)范
? ? 1、必須以字母開頭
? ? 2钙蒙、表名的大小不能超過30個字符
? ? 3茵瀑、不能出現(xiàn)oracle中的關(guān)鍵字
? ? 4、名字中只能包含A-Z躬厌,a-z马昨,0-9,_
create table tablename(字段名1字段類型,字段名2字段類型鸿捧,.......)
Oracle中的數(shù)據(jù)類型:
? ? 1抢呆、字符型:
????????char(最大2000個字符,char為定長笛谦,當字段為定長時比如:身份證號抱虐,手機號,選用char)?
????????varchar2(最大可以表示4000個字符饥脑,varchar為變長恳邀,當字段為變長時比如:名字,選用varchar2)
????????clob(字符型大對象灶轰,最大可以存儲4G的字符)
? ? 2谣沸、數(shù)字型:
? ? ? ? number(取值范圍為10^-38~10^38,浮點數(shù):number(5,2)五位有效數(shù)字中有倆位小數(shù)笋颤,共有5位數(shù))
? ? 3乳附、時間型:
? ? ? ? date:年月日時分秒,不不必指定長度
? ? ? ? timestamp:時間戳伴澄,可以表示秒之后的小數(shù)
? ? 4赋除、圖片:
? ? ? ? blob? ? 二進制文件,圖片非凌,視屏举农,音頻
? ? ? ? 一般存儲相關(guān)文件的路徑
案例:創(chuàng)建一個學(xué)生表
? ? 學(xué)號,名字敞嗡,年齡颁糟,性別,獎金
? ? create table student_table(no number(4),name varchar2(9),age number(3),sex char(3),selary(6,3) );
? ? 查看表結(jié)構(gòu):desc tablename;
? ? 對表的修改操作:
? ? 添加一個字段:
? ? alter table tablename add(字段名 字段類型(長度))
? ? 修改一個字段(想修改的字段沒有數(shù)據(jù)):
? ? alter table tablename modify(字段名 字段類型(長度))
? ? 修改字段名:
? ? alter table tablename rename column 舊名字 to 新名字
? ? 刪除一個字段:
? ? alter table tablename drop column 字段名;
? ? 對表重命名:
? ? rename 舊表名 to 新名字;
? ? 刪除表:
? ? drop table tablename;
? ? 添加數(shù)據(jù):
? ? insert into tablename values(字符1,字符2,‘字符串’)喉悴,按照字段的順序輸入棱貌,字符串用單引號括起來
? ? ????因為Oracle默認的時間格式是dd-mm-yyy,但是我們想讓Oracle的時間格式為yy-mm-dd箕肃,需要更改設(shè)置婚脱。
? ? ????將Oracle的環(huán)境更改為英文,alter session set nls_language=english;
? ??????將Oracle的環(huán)境更改為中文突雪,alter session set nls_language=‘simplified chinese’;
? ? ????更改時間默認格式:alter session set nls_date_format='yyy-mm-dd'
? ? 只插入部分字段的數(shù)據(jù)
? ? insert into student_table (要插入的部分列) values(插入的部分數(shù)據(jù))
? ? 更改數(shù)據(jù):
? ? 修改一個字段:
? ? update tablename set 要修改的字段名=要修改的值 where 唯一標識 = '查詢條件'
? ? 修改多個字段:
? ? update tablename set 要修改的字段名1=要修改的值 起惕, 要修改的字段名2=要修改的值 where 唯一標識=‘查詢條件’
? ? 案例:將所有女性的工資修改成之前的一半
? ? update?tablename set sal = sal/2 where sex = '女';
? ? 刪除數(shù)據(jù)(回滾操作:rollback):
? ? 完全刪除
? ? delete from tablename;(數(shù)據(jù)可找回)
? ? truncate table tablename;(數(shù)據(jù)不可找回)
????? ? 設(shè)置保存點:savepoint 時間戳命名
? ? ????回退到保存點:rollback to 時間戳命名
? ? 案例:刪除員工表中員工編號為0020號的員工
? ? ????delete from emp where empno = 0020;
? ? 案例:刪除員工表中所有工資小于5000的員工信息
? ? ? ? delete from emp where sal<5000;
? ? Oracle中的查:用的最多涡贱,最復(fù)雜
? ? ? ? desc tablename:查看表結(jié)構(gòu)
? ? ? ? select * from tablename;查某張表中的所有數(shù)據(jù)(效率低)
? ? ? ? select 字段名1,字段名2 from tablename; 查詢某一個或者某幾個字段
? ? 案例:查看名為andy的工資與工作
? ? ? ? ????select sal,job from emp where ename='andy'
? ? 案例:查看andy的年工資
? ? ? ? ? ? select sal*12 年工資,job 工作 from emp where ename = 'andy'(可以在要查找的字段后面起別名咏删,字段名1 別名1,字段名2 別名2)
? ? 案例:查看員工號為0001的員工的名字和工種
? ? ? ? ? ? select ename,job from briup_emp where empno=0001;
? ??????????select ename||'的工種是'||job from briup_emp where empno=0001;(字符串的拼接)
? ? 案例:查看所有員工的年薪
? ? ? ? ? ? select sal*12+comm*12 年薪 from emp;(這么做,有問題问词,如果有員工的薪資為null督函,那么算出來的薪資也為null)
? ? ? ? ? ? select nvl(sal,0)*12+nvl(comm,0)*12 年薪 from emp;
? ? ? ? ? ? ? ? nvl(exp1,exp2);如果exp1這個字段的數(shù)據(jù)為null,則其值為exp2
? ? where 子句
? ? ? ? 案例:顯示工資低于5000的員工信息
? ? ? ? ? ? select * from emp where sal<5000
? ? ? ? 案例:查詢?nèi)肼殨r間在2004-01-01之后的員工信息
? ? ? ? ? ? select * from emp where startdate>'2004-01-01'
? ? ? ? 案例:查詢工資在3000到5000之間的員工信息
? ? ? ? ? ? select * from emp where sal<5000 and sal>3000
? ? like 子句(模糊查詢)
? ? ? ? 通配符:%:0~N個字符? ? “_”:表示一個字符
? ? ? ? 案例:查詢員工表中所有張姓的同事信息
? ? ? ? ? ? select * from emp where ename like '張%'
? ? ? ? 案例:查詢名字中第三個字母是a的員工的姓名和工資
? ? ? ? ? ? select ename , sal from emp where ename like '__a%'
? ???????案例:查詢名字中第三個字母是a的員工的姓名和工資
? ??????????select ename , sal from emp where ename like '%a__'
? ? in 子句
? ? ? ? 案例:查詢1號部門和2號部門的所有員工信息
? ? ? ? ? ? select * from emp where depton in (1,2);
? ? is / is not 子句
? ? ? ? 案例:查詢獎金為null的員工信息
? ? ? ? ? ? select ename from emp where comm is null
? ??????案例:查詢獎金不為null的員工信息
? ???????????select ename from emp where comm is not null
? ? and 和 or子句
? ? ? ? 案例:查詢工資大于5000或獎金大于500且名字里有a這個字符的員工信息
? ? ? ? ? ? select ename,sal from emp where (sal>5000 or comm>500) and ename like '%a%';?
? ? order by 子句(排序辰狡,默認升序排列)
? ? ? ? 案例:查詢所有員工的工資锋叨,并且從低到高來排序
? ? ? ? ? ? select ename ,sal from emp order by sal;
? ??????案例:查詢所有員工的工資,并且從高到低來排序
????????????select ename ,sal from emp order by sal desc;
? ? ? ? 案例:查詢所有員工的姓名宛篇,工資娃磺,部門編號,按照部門編號的升序且工資的降序叫倍。
? ? ? ? ? ? select ename,sal,deptno from emp order by depton,sal desc;
? ? ? ? 案例:將所有員工的年工資做降序排列
? ? ? ? ? ? select ename,sal*12 年工資 from emp order by 年工資 desc;??