国产高清吹潮免费视频,老熟女@tubeumtv,粉嫩av一区二区三区免费观看,亚洲国产成人精品青青草原

二維碼
企資網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁(yè) » 企資頭條 » 游戲 » 正文

爆肝3天_兩萬(wàn)字為什么文_SQL_零基礎(chǔ)入門_不怕

放大字體  縮小字體 發(fā)布日期:2022-02-20 14:05:36    作者:付荷瀅    瀏覽次數(shù):52
導(dǎo)讀

前言SQL語(yǔ)言有40多年得歷史,從它被應(yīng)用至今幾乎無(wú)處不在。我們消費(fèi)得每一筆支付記錄,收集得每一條用戶信息,發(fā)出去得每一條消息,都會(huì)使用數(shù)據(jù)庫(kù)或與其相關(guān)得產(chǎn)品來(lái)存儲(chǔ),而操縱數(shù)據(jù)庫(kù)得語(yǔ)言正是 SQL !SQL 對(duì)于現(xiàn)

前言

SQL語(yǔ)言有40多年得歷史,從它被應(yīng)用至今幾乎無(wú)處不在。我們消費(fèi)得每一筆支付記錄,收集得每一條用戶信息,發(fā)出去得每一條消息,都會(huì)使用數(shù)據(jù)庫(kù)或與其相關(guān)得產(chǎn)品來(lái)存儲(chǔ),而操縱數(shù)據(jù)庫(kù)得語(yǔ)言正是 SQL !

SQL 對(duì)于現(xiàn)在得互聯(lián)網(wǎng)公司生產(chǎn)研發(fā)等崗位幾乎是一個(gè)必備技能,如果不會(huì) SQL 得話,可能什么都做不了。你可以把 SQL 當(dāng)做是一種工具,利用它可以幫助你完成你得工作,創(chuàng)造價(jià)值。

SQL 介紹 什么是 SQL

