Oracle數據庫 sql
目錄數據庫
1. 數據庫初步 1 函數
4. 多表查詢 4blog
7. 建立和管理數據表,對錶進行的操做 建立刪除修改表 13事務
8. 數據處理,對數據表中的數據進行處理 增刪改查。 15ip
9. 約束(not null非空,unique惟一性,primary key主鍵,foreign key外鍵,check檢查) 17
SQL語句分爲如下三種類型:
DML::Data Manipulation Language 數據庫操縱語言
DDL::Data Definition Language 數據庫定義語言
DCL::Data Control Language 數據庫控制語言
Select * from employee; |
Select department_id from employee; |
Select department_id as "department" from employee; |
Select distinct department_id from employee; |
Distinct employees; |
Select employee_id from employees where department_id=90; |
Select employee_id from employees where salary<=3000; |
Where語句可跟>,<,>=,<=,=,!=等等,其中字符和日期用單引號'字符串',不能使用雙引號。 |
Select last_name,salary from employees where salary between 2500 and 3000; |
Select employee_id ,last_name from employees where manager_id in(101,201); |
Select first_name from employees where first_name like '_o%'; 表示第二個字符是'o',後邊有零個或多個字符 |
Select last_name from employees where manager_id is null; |
Select employee_id,last_name from employees where salary>1000 and job_id like '%MAN%'; |
Select employee_id,last_name from employees where salary>1000 or job_id like '%MAN%'; |
Select last_name ,job_id from employees where job_id not in ('IT_PROG','ST_CLERK'); |
Asc :升序(ascend默認升序)
Desc:降序(descend)
Select last_name,job_id,department_id,hire_date from employees order by hire_date; |
Select last_name,job_id,hire_date from employees order by hire_date descend; |
Select last_name,salary,department_id from employees order by department_id,salary desc; 先按department_id排序,而後按照salary排序 |
select last_name,department_id,salary from employees order by salary,department_id desc; 先按salary排序,而後安好department_id排序。 |
Select employees.department_id,departments.department_id from employees,departments where employees.department_id=departments.department_id; |
查詢兩個數據表中department_id相同的數據 |
使用表名前綴在多個表中區分相同的列 在不一樣的表中具備相同列名的列能夠用表的別名加以區分。 |
Select e.employee_id ,e.last_name ,d.department_id,d.location_id from employees e,departments d where e.department_id=d.department_id; |
使用別名能夠簡化查詢, 使用表名前綴能夠提升執行效率 |
鏈接n個表,至少須要n-1個鏈接條件,例如:鏈接三個表,至少須要兩個鏈接條件。
select e.last_name,e.salary,j.grade_level from employees e,job_grades j where e.salary between j.lowest_sal and j.highest_sal; |
A inner join B on 條件
A left join B on 條件
A right join B on 條件
A full join B on 條件
select worker.last_name || 'work for'||manager.last_name from employees worker,employees manager where worker.manager_id=manager.employee_id; |
首先,先給employees員工起別名,worker,manager,而後查找的是worker.last_name和manager.last_name。條件是worker.manager_id與manager.employee_id相同。 |
分組函數做用於一組數據,並對一組數據返回一個值。
Commission_pct:表示忽略空值
Where和group by是兩個子句。
使用having過濾分組,
Having後面緊跟組函數:如max(),avg(),min(),count(),sum()等等
使用having子句
使用嵌套
注意:
題目:返回job_id與141號員工相同,salary比143號員工多的員工的姓名,job_id,和工資。
題目:返回公司工資最少的員工的last_name,job_id和salary
題目:查詢最低工資大於50號部門最低工資的部門id和其最低工資
返回多行
使用多行比較操做符
必須指定:表名,列名,數據類型,尺寸
使用 ALTER TABLE 語句追加, 修改, 或刪除列的語法
數據和結構都被刪除
全部正在運行的相關事務被提交
全部相關索引被刪除
Drop table語句不能回滾。
刪除表中全部的數據
釋放表的存儲結構
Truncate 語句不能回滾。
若是想要回滾數據,能夠使用delete語句
Delete from emp2;select * from emp2;rollback;select * from emp2;
使用insert語句向表中插入數據,
使用這種語法一次只能向表中插入一條數據。
沒必要書寫 VALUES 子句。
子查詢中的值列表應與 INSERT 子句中的列名對應
使用update語句更新數據
能夠一次更新多條數據
若是省略where子句,則表中的說有數據都將被更新。
能夠在update語句中使用子查詢
題目:更新 114號員工的工做和工資使其與205號員工
相同。
使用 DELETE 語句從表中刪除數據。
使用where子句刪除指定的記錄,
若是省略where子句,則表中的所有數據將被刪除
在delete中使用子查詢
系統命名
用戶命名
系統命名:
用戶命名:constraint前要加逗號。
PRIMARY KEY 約束惟一標識數據庫表中的每條記錄。
主鍵必須包含惟一的值。
主鍵列不能包含 NULL 值。
每一個表都應該有一個主鍵,而且每一個表只能有一個主鍵。
系統命名:
用戶命名:
一個表中的 FOREIGN KEY 指向另外一個表中的 PRIMARY KEY。
FOREIGN KEY 約束用於預防破壞表之間鏈接的動做。
FOREIGN KEY 約束也能防止非法數據插入外鍵列,由於它必須是它指向的那個表中的值之一。
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
CHECK 約束用於限制列中的值的範圍。
若是對單個列定義 CHECK 約束,那麼該列只容許特定的值。
若是對一個表定義 CHECK 約束,那麼此約束會在特定的列中對值進行限制。
CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
添加not null約束
添加主鍵約束
刪除約束:
無效化約束:
激活約束:
查詢約束:
CREATE INDEX index_name
ON table_name (column_name)