這一節課,我們來先來了解一下什麼是SQL語言,然後通過一些簡單的操作實例及概念講解,幫助大家理解和消化這部分內容。
什麼是SQL語句,及簡單的寫法sql 語句是對資料庫進行操作的一種語言。結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統。
SQL的四種語言DDL(Data Definition Language)資料庫定義語言
DDL是SQL語言的四大功能之一。
用於定義資料庫的三級結構,包括外模式、概念模式、內模式及其相互之間的映像,定義數 據的完整性、安全控制等約束。
簡單點來說,DDL語句就是用與定義和管理資料庫中的對象。DDL語句不需要commit,也不能rollback。
常見的DDL命令有:
CREATE
ALTER
DROP
TRUNCATE
COMMENT
RENAME
DML(Data Manipulation Language)數據操縱語言
由DBMS提供,用於讓用戶或程式設計師使用,實現對資料庫中數據的操作。
簡單來說,DML語言能夠使用戶能夠查詢資料庫以及操作已有資料庫中的數據。
常見的DML命令有:
SELECT
INSERT
UPDATE
DELETE
DCL(Data Control Language)資料庫控制語言
DCL語言主要負責授權和角色控制。
常見的DCL命令有:
GRANT
REVOKE
TCL(Transaction Control Language)事務控制語言
顧名思義,TCL語言主要負責事務的控制。
常見的TCL命令有:
SAVEPOINT
COMMIT
ROLLBACK
術語相關:
前條件:指資料庫在緩存(或硬碟)上獲取數據的篩選記錄的條件。
後條件:指資料庫在結果集(執行內存)上進行篩選記錄的條件。
子句:根據SQL語句語法中的動詞,將整句SQL語句拆分成幾部分,每部分叫做該動詞的子句。
例如:select * from t1 where id = 1
select * 部分叫做select子句
from t1 部分叫做from子句
where id = 1 部分叫做where子句
常用的查詢條件
我們要知道,今天的課,主要講的內容,都是跟數據表有關的,那麼我們首先要先建立一張表,往這張表裡寫一些數據。
Create table語句create table table_name (column_name1 column_type1[, column_name2 column_type2[, …]] )
說明:create table TEST_LIJIAN (id VARCHAR2(100)) tablespace JLLT_DM pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited );
我手工通過for update的方式,往這張表裡插入了幾條數據:我們的重點是DML語句DML裡的老大 —- SELECT
select語句,有過經驗的同事應該不陌生,可以說是很熟悉,日常應用的最多的也是它。那麼它的語法是什麼呢?
語法:
Select [ all | distinct ] <目標列表達式> From <表名> | <視圖名> [ ,<表名> | <視圖名> ] [ Where <條件表達式> ] [ Group by <列名[ , 列名 ]> [ having <條件表達式> ] ] [ order by <列名[ , 列名]> [ ASC | DESC ] ]
註:
Group by 的分組欄位根據欄位前後順序分組
Order by 排序欄位根據欄位前後順序排序(後一個在前一個基礎上排序)
最簡單的select語句:
select * from dual;
DML裡最危險的人 — DELETE
為什麼說delete是最危險的呢,因為實際操作的時候,誤刪數據是常有的事兒,很多現網資料庫都遇到過這種情況,最後不得已翻出備份來進行恢復。那麼它的語法是什麼呢?
語法:
delete from table_name where column_name1 = column_value1 [ and | or column_name2 = column_value2[ and | or …]]
說明:
table_name 表名
column_name1 刪除記錄依據的欄位名
column_value1 刪除記錄依據的欄位值
and 表示與(同時滿足條件的記錄)
or 表示或(部分滿足條件的記錄)
最簡單的刪除一條數據的命令:
delete from test_lijian where id = 1;
insert into table_name (column_name1[, column_name2[, …]]) values (column_value1[, column_value2[, …]] )
說明:知錯就改,謙虛的update
實際生產中,我們有的時候在一張表的數據會有變化,那這時候update的作用就展現出來了,它可以完成已有數據的轉換工作。
語法:
語法:
update table_name set column_name1 = column_value1 [, column_name2 = column_value2[, …]] where column_name3 = column_value3[ and | or column_name4 = column_value4[ and | or …]]
說明:
table_name 表名
column_name1, column_name2, … 欄位名
column_value1, column_value2, … 要修改成的欄位值
column_name3, column_name4, … 修改記錄依據的欄位名
column_value3, column_value4, … 修改記錄依據的欄位值
and 表示與(同時滿足條件的記錄)
or 表示或(部分滿足條件的記錄)
最簡單的一條update語句:
update test_lijian set id = 2 where id = 1;
還記得最開始說的那些運算符嗎?我們將它們結合sql語句來一起看看如何應用它們。
我們給出一張示例表我們用幾個不同的例子來看一下:
select count(*) from animal where address = 『中國』;
select sum(number) from animal where kind = 『熊科』;
select avg(number) from animal where kind = 『象科』;
select max (number) from animal;
select min (number) from animal;
第二波~