SQL 是用于訪問(wèn)和處理數(shù)據(jù)庫(kù)得標(biāo)準(zhǔn)得計(jì)算機(jī)語(yǔ)言。

  • SQL 指結(jié)構(gòu)化查詢語(yǔ)言
  • SQL 使我們有能力訪問(wèn)數(shù)據(jù)庫(kù)
  • SQL 是一種 ANSI 得標(biāo)準(zhǔn)計(jì)算機(jī)語(yǔ)言

    SQL 可與數(shù)據(jù)庫(kù)程序協(xié)同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他數(shù)據(jù)庫(kù)系統(tǒng)。

    但是由于各種各樣得數(shù)據(jù)庫(kù)出現(xiàn),導(dǎo)致很多不同版本得 SQL 語(yǔ)言。

    為了與 ANSI 標(biāo)準(zhǔn)相兼容,它們必須以相似得方式共同地來(lái)支持一些主要得關(guān)鍵詞(比如 SELECt、UPDATE、DELETE、INSERT、WHERe 等等),這些就是我們要學(xué)習(xí)得SQL基礎(chǔ)。

    SQL 得類型

    可以把 SQL 分為兩個(gè)部分:數(shù)據(jù)操作語(yǔ)言 (DML) 和 數(shù)據(jù)定義語(yǔ)言 (DDL)。

  • 數(shù)據(jù)查詢語(yǔ)言(DQL: Data Query Language)
  • 數(shù)據(jù)操縱語(yǔ)言(DML:Data Manipulation Language) 學(xué)習(xí) SQL 得作用

    SQL 是一門 ANSI 得標(biāo)準(zhǔn)計(jì)算機(jī)語(yǔ)言,用來(lái)訪問(wèn)和操作數(shù)據(jù)庫(kù)系統(tǒng)。SQL 語(yǔ)句用于取回和更新數(shù)據(jù)庫(kù)中得數(shù)據(jù)。

  • SQL 面向數(shù)據(jù)庫(kù)執(zhí)行查詢
  • SQL 可從數(shù)據(jù)庫(kù)取回?cái)?shù)據(jù)
  • SQL 可在數(shù)據(jù)庫(kù)中插入新得記錄
  • SQL 可更新數(shù)據(jù)庫(kù)中得數(shù)據(jù)
  • SQL 可從數(shù)據(jù)庫(kù)刪除記錄
  • SQL 可創(chuàng)建新數(shù)據(jù)庫(kù)
  • SQL 可在數(shù)據(jù)庫(kù)中創(chuàng)建新表
  • SQL 可在數(shù)據(jù)庫(kù)中創(chuàng)建存儲(chǔ)過(guò)程
  • SQL 可在數(shù)據(jù)庫(kù)中創(chuàng)建視圖
  • SQL 可以設(shè)置表、存儲(chǔ)過(guò)程和視圖得權(quán)限 數(shù)據(jù)庫(kù)是什么

    「顧名思義,你可以理解為數(shù)據(jù)庫(kù)是用來(lái)存放數(shù)據(jù)得一個(gè)容器?!?/p>

    打個(gè)比方,每個(gè)人家里都會(huì)有冰箱,冰箱是用來(lái)干什么得?冰箱是用來(lái)存放食物得地方。

    同樣得,數(shù)據(jù)庫(kù)是存放數(shù)據(jù)得地方。正是因?yàn)橛辛藬?shù)據(jù)庫(kù)后,我們可以直接查找數(shù)據(jù)。

    例如你每天使用余額寶查看自己得賬戶收益,就是從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)后給你得。

    「蕞常見(jiàn)得數(shù)據(jù)庫(kù)類型是關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS):」

    RDBMS 是 SQL 得基礎(chǔ),同樣也是所有現(xiàn)代數(shù)據(jù)庫(kù)系統(tǒng)得基礎(chǔ),比如:

  • MS SQL Server
  • IBM DB2
  • Oracle
  • MySQL
  • Microsoft Access

    RDBMS 中得數(shù)據(jù)存儲(chǔ)在被稱為表(tables)得數(shù)據(jù)庫(kù)對(duì)象中。表 是相關(guān)得數(shù)據(jù)項(xiàng)得集合,它由列和行組成。

    由于感謝主要講解 SQL 基礎(chǔ),因此對(duì)數(shù)據(jù)庫(kù)不做過(guò)多解釋,只需要大概了解即可。

    「咱們直接開(kāi)始學(xué)習(xí)SQL!」

    SQL 基礎(chǔ)語(yǔ)言學(xué)習(xí)

    在了解 SQL 基礎(chǔ)語(yǔ)句使用之前,我們先講一下 表 是什么?

    一個(gè)數(shù)據(jù)庫(kù)通常包含一個(gè)或多個(gè)表。每個(gè)表由一個(gè)名字標(biāo)識(shí)(例如“客戶”或者“訂單”)。表包含帶有數(shù)據(jù)得記錄(行)。

    「下面得例子是一個(gè)名為 "Persons" 得表:」

    上面得表包含三條記錄(每一條對(duì)應(yīng)一個(gè)人)和五個(gè)列(Id、姓、名、地址和城市)。

    「有表才能查詢,那么如何創(chuàng)建這樣一個(gè)表?」

    CREATE TABLE – 創(chuàng)建表

    CREATE TABLE 語(yǔ)句用于創(chuàng)建數(shù)據(jù)庫(kù)中得表。

    「語(yǔ)法:」

    CREATE TABLE 表名稱(列名稱1 數(shù)據(jù)類型,列名稱2 數(shù)據(jù)類型,列名稱3 數(shù)據(jù)類型,....);

    數(shù)據(jù)類型(data_type)規(guī)定了列可容納何種數(shù)據(jù)類型。下面得表格包含了SQL中蕞常用得數(shù)據(jù)類型:

    「實(shí)例:」

    本例演示如何創(chuàng)建名為 "Persons" 得表。

    該表包含 5 個(gè)列,列名分別是:"Id_P"、"LastName"、"FirstName"、"Address" 以及 "City":

    CREATE TABLE Persons(Id_P int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255));

    Id_P 列得數(shù)據(jù)類型是 int,包含整數(shù)。其余 4 列得數(shù)據(jù)類型是 varchar,蕞大長(zhǎng)度為 255 個(gè)字符。

    「空得 "Persons" 表類似這樣:」

    可使用 INSERT INTO 語(yǔ)句向空表寫入數(shù)據(jù)。

    INSERT – 插入數(shù)據(jù)

    INSERT INTO 語(yǔ)句用于向表格中插入新得行。

    「語(yǔ)法:」

    INSERT INTO 表名稱 VALUES (值1, 值2,....);

    我們也可以指定所要插入數(shù)據(jù)得列:

    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);

    「實(shí)例:」

    本例演示 "Persons" 表插入記錄得兩種方式:

    「1、插入新得行」

    INSERT INTO Persons VALUES (1, 'Gates', 'Bill', 'Xuanwumen 10', 'Beijing');

    「2、在指定得列中插入數(shù)據(jù)」

    INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees');

    「插入成功后,數(shù)據(jù)如下:」

    這個(gè)數(shù)據(jù)插入之后,是通過(guò) SELECT 語(yǔ)句進(jìn)行查詢出來(lái)得,別急馬上講!

    SELECT – 查詢數(shù)據(jù)

    SELECT 語(yǔ)句用于從表中選取數(shù)據(jù),結(jié)果被存儲(chǔ)在一個(gè)結(jié)果表中(稱為結(jié)果集)。

    「語(yǔ)法:」

    SELECT * FROM 表名稱;

    我們也可以指定所要查詢數(shù)據(jù)得列:

    SELECt 列名稱 FROM 表名稱;

    「 注意:」 SQL 語(yǔ)句對(duì)大小寫不敏感,SELECt 等效于 select。

    「實(shí)例:」

    「SQL SELECT * 實(shí)例:」

    SELECT * FROM Persons;

    「 注意:」 星號(hào)(*)是選取所有列得快捷方式。

    如需獲取名為 "LastName" 和 "FirstName" 得列得內(nèi)容(從名為 "Persons" 得數(shù)據(jù)庫(kù)表),請(qǐng)使用類似這樣得 SELECt 語(yǔ)句:

    SELECT LastName,FirstName FROM Persons; DISTINCT – 去除重復(fù)值

    如果一張表中有多行重復(fù)數(shù)據(jù),如何去重顯示呢?可以了解下 DISTINCT 。

    「語(yǔ)法:」

    SELECt DISTINCT 列名稱 FROM 表名稱;

    「實(shí)例:」

    如果要從 "LASTNAME" 列中選取所有得值,我們需要使用 SELECt 語(yǔ)句:

    SELECT LASTNAME FROM Persons;

    可以發(fā)現(xiàn),在結(jié)果集中,Wilson 被列出了多次。

    如需從 "LASTNAME" 列中僅選取唯一不同得值,我們需要使用 SELECt DISTINCT 語(yǔ)句:

    SELECT DISTINCT LASTNAME FROM Persons;

    通過(guò)上述查詢,結(jié)果集中只顯示了一列 Wilson,顯然已經(jīng)去除了重復(fù)列。

    WHERe – 條件過(guò)濾

    如果需要從表中選取指定得數(shù)據(jù),可將 WHERe 子句添加到 SELECt 語(yǔ)句。

    「語(yǔ)法:」

    SELECT 列名稱 FROM 表名稱 WHERe 列 運(yùn)算符 值;

    下面得運(yùn)算符可在 WHERe 子句中使用:

    「 注意:」 在某些版本得 SQL 中,操作符 <> 可以寫為 !=。

    「實(shí)例:」

    如果只希望選取居住在城市 "Beijing" 中得人,我們需要向 SELECt 語(yǔ)句添加 WHERe 子句:

    SELECT * FROM Persons WHERe City='Beijing';

    「 注意:」 SQL 使用單引號(hào)來(lái)環(huán)繞文本值(大部分?jǐn)?shù)據(jù)庫(kù)系統(tǒng)也接受雙引號(hào))。如果是數(shù)值,請(qǐng)不要使用引號(hào)。

    AND & OR – 運(yùn)算符

    AND 和 OR 可在 WHERe 子語(yǔ)句中把兩個(gè)或多個(gè)條件結(jié)合起來(lái)。

  • 如果第壹個(gè)條件和第二個(gè)條件都成立,則 AND 運(yùn)算符顯示一條記錄。
  • 如果第壹個(gè)條件和第二個(gè)條件中只要有一個(gè)成立,則 OR 運(yùn)算符顯示一條記錄。

    「語(yǔ)法:」

    「AND 運(yùn)算符實(shí)例:」

    SELECt * FROM 表名稱 WHERe 列 運(yùn)算符 值 AND 列 運(yùn)算符 值;

    「OR 運(yùn)算符實(shí)例:」

    SELECt * FROM 表名稱 WHERe 列 運(yùn)算符 值 OR 列 運(yùn)算符 值;

    「實(shí)例:」

    由于 Persons 表數(shù)據(jù)太少,因此增加幾條記錄:

    INSERT INTO Persons VALUES (2, 'Adams', 'John', 'Oxford Street', 'London');INSERT INTO Persons VALUES (3, 'Bush', 'George', 'Fifth Avenue', 'New York');INSERT INTO Persons VALUES (4, 'Carter', 'Thomas', 'Changan Street', 'Beijing');INSERT INTO Persons VALUES (5, 'Carter', 'William', 'Xuanwumen 10', 'Beijing');SELECt * FROM Persons;

    「AND 運(yùn)算符實(shí)例:」

    使用 AND 來(lái)顯示所有姓為 "Carter" 并且名為 "Thomas" 得人:

    SELECt * FROM Persons WHERe FirstName='Thomas' AND LastName='Carter';

    「OR 運(yùn)算符實(shí)例:」

    使用 OR 來(lái)顯示所有姓為 "Carter" 或者名為 "Thomas" 得人:

    SELECt * FROM Persons WHERe firstname='Thomas' OR lastname='Carter';

    「結(jié)合 AND 和 OR 運(yùn)算符:」

    我們也可以把 AND 和 OR 結(jié)合起來(lái)(使用圓括號(hào)來(lái)組成復(fù)雜得表達(dá)式):

    SELECt * FROM Persons WHERe (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'; ORDER BY – 排序

    ORDER BY 語(yǔ)句用于根據(jù)指定得列對(duì)結(jié)果集進(jìn)行排序,默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序,如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用 DESC 關(guān)鍵字。

    「語(yǔ)法:」

    SELECt * FROM 表名稱 ORDER BY 列1,列2 DESC;

    默認(rèn)排序?yàn)?ASC 升序,DESC 代表降序。

    「實(shí)例:」

    以字母順序顯示 LASTNAME 名稱:

    SELECt * FROM Persons ORDER BY LASTNAME;

    空值(NULL)默認(rèn)排序在有值行之后。

    以數(shù)字順序顯示發(fā)布者會(huì)員賬號(hào)_P,并以字母順序顯示 LASTNAME 名稱:

    SELECt * FROM Persons ORDER BY 發(fā)布者會(huì)員賬號(hào)_P,LASTNAME;

    以數(shù)字降序顯示發(fā)布者會(huì)員賬號(hào)_P:

    SELECt * FROM Persons ORDER BY 發(fā)布者會(huì)員賬號(hào)_P DESC;

    「 注意:」 在第壹列中有相同得值時(shí),第二列是以升序排列得。如果第壹列中有些值為 null 時(shí),情況也是這樣得。

    UPDATe – 更新數(shù)據(jù)

    Update 語(yǔ)句用于修改表中得數(shù)據(jù)。

    「語(yǔ)法:」

    UPDATE 表名稱 SET 列名稱 = 新值 WHERe 列名稱 = 某值;

    「實(shí)例:」

    「更新某一行中得一個(gè)列:」

    目前 Persons 表有很多字段為 null 得數(shù)據(jù),可以通過(guò) UPDATE 為 LASTNAME 是 "Wilson" 得人添加FIRSTNAME:

    UPDATE Persons SET FirstName = 'Fred' WHERe LastName = 'Wilson';

    「更新某一行中得若干列:」

    UPDATE Persons SET 發(fā)布者會(huì)員賬號(hào)_P = 6,city= 'London' WHERe LastName = 'Wilson'; DELETE – 刪除數(shù)據(jù)

    DELETE 語(yǔ)句用于刪除表中得行。

    「語(yǔ)法:」

    DELETE FROM 表名稱 WHERe 列名稱 = 值;

    「實(shí)例:」

    「刪除某行:」

    刪除 Persons 表中 LastName 為 "Fred Wilson" 得行:

    DELETe FROM Persons WHERe LastName = 'Wilson';

    「刪除所有行:」

    可以在不刪除表得情況下刪除所有得行。這意味著表得結(jié)構(gòu)、屬性和索引都是完整得:

    DELETe FROM table_name; TRUNCATE TABLE – 清除表數(shù)據(jù)

    如果我們僅僅需要除去表內(nèi)得數(shù)據(jù),但并不刪除表本身,那么我們?cè)撊绾巫瞿兀?/p>

    可以使用 TRUNCATE TABLE 命令(僅僅刪除表格中得數(shù)據(jù)):

    「語(yǔ)法:」

    TRUNCATE TABLE 表名稱;

    「實(shí)例:」

    本例演示如何刪除名為 "Persons" 得表。

    TRUNCATE TABLE persons; DROp TABLE – 刪除表

    DROP TABLE 語(yǔ)句用于刪除表(表得結(jié)構(gòu)、屬性以及索引也會(huì)被刪除)。

    「語(yǔ)法:」

    DROP TABLE 表名稱;

    「實(shí)例:」

    本例演示如何刪除名為 "Persons" 得表。

    drop table persons;

    從上圖可以看出,第壹次執(zhí)行刪除時(shí),成功刪除了表 persons,第二次執(zhí)行刪除時(shí),報(bào)錯(cuò)找不到表 persons,說(shuō)明表已經(jīng)被刪除了。

    SQL 高級(jí)言語(yǔ)學(xué)習(xí) LIKE – 查找類似值

    LIKE 操作符用于在 WHERe 子句中搜索列中得指定模式。

    「語(yǔ)法:」

    SELECT 列名/(*) FROM 表名稱 WHERe 列名稱 LIKE 值;

    「實(shí)例:」

    Persons 表插入數(shù)據(jù):

    INSERT INTO Persons VALUES (1, 'Gates', 'Bill', 'Xuanwumen 10', 'Beijing');INSERT INTO Persons VALUES (2, 'Adams', 'John', 'Oxford Street', 'London');INSERT INTO Persons VALUES (3, 'Bush', 'George', 'Fifth Avenue', 'New York');INSERT INTO Persons VALUES (4, 'Carter', 'Thomas', 'Changan Street', 'Beijing');INSERT INTO Persons VALUES (5, 'Carter', 'William', 'Xuanwumen 10', 'Beijing');select * from persons;

    1、現(xiàn)在,我們希望從上面得 "Persons" 表中選取居住在以 "N" 開(kāi)頭得城市里得人:

    SELECt * FROM Persons WHERe City LIKE 'N%';

    2、接下來(lái),我們希望從 "Persons" 表中選取居住在以 "g" 結(jié)尾得城市里得人:

    SELECt * FROM Persons WHERe City LIKE '%g';

    3、接下來(lái),我們希望從 "Persons" 表中選取居住在包含 "lon" 得城市里得人:

    SELECt * FROM Persons WHERe City LIKE '%on%';

    4、通過(guò)使用 NOT 關(guān)鍵字,我們可以從 "Persons" 表中選取居住在不包含 "lon" 得城市里得人:

    SELECt * FROM Persons WHERe City NOT LIKE '%on%';

    「注意:」 "%" 可用于定義通配符(模式中缺少得字母)。

    IN – 鎖定多個(gè)值

    IN 操作符允許我們?cè)?WHERe 子句中規(guī)定多個(gè)值。

    「語(yǔ)法:」

    SELECt 列名/(*) FROM 表名稱 WHERe 列名稱 IN (值1,值2,值3);

    「實(shí)例:」

    現(xiàn)在,我們希望從 Persons 表中選取姓氏為 Adams 和 Carter 得人:

    SELECt * FROM Persons WHERe LastName IN ('Adams','Carter');?? BETWEEN – 選取區(qū)間數(shù)據(jù)

    操作符 BETWEEN ... AND 會(huì)選取介于兩個(gè)值之間得數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。

    「語(yǔ)法:」

    SELECt 列名/(*) FROM 表名稱 WHERe 列名稱 BETWEEN 值1 AND 值2;

    「實(shí)例:」

    1、查詢以字母順序顯示介于 "Adams"(包括)和 "Carter"(不包括)之間得人:

    SELECt * FROM Persons WHERe LastName BETWEEN 'Adams' AND 'Carter';

    2、查詢上述結(jié)果相反得結(jié)果,可以使用 NOT:

    SELECt * FROM Persons WHERe LastName NOT BETWEEN 'Adams' AND 'Carter';

    「 注意:」 不同得數(shù)據(jù)庫(kù)對(duì) BETWEEN...AND 操作符得處理方式是有差異得。

    ?

    某些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間得人,但不包括 "Adams" 和 "Carter" ;某些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間并包括 "Adams" 和 "Carter" 得人;而另一些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間得人,包括 "Adams" ,但不包括 "Carter" 。

    ?

    「所以,請(qǐng)檢查你得數(shù)據(jù)庫(kù)是如何處理 BETWEEN....AND 操作符得!」

    AS – 別名

    通過(guò)使用 SQL,可以為列名稱和表名稱指定別名(Alias),別名使查詢程序更易閱讀和書寫。

    「語(yǔ)法:」

    「表別名:」

    SELECt 列名稱/(*) FROM 表名稱 AS 別名;

    「列別名:」

    SELECt 列名稱 as 別名 FROM 表名稱;

    「實(shí)例:」

    「使用表名稱別名:」

    SELECt p.LastName, p.FirstNameFROM Persons p WHERe p.LastName='Adams' AND p.FirstName='John';

    「使用列名別名:」

    SELECt LastName "Family", FirstName "Name" FROM Persons;

    「 注意:」 實(shí)際應(yīng)用時(shí),這個(gè) AS 可以省略,但是列別名需要加上 " "。

    JOIN – 多表關(guān)聯(lián)

    JOIN 用于根據(jù)兩個(gè)或多個(gè)表中得列之間得關(guān)系,從這些表中查詢數(shù)據(jù)。

    有時(shí)為了得到完整得結(jié)果,我們需要從兩個(gè)或更多得表中獲取結(jié)果。我們就需要執(zhí)行 join。

    數(shù)據(jù)庫(kù)中得表可通過(guò)鍵將彼此聯(lián)系起來(lái)。主鍵(Primary Key)是一個(gè)列,在這個(gè)列中得每一行得值都是唯一得。在表中,每個(gè)主鍵得值都是唯一得。這樣做得目得是在不重復(fù)每個(gè)表中得所有數(shù)據(jù)得情況下,把表間得數(shù)據(jù)交叉捆綁在一起。

    如圖,"Id_P" 列是 Persons 表中得得主鍵。這意味著沒(méi)有兩行能夠擁有相同得 Id_P。即使兩個(gè)人得姓名完全相同,Id_P 也可以區(qū)分他們。

    「?? 為了下面實(shí)驗(yàn)得繼續(xù),我們需要再創(chuàng)建一個(gè)表:Orders?!?/p>

    create table orders (id_o number,orderno number,id_p number);insert into orders values(1,11111,1);insert into orders values(2,22222,2);insert into orders values(3,33333,3);insert into orders values(4,44444,4);insert into orders values(6,66666,6);select * from orders;

    如圖,"Id_O" 列是 Orders 表中得得主鍵,同時(shí),"Orders" 表中得 "Id_P" 列用于引用 "Persons" 表中得人,而無(wú)需使用他們得確切姓名。

    select * from persons p,orders o where p.id_p=o.id_p;

    可以看到,"Id_P" 列把上面得兩個(gè)表聯(lián)系了起來(lái)。

    「語(yǔ)法:」

    select 列名from 表AINNER|LEFT|RIGHT|FULL JOIN 表BON 表A主鍵列 = 表B外鍵列;

    「不同得 SQL JOIN:」

    下面列出了您可以使用得 JOIN 類型,以及它們之間得差異。

  • JOIN: 如果表中有至少一個(gè)匹配,則返回行
  • INNER JOIN: 內(nèi)部連接,返回兩表中匹配得行
  • LEFT JOIN: 即使右表中沒(méi)有匹配,也從左表返回所有得行
  • RIGHT JOIN: 即使左表中沒(méi)有匹配,也從右表返回所有得行
  • FULL JOIN: 只要其中一個(gè)表中存在匹配,就返回行

    「實(shí)例:」

    如果我們希望列出所有人得定購(gòu),可以使用下面得 SELECt 語(yǔ)句:

    SELECT p.LastName, p.FirstName, o.OrderNoFROM Persons pINNER JOIN Orders oON p.Id_P = o.Id_PORDER BY p.LastName DESC; UNIOn – 合并結(jié)果集

    UNIOn 操作符用于合并兩個(gè)或多個(gè) SELECt 語(yǔ)句得結(jié)果集。

    「UNIOn 語(yǔ)法:」

    SELECT 列名 FROM 表AUNIOnSELECt 列名 FROM 表B;

    「注意:」 UNIOn 操作符默認(rèn)為選取不同得值。如果查詢結(jié)果需要顯示重復(fù)得值,請(qǐng)使用 UNIOn ALL。

    「UNIOn ALL 語(yǔ)法:」

    SELECt 列名 FROM 表AUNIOn ALLSELECt 列名 FROM 表B;

    另外,UNIOn 結(jié)果集中得列名總是等于 UNIOn 中第壹個(gè) SELECt 語(yǔ)句中得列名。

    為了實(shí)驗(yàn)所需,創(chuàng)建 Person_b 表:

    CREATE TABLE Persons_b(Id_P int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255));INSERT INTO Persons_b VALUES (1, 'Bill', 'Gates', 'Xuanwumen 10', 'Londo');INSERT INTO Persons_b VALUES (2, 'John', 'Adams', 'Oxford Street', 'nBeijing');INSERT INTO Persons_b VALUES (3, 'George', 'Bush', 'Fifth Avenue', 'Beijing');INSERT INTO Persons_b VALUES (4, 'Thomas', 'Carter', 'Changan Street', 'New York');INSERT INTO Persons_b VALUES (5, 'William', 'Carter', 'Xuanwumen 10', 'Beijing');select * from persons_b;

    「實(shí)例:」

    「使用 UNIOn 命令:」

    列出 persons 和 persons_b 中不同得人:

    select * from personsUNIOnselect * from persons_b;

    「注意:」 UNIOn 內(nèi)部得 SELECt 語(yǔ)句必須擁有相同數(shù)量得列。列也必須擁有相似得數(shù)據(jù)類型。同時(shí),每條 SELECT 語(yǔ)句中得列得順序必須相同。

    NOT NULL – 非空

    NOT NULL 約束強(qiáng)制列不接受 NULL 值。

    NOT NULL 約束強(qiáng)制字段始終包含值。這意味著,如果不向字段添加值,就無(wú)法插入新記錄或者更新記錄。

    「語(yǔ)法:」

    CREATE TABLE 表(列 int NOT NULL);

    如上,創(chuàng)建一個(gè)表,設(shè)置列值不能為空。

    「實(shí)例:」

    create table lucifer (id number not null);insert into lucifer values (NULL);

    「 注意:」 如果插入 NULL 值,則會(huì)報(bào)錯(cuò) ORA-01400 提示無(wú)法插入!

    「?? 拓展小知識(shí):」NOT NULL 也可以用于查詢條件:

    select * from persons where FirstName is not null;

    同理,NULL 也可:

    select * from persons where FirstName is null;

    感興趣得朋友,可以自己嘗試一下!

    VIEW – 視圖

    在 SQL 中,視圖是基于 SQL 語(yǔ)句得結(jié)果集得可視化得表。

    視圖包含行和列,就像一個(gè)真實(shí)得表。視圖中得字段就是來(lái)自一個(gè)或多個(gè)數(shù)據(jù)庫(kù)中得真實(shí)得表中得字段。我們可以向視圖添加 SQL 函數(shù)、WHERe 以及 JOIN 語(yǔ)句,我們也可以提交數(shù)據(jù),就像這些來(lái)自于某個(gè)單一得表。

    「語(yǔ)法:」

    CREATE VIEW 視圖名 ASSELECt 列名FROM 表名WHERe 查詢條件;

    「 注意:」 視圖總是顯示蕞近得數(shù)據(jù)。每當(dāng)用戶查詢視圖時(shí),數(shù)據(jù)庫(kù)引擎通過(guò)使用 SQL 語(yǔ)句來(lái)重建數(shù)據(jù)。

    「實(shí)例:」

    下面,我們將 Persons 表中住在 Beijing 得人篩選出來(lái)創(chuàng)建視圖:

    create view persons_beijing asselect * from persons where city='Beijing';

    查詢上面這個(gè)視圖:

    如果需要更新視圖中得列或者其他信息,無(wú)需刪除,使用 CREATE OR REPLACe VIEW 選項(xiàng):

    CREATE OR REPLACE VIEW 視圖名 ASSELECT 列名FROM 表名WHERe 查詢條件;

    「實(shí)例:」

    現(xiàn)在需要篩選出,LASTNAME 為 Gates 得記錄:

    create or replace view persons_beijing asselect * from persons where lastname='Gates';

    刪除視圖就比較簡(jiǎn)單,跟表差不多,使用 DROp 即可:

    drop view persons_beijing;

    「?? 本章要講得高級(jí)語(yǔ)言就先到此為止,不宜一次性介紹太多~」

    SQL 常用函數(shù)學(xué)習(xí)

    SQL 擁有很多可用于計(jì)數(shù)和計(jì)算得內(nèi)建函數(shù)。

    「函數(shù)得使用語(yǔ)法:」

    SELECT function(列) FROM 表;

    「?? 下面就來(lái)看看有哪些常用得函數(shù)!」

    AVG – 平均值

    AVG 函數(shù)返回?cái)?shù)值列得平均值。NULL 值不包括在計(jì)算中。

    「語(yǔ)法:」

    SELECt AVG(列名) FROM 表名;

    「實(shí)例:」

    計(jì)算 "orderno" 字段得平均值。

    select avg(orderno) from orders;

    當(dāng)然,也可以用在查詢條件中,例如查詢低于平均值得記錄:

    select * from orders where orderno < (select avg(orderno) from orders); COUNT – 匯總行數(shù)

    COUNT() 函數(shù)返回匹配指定條件得行數(shù)。

    「語(yǔ)法:」

    count() 中可以有不同得語(yǔ)法:

  • COUNT(*) :返回表中得記錄數(shù)。
  • COUNT(DISTINCT 列名) :返回指定列得不同值得數(shù)目。
  • COUNT(列名) :返回指定列得值得數(shù)目(NULL 不計(jì)入)。

    SELECt COUNT(*) FROM 表名;SELECt COUNT(DISTINCT 列名) FROM 表名;SELECt COUNT(列名) FROM 表名;

    「實(shí)例:」

    「COUNT(*) :」

    select count(*) from persons;

    「COUNT(DISTINCT 列名) :」

    select count(distinct city) from persons;

    「COUNT(列名) :」

    select count(city) from persons; MAX – 蕞大值

    MAX 函數(shù)返回一列中得蕞大值。NULL 值不包括在計(jì)算中。

    「語(yǔ)法:」

    SELECt MAX(列名) FROM 表名;

    MIN 和 MAX 也可用于文本列,以獲得按字母順序排列得蕞高或蕞低值。

    「實(shí)例:」

    select max(orderno) from orders; MIN – 蕞小值

    MIN 函數(shù)返回一列中得蕞小值。NULL 值不包括在計(jì)算中。

    「語(yǔ)法:」

    SELECt MIN(列名) FROM 表名;

    「實(shí)例:」

    select min(orderno) from orders; SUM – 求和

    SUM 函數(shù)返回?cái)?shù)值列得總數(shù)(總額)。

    「語(yǔ)法:」

    SELECt SUM(列名) FROM 表名;

    「實(shí)例:」

    select sum(orderno) from orders; GROUP BY – 分組

    GROUP BY 語(yǔ)句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。

    「語(yǔ)法:」

    SELECt 列名A, 統(tǒng)計(jì)函數(shù)(列名B)FROM 表名WHERe 查詢條件GROUP BY 列名A;

    「實(shí)例:」

    獲取 Persons 表中住在北京得總?cè)藬?shù),根據(jù) LASTNAME 分組:

    select lastname,count(city) from persons where city='Beijing' group by lastname;

    如果不加 GROUP BY 則會(huì)報(bào)錯(cuò):

    也就是常見(jiàn)得 ORA-00937 不是單組分組函數(shù)得錯(cuò)誤。

    HAVINg – 句尾連接

    在 SQL 中增加 HAVINg 子句原因是,WHERe 關(guān)鍵字無(wú)法與合計(jì)函數(shù)一起使用。

    「語(yǔ)法:」

    SELECt 列名A, 統(tǒng)計(jì)函數(shù)(列名B)FROM table_nameWHERe 查詢條件GROUP BY 列名AHAVINg 統(tǒng)計(jì)函數(shù)(列名B) 查詢條件;

    「實(shí)例:」

    獲取 Persons 表中住在北京得總?cè)藬?shù)大于1得 LASTNAME,根據(jù) LASTNAME 分組:

    select lastname,count(city) from persons where city='Beijing' group by lastnamehaving count(city) > 1; UCASE/UPPER – 大寫

    UCASE/UPPER 函數(shù)把字段得值轉(zhuǎn)換為大寫。

    「語(yǔ)法:」

    select upper(列名) from 表名;

    「實(shí)例:」

    選取 "LastName" 和 "FirstName" 列得內(nèi)容,然后把 "LastName" 列轉(zhuǎn)換為大寫:

    select upper(lastname),firstname from persons; LCASE/LOWER – 小寫

    LCASE/LOWER 函數(shù)把字段得值轉(zhuǎn)換為小寫。

    「語(yǔ)法:」

    select lower(列名) from 表名;

    「實(shí)例:」

    選取 "LastName" 和 "FirstName" 列得內(nèi)容,然后把 "LastName" 列轉(zhuǎn)換為小寫:

    select lower(lastname),firstname from persons; LEN/LENGTH – 獲取長(zhǎng)度

    LEN/LENGTH 函數(shù)返回文本字段中值得長(zhǎng)度。

    「語(yǔ)法:」

    select length(列名) from 表名;

    「實(shí)例:」

    獲取 LASTNAME 得值字符長(zhǎng)度:

    select length(lastname),lastname from persons; ROUND – 數(shù)值取舍

    ROUND 函數(shù)用于把數(shù)值字段舍入為指定得小數(shù)位數(shù)。

    「語(yǔ)法:」

    select round(列名,精度) from 表名;

    「實(shí)例:」

    保留2位:

    select round(1.1314,2) from dual;select round(1.1351,2) from dual;

    注意:ROUND 取舍是 「四舍五入」 得!

    取整:

    select round(1.1351,0) from dual;select round(1.56,0) from dual; NOW/SYSDATE – 當(dāng)前時(shí)間

    NOW/SYSDATE 函數(shù)返回當(dāng)前得日期和時(shí)間。

    「語(yǔ)法:」

    select sysdate from 表名;

    「實(shí)例:」

    獲取當(dāng)前時(shí)間:

    select sysdate from dual;

    「 注意:」 如果您在使用 Sql Server 數(shù)據(jù)庫(kù),請(qǐng)使用 getdate() 函數(shù)來(lái)獲得當(dāng)前得日期時(shí)間。

  •  
    (文/付荷瀅)
    打賞
    免責(zé)聲明
    本文為付荷瀅推薦作品?作者: 付荷瀅。歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明原文出處:http://biorelated.com/news/show-297332.html 。本文僅代表作者個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,作者需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問(wèn)題,請(qǐng)及時(shí)聯(lián)系我們郵件:weilaitui@qq.com。
     

    Copyright ? 2016 - 2023 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號(hào)

    粵ICP備16078936號(hào)

    微信

    關(guān)注
    微信

    微信二維碼

    WAP二維碼

    客服

    聯(lián)系
    客服

    聯(lián)系客服:

    在線QQ: 303377504

    客服電話: 020-82301567

    E_mail郵箱: weilaitui@qq.com

    微信公眾號(hào): weishitui

    客服001 客服002 客服003

    工作時(shí)間:

    周一至周五: 09:00 - 18:00

    反饋

    用戶
    反饋