標籤:添加 prim use birt max 語句 複數 update user
--oracle
--關聯式資料庫中有三種方式:一對一,一對多, 多對多
--SQL語句分類:
--DQL(資料查詢語言):select
--DML(資料操作語言):insert/update/delete/merge
--DDL(資料定義語言 (Data Definition Language)):create/alert/drop/truncate
--DCL(資料控制語言):grant/revoke
--約束:保持資料的完整性,資料的精確性和可靠性
--主鍵約束:primary key
--外鍵約束:foreign key
--非空約束:not null
--預設約束:default
--唯一約束:unique
--檢查約束:check
--簡單操作
--建立表
create table userinfo(
USERNAME varchar2(50) ,
PASSWORD number,
birth date);
--查詢語句(以emp,dept為例)
select * from emp;--查詢所有資料
select empno,ename,job from emp; --查詢指定資料
select distinct mgr from emp;--去除重複資料
select sal as"工資" from emp;--給sal重新命名(類別名添加雙引號)
select * from emp where sal>2500;--帶有限制條件where
select * from emp where hiredate>‘01-1月-1981‘;--1981年1月1日後的日期,注意時間的格式,預設格式‘01-1月-1981‘
--特殊比較子
select * from emp where sal between 2000 and 3000;--between...and ...確定範圍,兩個值之間,包括比較值
select * from emp where sal in (3000,5000);--in確定集合(是3000和5000的sal)
select * from emp where ename like ‘_O%‘--like字串匹配查詢 _:代替一個字元 %:代替任意長度字元
select * from emp where ename like ‘_\O%‘ escape ‘\‘;--escape轉義符“\”可以選擇資料中含有_的資料
select * from emp where mgr is null; --is null(判斷空值)
--邏輯運算子(and,or,not)
select * from emp where sal>=4200 and sal<=6000;--and
select * from emp where sal>4500 or hiredate>‘01-1月-1981‘;--a或b
--order...by...
select * from emp order by sal asc;--排序asc(升序,可不寫),desc(降序)
--刪除表
drop table userinfo;
--dual
select * from dual;
select * from userinfo;
--更新
update userinfo set username=‘hello‘ where username=‘haha‘;
--插入
insert into userinfo values(‘haha‘,‘haha123‘,‘[email protected]‘);
insert into userinfo values(‘hehe‘,‘hehe111‘,‘[email protected]‘);
insert into userinfo(username)select ename from emp;--將emp表中的ename放在userinfo中
--刪除
delete userinfo where username=‘hello‘;
delete userinfo where password is null;
--多表串連
select * from emp e,dept d where e.deptno=d.deptno;--等值串連
--外串連--(+)放在沒有與之相匹配的表的那一端
select ename,loc from emp e left outer join dept d on e.deptno=d.deptno;--左外串連
select e.* from emp e right outer join dept d on e.deptno=d.deptno where sal>2000;--右外串連
select * from emp e full outer join dept d on e.deptno=d.deptno;--全串連
--內串連(等值串連)
select ename,loc from emp e join dept d on e.deptno=d.deptno;
--自串連(查詢員工姓名和所對應的經理的姓名)
select w.ename 員工姓名,m.ename 經理姓名 from emp w,emp m where w.mgr=m.empno;
--交叉串連(笛卡爾積)
select * from emp cross join dept;
select * from emp;
select * from dept;
--自然串連
select * from emp natural join dept;
--usering子句
select * from emp join dept using(deptno);
--on子句
select * from emp e join dept d on e.deptno=d.deptno;
--分組函數
--min max sum avg count
--group by ... having ...
--無關子查詢:先執行子查詢,再執行父查詢
--相互關聯的子查詢:先用父查詢得到一行資料,利用其中的資料進行判斷。
--查詢入職最早的前5名員工姓名
select ename from emp e where (select count(*) from emp where hiredate<e.hiredate)<5;
--查詢不是經理的員工姓名(is not null 有空值時使用)
select ename from emp where empno not in(select mgr from emp where mgr is not null);
--分頁查詢
select * from (select rownum r,e.* from emp e where rownum<=5)where r>0;
select * from (select rownum r,emp.* from emp)where r>0 and r<=5;
--關鍵字:select...from...where...group by...having...order by...
--優先順序:from>where>group by>having>select>order by
oracle基礎(CRUD)