SQL指令、表格處理及SQL進階知識點有哪些

蝸牛 互聯網技術資訊 2022-02-26 169 0

今天小編給大家分享一下SQL指令、表格處理及SQL進階知識點有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

SQL指令、表格處理及SQL進階知識點有哪些  sql 第1張

1. SQL指令

SQL指令是指SQL如何被用來儲存,讀取和處理數據庫之中的表格資料。

常見的SQL指令有如下這些:

1.1 SELECT:選擇

(1)作用:將資料從數據庫的表格中選出。能夠讀取表格中一個或數個列的所有資料。

什么是表格?表格是數據庫內的結構,目的是儲存資料。

(2)語句: select 列名1, 列名2... from 表名

1.2 DISTINCT:區分(選擇)

(1)作用:處理資料時,需要找出表格內不同的資料值,即要知道列中有哪些不同的值,而不關心每個值出現的次數。此時用distinct。

(2)語句: select distinct 列名 from 表名

1.3 WHERE:帶查詢條件

(1)作用:當需要有條件的進行選擇性查詢一些資料時,用到where

(2)語句: select 列名 from 表名 where 條件

1.4 AND OR:與,或(連接條件)

(1)作用:where的復雜條件是由兩個或多個簡單條件通過and或or連接而成的。一個SQL語句中可以有無限多個簡單條件的存在。

(2)語句: select 列名 from 表名 where 簡單條件1 and|or 簡單條件2...

1.5 IN:在一個不連續范圍內取值(跟where配合)

(1)作用:in子句,通常跟where配合使用,表示條件在一個不連續的范圍內取值

(2)語句: select 列名 from 表名 where 列名作為條件 in (值1,值2,值3...) exists

(3)補充:in子句括號內如果只有一個值,則相當于...where 列名=值1

1.6 BETWEEN:在一個連續范圍內取值(跟where配合)

(1)作用:in指令是在一個或者數個不連續的值的限制內獲取資料庫中的值,而between是在一個連續的范圍內獲取資料庫中的值。通常也跟where配合使用。

(2)語句: select 列名 from 表名 where 列名 between 值1 and 值2

1.7 LIKE:帶查找模式(跟where配合)

(1)作用:依據一個模式來找出需要的資料。通常也跟where配合使用。

(2)語句: select 列名 from 表名 where 列名 like {模式}

(3){模式}:

比如 A_B表示A開頭B結尾中間只能有一個字符,ABC%表示ABC開頭的字符串,%ABC表示ABC結尾的字符串,%ABC%表示所含有ABC這個模式的字符串。

1.8 ORDER BY:排序

(1)作用:將獲取的資料做一個有系統的顯示,即排序顯示,正序或者逆序。

(2)語句: select 列名 from 表名 where 條件 order by 列名[ASC, DESC]

(3)[ ]表示可選,不是必選的。ASC表示從小到大,DESC反之。默認用ASC。

(4)注意:如果存在where,那么where需要在order by子句的前面。

(5)補充:可以同時對幾個列名進行排序。order by 列名1[ASC, DESC], 列名2[ASC,DESC]。如果對兩個列都選擇從小到大排序,那這個子句的結果是:按照列名1從小到大排。若有好幾個查詢結果的列名1相等,那這幾個結果就按照列名2從小到大排,以此類推。

1.9 函數

(1)作用:數據庫中很多內容都是以數字的形式存在,對這些數字做運算時,可以通過一些定義好的函數來直接運行。

(2)常用函數:

AVG:平均值

COUNT:計數

MAX:最大值

MIN:最小值

SUM:總和

(3)語句: select 函數名(列名)from 表名

1.10 COUNT:計數

(1)作用:計數,數出在表格中找到的符合條件的條目一共有幾個。

(2)語句: select count(列名) from 表名

(3)注意:count經常和distinct一起使用,目的是找出表格中有多少個不同的條目。

1.11 GROUP BY:分類

(1)作用:當我們選不只一個列名且其中至少一個列名有包含函數的運用時,就需要用到group by指令。在這種情況下,需要確定我們有group by所有其他的列名。即:除了有包括函數的列名外,都需要將其放在group by的子句中。

(2)語句: select 列名1 sum(列名2) from 表名 group by 列名1

1.12 HAVING:

(1)作用:對函數產生的值來設定條件。having子句是在一個SQL句子的最后。

