SQL必知必會學習筆記

2021-09-27 09:34:59 字數 4397 閱讀 8534

2.檢索資料

3.排序檢索資料

4 過濾資料

5.高階資料過濾

5.2in操作符

5.3not操作符

6.用萬用字元進行過濾

轉行的辛酸。。。加油!

儲存有組織的資料的容器

某種特定型別資料的結構化清單

儲存在表中的資料是同一種型別的資料或者清單

表名是唯一的

表由列組成。列儲存表中某部分的資訊

列(column):表中的乙個字段。所有表都是有乙個或多個列組成的

資料庫中每個列都有相應的資料型別。資料型別定義了列可以儲存哪些資料種類。

表中的資料是按行儲存的,所儲存的每個記錄儲存在自己的行內。

表中每一行都應有一列(或幾列)可以唯一標識自己。

主鍵(primary key):一列(或一組列),其值能夠唯一標識表中每一行

唯一標識表中每行的這個列(或這幾列)稱為主鍵,主鍵用來表示乙個特定的行。沒有主鍵,更新或刪除表中特定行就極為困難

表中任何列都可以作為主鍵,只需要滿足以下的條件:

主鍵通常定義在表的一列上,但並不是必須這麼做,也可以一起使用多列作為主鍵。在使用多列作為主鍵時,上述條件必須應用到所有列,所有列值的組合必須是唯一的(但是單個列的值可以不唯一)。

關鍵字(keyword)

作為sql組成部分的保留字。關鍵字不能用作表或列的名字。

select prod_name

from products;

多條sql語句必須以分好(;)分隔。sql語句部分大小寫,因此select與select是相同的。

檢索多個列必須是在select關鍵字後面給出多個列名,列名之間必須以逗號分隔。

select * from products;
如果給定乙個萬用字元(*),則返回表中所有列。

使用distinct關鍵字,顧名思義,指示資料庫只返回不同的值

select distinct vend_id from products;
select prod_name from products limit 5 offset 5;
指示mysql返回從第5行起的5行資料,第乙個數字是檢索的行數,第二個數字是指從**開始。

select prod_name from products;
為了明確地排序用select語句檢索出的資料,可以使用order by子句。order by子句取乙個或多個列的名字,據此對輸出進行排序。

order by語句應當是select語句中最後一條子句。

要按多個列排序,簡單指定列名,列名之間用逗號分開即可

下面的**檢索3個列,並按其中兩個列對結果進行排序----首先按**,然後按名稱排序。

select prod_id,prod_price,prod_name from products order by prod_price,prod_name;
select prod_id,prod_price,prod_name from products order by 2,3;
order by 2表示按select清單中的第二列prod_price進行排序。order by 2,3表示先按prod_price,再按prod_name進行排序。

降序排序指定desc關鍵字

select prod_id,prod_price,prod_name from products order by prod_price desc ,prod_name;
desc關鍵字只應用到直接位於其前面的列名。例如prod_price列以降序排列,而prod_name列(在每個**內)仍然按標準的公升序排列。

在select語句中,資料根據where子句中指定的搜尋條件進行過濾。where子句在表名(from子句)之後給出。

select prod_name,prod_price from products where prod_price=3.49;
這條語句從products表中檢索兩個列,但不返回所有行,只返回prod_price值為3.49的行。

同時使用order by和where子句時,應該讓order by語句位於where子句之後。

select prod_name ,prod_price from products where prod_price<=10;
select vend_id,prod_name from products where vend_id <> 'dll01';
select vend_id,prod_name from products where vend_id !='dll01';
要檢查某個範圍的值,可以使用between操作符

select prod_name,prod_price from products where prod_price between 5 and 10;
在使用between時,必須指定兩個值—所需範圍的低端值和高階值。這兩個值必須使用and關鍵字分隔。between匹配範圍中所有的值,包括指定的開始值和結束值。

乙個列不包含值時,稱其包含空值null。

null:無值(no value),它與字段包含0、空字串或僅僅包含空格不同

確定值是否為null,使用的where子句為is null子句。

select prod_name from products where prod_price is null;
sql允許給出多個where子句,這些子句有兩種方式,即以and子句或or子句的方式使用。

操作符(operator):

用來聯結或改變where子句中的子句的關鍵字,也稱為邏輯操作符(logical operator)

and用在where子句中的關鍵字,用來指示檢索滿足所有給定條件的行

select prod_id,prod_price,prod_name from products where vend_id='dll01' and prod_price <= 4;
or用在where子句中使用的關鍵字,用來表示檢索匹配任一給定條件的行

在處理or操作符前,優先處理and操作符。

select prod_name,prod_price from products where (vend_id='dll01' or vend_id='brs01') and prod_price >= 10;
圓括號相當於明確的分組操作符

in操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配

select prod_name ,prod_price from products where vend_id in ('dll01','brs01') order by prod_name;
select prod_name,prod_price from products where vend_id='dll01' or 'brs01' order by prod_name;
為什麼要使用in操作符?

where子句中的not操作符有且只有乙個功能,那就是否定其後所跟的任何條件

select prod_name from products where not vend_id='dll01' order by prod_name;
這裡的not否定跟在其後的條件,因此匹配非dll01之外的所有東西。

等價於

select prod_name from products where vend_id <> 'dll01' order by prod_name;
萬用字元搜尋只能用於文字字段(字串),非文字資料型別字段不能使用萬用字元搜尋

最常使用的萬用字元是百分號(%)。在搜尋中,%表示任何字元出現任意次數

select prod_id,prod_name from products where prod_name like 'fish%';
萬用字元可在搜尋模式中的任意位置使用,且可以使用多個萬用字元。

slect prod_name ,prod_price from products where prod_name like '%bean bag%';
%代表搜尋模式中給定位置的0個、1個或多個字元。

萬用字元%

另乙個有用的萬用字元是下劃線(_)。只能匹配單個字元,而不是多個字元。

方括號()萬用字元來指定乙個字符集,必須匹配指定位置(萬用字元的位置)的乙個字元

《SQL必知必會》學習筆記

資料庫管理系統 dbms 資料庫軟體。資料庫 database 儲存有組織的資料的容器。通過dbms建立和操縱的容器。表 table 用於儲存某種特定型別資料的結構化檔案。模式 schema 關於資料庫和表的布局及特性的資訊。列 column 表中的乙個字段。表是由乙個或多個列組成的。行 row 表...

《sql必知必會》筆記

資料庫 儲存有組織的資料的容器 通常是乙個檔案或一組檔案 注意誤用混淆 資料庫軟體被稱為dbms,資料庫是通過dbms建立和操縱的容器 模式 關於資料庫和表的布局及特性的資訊。主鍵 一列或一組列,其值能夠唯一標識表中的每一行。多條sql語句必須以 分隔。sql語句不區分大小寫,select和sele...

mysql必知必 SQL必知必會學習筆記 一

資料庫基礎 資料庫 資料庫軟體 確切的說,資料庫軟體應稱為資料庫管理系統 dbms 資料庫是通過dbms建立和操作的容器 資料庫相當於檔案櫃 容器 表相當於檔案 同乙個資料庫不能存在相同的表名,不同的資料庫可以存在相同的表名 主鍵應滿足的條件 唯一性非空性 not null 主鍵列中的值不允許修改或...