一個含有having子句的SQL并不一定要包含group by子句。

(2)語句: select 列名1,sum(列名2) from 表名 group by 列名1 having(函數條件)

(3)注意:如果被select的只有函數欄,那就不需要group by子句。

1.13 ALIAS:別名(針對表或列)

(1)作用:給表和列起別名。

列名的別名:是為了讓SQL產生的結果易讀。

表格的別名:只要在from子句中的表格名后空一格,然后再列出要用的表格別名即可。

即:這兩種別名,都放在要替代的表名或列名的后面,跟表名或列名用空格分開。

(2)語句: select 表別名.列名1 列名1 列別名 from 表名 表別名

(3)注意:列別名不僅可以直接放在列名后面,也可以放在函數后,比如 ...sum(列名) 列別名...

1.14 表格連接

(1)作用:通過兩個表中相同的列,將兩個表連起來。

where子句在表格連接中起了很重要的作用。

如果where使用有誤,很可能得到一個笛卡爾連接(所得兩個表格每兩行之間所有可能的組合)。

1.15 外部連接

(1)作用:

我們常說的左連接也就是內部連接。在內部連接的情況下,需要兩個表格內都有同樣的值,那一筆資料才會被選中。

如果要列出一個表格中每一筆的資料,無論它的值在另一個表中有沒有出現。此時,就需要外部連接:SQL OUTER JOIN。

(2)語句: 外部連接的語法是依數據庫的不同而不同。比如,在Oracle中,where子句中要選出所有資料的那個表格后加上 (+)來表示這個表格中的所有資料我們都需要。

(3)注意:當第二個表格沒有相對的資料時,SQL會傳回NULL。

1.16 CONCATENATE:串連字符

(1)作用:將由不同列名獲得的結果串連起來。每個數據庫提供的方法可能有所不同:

MySQL:CONCAT()

Oracle:CONCAT(), ||

SQL Server:+

(2)語句: concat(字符1,字符2,字符3...)

表示將字符1,字符2,字符3串連起來。

(3)注意:Oracle的concat()只允許兩個參數;即一次只能將兩個字符串串起來。但是可以用||來一次串連其多個字符串。

1.17 SUBSTRING:截取字符

(1)作用:SQL中的substring函數,是用來獲取一個列資料中的其中一部分。

在不同的數據庫中,這個函數名稱不一樣:

MySQL: substr(), substring()

Oracle: substr()

SQL Server: substring()

(2)語句: substr(str, pos)表示選出從第pos位置開始字符。該語法不適用于SQL Server上。

sub(str, pos, len)表示從str的pos位置開始,選出len長度的字符串。

1.18 TRIM:移除字符串頭部或尾部的指定內容

(1)作用:trim()函數用來移除掉字符串中的字頭或字尾。最常用的是移除字頭或字尾的空白。

在不同的數據庫中,該方法不同:

MySQL:trim(), rtrim(), ltrim()

Oracle:rtrim(), ltrim()

SQL Server:rtrim(), ltrim()

(2)語句: trim([[位置] [要移除的字符串] from] 字符串)

(3)注意:如果沒有列出要移除的字符串是什么的話,就會移除空白(如果有的話)。

2. 表格處理

表格處理指令,是指如何使用SQL來處理數據庫中的各個表格,增刪改查等。

2.1 CREATE TABLE :創建表

(1)作用:在數據庫中創建表格

(2)語句:

create table 表名

( 列名1 屬性,

列名2 屬性,

列名3 屬性 );

2.2 CONSTRAINT:限制

(1)作用:用來指定哪些資料可以存入表格中,或者之后借由alter table語句來指定。

(2)常見的限制有:

not null

unique

check

主鍵(primary key)

外來鍵(Foreign ?key)

2.3 NOT NULL:限制列的值非NULL

(1)作用:在沒有做出任何限制的情況下,一個列的值是允許有null值的。如果不允許一個列的值含有null,那就需要對那個列做not null的指定。

(2)語句:

create table 表名

(列名1 屬性 not null,

列名2 屬性 not null,

列名3 屬性);

2.4 UNIQUE:限制列的值唯一

(1)作用:保證一個列中的值都是不一樣的。

(2)語句:

create table 表名

(列名1 屬性 not null unique,

列名2 屬性 not null,

列名3 屬性);

(3)注意:一個被指定為主鍵的列,一定會含有unique特性。但一個unique列并不一定是主鍵。

2.5 CHECK

(1)作用:保證一個列中的所有值都是符合某些條件。

(2)語句:

create table 表名

(列名1 屬性 check(列名1>10) not null unique,

列名2 屬性 not null,

列名3 屬性);

(3)注意:check限制尚未被執行于MySQL數據庫上。

2.6 primary key:主鍵

(1)作用:主鍵(primary key)中的每一個值都是表格中的唯一值。

即,它是用來獨一無二地確認一個表格中的每一行值。

主鍵可以是原本資料內的一個列或是一個人造列(和原本的值沒有關系的列位)。

主鍵可以包含一個或多個列位。當主鍵包含多個列位時,稱為組合鍵(composite key)。

(2)語句:

MySQL中:

create table 表名

(列名1 屬性 check(列名1>10) not null unique,

列名2 屬性 not null,

列名3 屬性,

primary key(列名1));

Oracle中:

create table 表名

(列名1 屬性 check(列名1>10) not null unique primary key,

列名2 屬性 not null,

列名3 屬性);

SQL Server中:

create table 表名

(列名1 屬性 check(列名1>10) not null unique primary key,

列名2 屬性 not null,

列名3 屬性);

(3)如何通過改變現有表格架構來設定主鍵的方式:

MySQL: alter table 表名 add primary key(列名2)

Oracle: alter table 表名 add primary key(列名2)

SQL Server: alter table 表名 add primary key(列名2)

(4)注意:在用alter語句添加主鍵之前,需要確認被用當做主鍵的列是否設定為not null。即,主鍵列一定要 not null。

2.7 foreign key:外來鍵

(1)作用:外來鍵是一個或數個指向另外一個表格主鍵的列。

外來鍵的目的是確定值的參考完整性(referential integrity)。即只有被準許的值才會被存入數據庫。

(2)語句:

MySQL中:

create table 表名1

(列名1 屬性 check(列名1>10) not null unique,

列名2 屬性 not null,

列名3 屬性,

primary key(列名1)

foreign key(列名2) references 表名2(主鍵列));

Oracle中:

create table 表名1

(列名1 屬性 check(列名1>10) not null unique primary key,

列名2 屬性 not null,

列名3 屬性 references 表名2(主鍵列));

SQL Server中:

create table 表名1

(列名1 屬性 check(列名1>10) not null unique primary key,

列名2 屬性 not null,

列名3 屬性 references 表名2(主鍵列));

(3)如何通過改變現有表格架構來設定外鍵的方式:

MySQL: alter table 表名1 add foreign key(列名2) references 表名2(列名2)

Oracle: alter table 表名1 add(constraint xxx) foreign key(列名2) references 表名2(列名2)

SQL Server: alter table 表名1 add foreign key(列名2) references 表名2(列名2)

2.8 CREATE VIEW:新建視圖

(1)作用:視圖表可以被當做虛擬表格。與常規的表格不同的是,表格中有實際存儲資料,但視圖是建立在表格之上的一個架構,它本身不實際存儲資料。

(2)語句: create view 視圖名 as SQL語句;

其中,SQL語句可以類似:select 列名 from 表名;

(3)注意:可以用視圖來連接兩個表格。這種情況下,使用者就可以直接由一個視圖表中找出需要的信息,而不需要從兩個不同的表格中去先做連接動作再查找。

2.9 CREATE INDEX:新建索引

(1)作用:

索引可以幫助我們從表格中快速的找到需要的資料。

如果一個表格沒有索引,數據庫系統需要將整個報個的資料讀出,這個過程叫table scan。

如有適當的索引存在,數據庫系統就可以先由這個索引去找出需要的資料是在表格中的什么位置,然后直接去該位置獲取資料,加快了獲取資料的速度。

索引是有利于系統效率的事情。一個索引可以涵蓋一個或多個列。

(2)語句: create index 索引名 on 表名(列名1, 列名2);

2.10 ?ALTER TABLE:修改表格

(1)作用:表格被建立后,有時需要改變表格的結構。比如,加一列,刪一列,改變列名稱,改變列的屬性等等。

(2)語句: alter 表名 列名 [改變方式]

[改變方式]常見的有:

加一列:add 列名2 屬性

刪一列:drop 列名2

改變列名稱:change 舊列名 新列名 新屬性

改變列的屬性:modify 列名2 新屬性

2.11 DROP TABLE:刪除表格

(1)作用:從數據庫中清除一個表格(刪掉表格)

(2)語句: drop table 表名

2.12 TRUNCATE TABLE:清除表格內容

(1)作用:清除一個表格中的所有資料(不刪表格)

(2)語句: truncate table 表名

2.13 INSERT INTO:在表格中插入內容

(1)作用:將資料輸入表格中。

(2)語句:

insert into 表名(列1,列2...)values(值1,值2...)

insert into 表名1(列1,列2...)select 列名3,列名4 from 表名2

2.14 UPDATE:更新表格內容

(1)作用:修改表格中的資料。

(2)語句: update 表名 set 列名1=新值 where 條件

2.15 DELETE FROM:刪除一行或多行

(1)作用:在某些情況下,需要直接由數據庫中去除一些資料。(刪掉的是一行或多行)

(2)語句:delete from 表名 where 條件

3. 進階SQL

如何使用SQL來執行一些較為復雜的運算,以及如何用SQL做這些操作:

排名 rank

中位數 median

累積總計 running total

總和百分比 percent to total

累積總和百分比 cumulative percent to total

3.1 UNION:合并

(1)作用:目的是將兩個SQL語句的結果合并起來。這個角度來看,union和join類似。

union的一個限制是兩個SQL語句所產生的列位需要是同樣的屬性類型。

另外,當使用union時,我們只會看到不同的資料值,即結果值不重復,類似select distinct。

(2)語句:

SQL 語句1

union

SQL 語句2

(3)注意:如果我們在任何一個SQL語句(或者兩句都一起)用select disinct 列名,那很可能得到完全一樣的結果。

3.2 UNION ALL

(1)作用:目的也是要將兩個SQL語句的結果合并到一起。

不同的是,union all會將每一筆符合條件的資料都列出來,無論資料值有無重復。結果值可重復。

(2)語句:

SQL 語句1

union all

SQL 語句2

3.3 INTERSECT

(1)作用:與union類似,intersect也是對兩個SQL語句所產生的結果做處理。

不同的是,union基本是一個OR,而intersect則更像AND。即union是聯集,intersect是并集。

(2)語句:

SQL 語句1

intersect

SQL 語句2

(3)注意:intersect指令,不同的值只會被列出一次。

3.4 MINUS

(1)作用:

mius是指運用在兩個SQL語句上。

先找出第一個SQL語句所產生的結果,然后看這些結果有沒有在第二個SQL語句的結果中。如果有,那這第一筆資料就被去除,而不會在最后的結果中出現。

如果第二個SQL語句所產生的結果并沒有存在于第一個SQL所產生的結果內,那這筆資料也會被拋棄。

(類似于減法?最后只剩下第一個SQL語句中那些只在第一個SQL語句中出現而不會在第二個SQL語句中出現的項)

(2)語句:

SQL 語句1

minus

SQL 語句2

(3)注意:minus指令,不同的值只會被列出一次。

3.5 子查詢

(1)作用:subquery,在一個SQL語句中放入另一個SQL語句。

當我們在where子句或having子句中插入另一個sql語句時,我們就有一個子查詢。

子查詢的作用,第一,可以被用來連接表格。第二,有時子查詢是唯一能夠連接兩個表格的方式。

(2)語句:

select 列名1 from 表名1 where 列名2 [比較運算素] (select 列名2 from 表名2 where 條件)

其中,[比較運算素]可以是相等的運算素(=, >=, >, <=, <),也可以是一個對文字的運算素(LIKE)。

3.6 EXISTS

(1)作用:在前面我們用in,>, <, = 等來連接內查詢和外查詢。exists也是其中一個方式。

基本上,exists是用來測試內查詢有沒有產生任何結果。

如果有,系統就會執行外查詢中的SQL。若沒有,那整個SQL語句就不會產生任何結果。

(2)語句: select 列名1 from 表名1 where exists (select 列名2 from 表名2 where 條件)

3.7 CASE

(1)作用:case用來作為if-then-else之類邏輯的關鍵字。

(2)語句:

select case(列名)

when 條件1 then 結果1

when 條件2 then 結果2

...

[else 結果n]

end

from 表名

(3)補充:條件可以是一個數值或一個公式。else子句不是必須的。

以上就是“SQL指令、表格處理及SQL進階知識點有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注蝸牛博客行業資訊頻道。

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

評論

日本韩欧美一级A片在线观看