国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

navicat使用及SQL查詢語法

這篇具有很好參考價(jià)值的文章主要介紹了navicat使用及SQL查詢語法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

數(shù)據(jù)庫工具連接使用

  • 打開Navicat Premium工具,選擇要連接的數(shù)據(jù)庫類型,這里選擇Mysql數(shù)據(jù)庫,如圖所示。
    navicat使用及SQL查詢語法
  • 然后設(shè)置連接名及其他信息,輸入IP地址,服務(wù)名稱及用戶名及密碼信息,如下圖所示。
    navicat使用及SQL查詢語法
  • 如果項(xiàng)目的數(shù)據(jù)庫需要通過ssh通道連接,則需要配置SSH信息,點(diǎn)擊SSH,輸入主機(jī)、用戶名、密碼,不用則不需要這一步。
    navicat使用及SQL查詢語法
  • 信息輸入完畢后,可以點(diǎn)擊連接測試的按鈕,測試一下輸入的信息是否正確,如果彈出連接成功的按鈕,證明配置正確。點(diǎn)擊保存
    navicat使用及SQL查詢語法

1.1新建mysql數(shù)據(jù)庫

  • 下載培訓(xùn)數(shù)據(jù)庫腳本
    腳本地址:鏈接: https://pan.baidu.com/s/14oupc2dn-RYjXcvSAwhXeg
    提取碼: xqei
  • 選擇連接右鍵 新建數(shù)據(jù)庫
    navicat使用及SQL查詢語法
  • 新建 填寫數(shù)據(jù)庫名稱 train_demo 、字符集選utf8、排序規(guī)則:utf8_general_ci ,點(diǎn)擊確定
    navicat使用及SQL查詢語法
  • 雙擊新建數(shù)據(jù)庫,點(diǎn)擊右鍵運(yùn)行SQL文件
    navicat使用及SQL查詢語法
  • 選擇已下載的培訓(xùn)數(shù)據(jù)庫腳本,點(diǎn)擊開始
    navicat使用及SQL查詢語法
  • 顯示成功后,點(diǎn)擊關(guān)閉。
    navicat使用及SQL查詢語法
  • 此時(shí)可以看到培訓(xùn)數(shù)據(jù)庫表已生成。
    navicat使用及SQL查詢語法
    sql語法使用手冊會使用當(dāng)前培訓(xùn)數(shù)據(jù)庫。

1.2工具如果使用

  • 我們雙擊左側(cè)的連接,選擇使用的數(shù)據(jù)庫,本文例子培訓(xùn)數(shù)據(jù)庫train_demo,然后選擇表看到右側(cè)出來所有的表信息。
    navicat使用及SQL查詢語法
  • 如果我們想看表的數(shù)據(jù)信息,可以雙擊表名信息,也可以選擇右鍵,打開表。如下圖所示
    navicat使用及SQL查詢語法
  • 當(dāng)打開表的數(shù)據(jù)信息,可以增加數(shù)據(jù)、修改數(shù)據(jù)、修改數(shù)據(jù),如果想修改數(shù)據(jù)直接修改后點(diǎn)擊保存即可。
    navicat使用及SQL查詢語法
  • 按鈕說明
    navicat使用及SQL查詢語法
  • 打開表之后如何進(jìn)行數(shù)據(jù)塞選,查找自己想要的數(shù)據(jù)。
    例如選擇base_order表打開點(diǎn)擊篩選點(diǎn)擊添加,一般情況下直接根據(jù)ID也就是頁面的序號進(jìn)行篩選,在問號處填入序號ID后點(diǎn)擊確定,比如1
    navicat使用及SQL查詢語法
    navicat使用及SQL查詢語法
  • 然后點(diǎn)擊應(yīng)用
    navicat使用及SQL查詢語法
  • 查詢后結(jié)果如下圖
    navicat使用及SQL查詢語法
  • 然后如果需要修改或者刪除數(shù)據(jù)通過之前的操作步驟即可。
    如果需要更換查詢條件點(diǎn)擊ID后選擇相應(yīng)查詢字段比如狀態(tài)emp_name查詢。
    navicat使用及SQL查詢語法
  • 多個(gè)條件篩選繼續(xù)點(diǎn)擊添加即可。比如根據(jù)員工名稱和部門ID查詢
    navicat使用及SQL查詢語法
  • 以下為常用的條件
    navicat使用及SQL查詢語法
    navicat使用及SQL查詢語法
    以上為通過工具進(jìn)行條件查詢單個(gè)表中數(shù)據(jù)。并可以修改或刪除相關(guān)數(shù)據(jù)。(調(diào)整數(shù)據(jù)請核對清楚再操作,一定要核對頁面的序號和數(shù)據(jù)庫工具的表的id是否一致)

1.3用工具執(zhí)行查詢語句

  • 用工具進(jìn)行語句查詢,選擇數(shù)據(jù)庫 ctrl+Q(快捷鍵)或者-右鍵 新建 查詢
    navicat使用及SQL查詢語法
  • 彈出便捷查詢對話框
    navicat使用及SQL查詢語法
  • 例如根據(jù)姓名查詢員工
    select * from employees where EMP_NAME=‘張三’;
    navicat使用及SQL查詢語法
  • 選中查詢語句點(diǎn)擊查詢按鈕
    navicat使用及SQL查詢語法
  • 彈出查詢結(jié)果
    navicat使用及SQL查詢語法

SQL語法

2.1簡介

  • SQL是設(shè)計(jì)用于在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中管理數(shù)據(jù)的標(biāo)準(zhǔn)語言。

  • SQL表示結(jié)構(gòu)化查詢語言。SQL是一種標(biāo)準(zhǔn)編程語言,專門設(shè)計(jì)用于在關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)內(nèi)存儲,檢索,管理或處理數(shù)據(jù)。SQL于1987年成為ISO標(biāo)準(zhǔn)。

  • SQL是使用最廣泛的數(shù)據(jù)庫語言,并受到流行的關(guān)系數(shù)據(jù)庫系統(tǒng)(例如MySQL,SQL Server和Oracle)的支持。但是,SQL標(biāo)準(zhǔn)的某些功能在不同的數(shù)據(jù)庫系統(tǒng)中以不同的方式實(shí)現(xiàn)。

  • SQL最初是在1970年代初期在IBM開發(fā)的。最初,它被稱為SEQUEL(結(jié)構(gòu)化英語查詢語言),后來被更改為SQL(發(fā)音為SQL)。

2.2 SQL 查詢數(shù)據(jù) (SELECT 語句)

  • 先通過第3章navicat使用手冊學(xué)習(xí)新建培訓(xùn)數(shù)據(jù)庫。

  • 從表中選擇數(shù)據(jù)的基本語法可以通過以下方式給出:
    SELECT column1_name, column2_name, columnN_name FROM table_name;

  • 在這里,column1_name,column2_name,…是您要獲取其值的數(shù)據(jù)庫表的列或字段的名稱。但是,如果要獲取表中所有可用列的值,則可以使用以下語法:
    SELECT * FROM table_name;

  • 讓我們將這些語句投入實(shí)際使用。假設(shè)我們在數(shù)據(jù)庫中有一個(gè)名為employees的表,其中包含以下記錄:
    navicat使用及SQL查詢語法

查詢并顯示表中所有數(shù)據(jù)

SELECT * FROM employees;
執(zhí)行后,輸出將如下所示:
navicat使用及SQL查詢語法

  • 正如您看到的,它返回employees表中的所有行和列。
  • 提示:星號(*)是通配符,表示所有內(nèi)容。例如,SELECT上面示例中的語句中的星號字符是employee表的所有列的簡寫代替。
  • 從表中選擇查詢指定的列
  • 如果不需要所有數(shù)據(jù),則可以選擇特定的列,如下所示:
    SELECT emp_id, emp_name, hire_date, salary
    FROM employees;
    執(zhí)行上面的語句后,您將獲得如下輸出:
    navicat使用及SQL查詢語法
    正如您看到的,這一次在結(jié)果集中沒有dept_id列

2.3 SQL WHERE 子句

  • 根據(jù)條件選擇記錄 WHERE子句與SELECT 語句一起使用,僅提取滿足指定條件的那些記錄。

  • 基本語法可以通過以下方式給出:
    SELECT column_list FROM table_name WHERE condition;

  • 在這里,column_list是要獲取其值的數(shù)據(jù)庫表的列/字段的名稱,例如name,age,country等。

  • 但是,如果要獲取表中所有可用列的值,則可以使用以下語法:
    SELECT * FROM table_name WHERE condition;

  • 現(xiàn)在,讓我們看一些示例來演示其實(shí)際工作原理。
    假設(shè)我們在數(shù)據(jù)庫中有一個(gè)名為employees的表,其中包含以下記錄:
    navicat使用及SQL查詢語法

  • 使用WHERE子句過濾記錄 以下SQL語句將從employees表中返回其薪水大于7000的所有employee
    該WHERE子句只是過濾掉不需要的數(shù)據(jù)。
    SELECT * FROM employees WHERE salary > 7000;
    執(zhí)行后,輸出將如下所示:
    navicat使用及SQL查詢語法
    正如您看到的,輸出僅包含薪水大于7000的那些雇員。類似地,您可以從特定列中獲取記錄,如下所示:
    SELECT emp_id, emp_name, hire_date, salary
    FROM employees
    WHERE salary > 7000;
    執(zhí)行上面的語句后,您將獲得如下輸出:
    navicat使用及SQL查詢語法
    以下語句將獲取其雇員ID為2的雇員的記錄。
    SELECT * FROM employees
    WHERE emp_id = 2;
    該語句將產(chǎn)生以下輸出:
    navicat使用及SQL查詢語法
    這次,我們在輸出中僅獲得一行,因?yàn)閑mp_id對每個(gè)員工都是唯一的。

WHERE子句中允許的運(yùn)算符

SQL支持許多可在WHERE子句中使用的運(yùn)算符,下表總結(jié)了最重要的運(yùn)算符。

操作員 描述 在線示例
= 等于 WHERE id = 2
< 大于 WHERE age > 30
> 少于 WHERE age < 18
>= 大于或等于 大于或等于 WHERE rating >= 4
<= 小于或等于 WHERE price <= 100
like 簡單模式匹配 簡單模式匹配 WHERE name LIKE ‘Dav’
IN 檢查指定值是否與列表或子查詢中的任何值匹配
BETWEEN 檢查指定值是否在值范圍內(nèi)

2.4 SQL AND & OR 運(yùn)算符

  • 使用AND&OR運(yùn)算符,WHERE以根據(jù)多個(gè)條件過濾記錄。
  • AND運(yùn)算符是一個(gè)邏輯運(yùn)算符,它將兩個(gè)條件組合在一起,并且僅當(dāng)兩個(gè)條件的結(jié)果都為TRUE時(shí)才返回TRUE。
    SELECT column1_name, column2_name, columnN_name FROM table_name WHERE
    condition1 AND condition2;
  • 讓我們看一些示例,演示其實(shí)際工作方式。
  • 假設(shè)我們在數(shù)據(jù)庫中有一個(gè)名為employees的表,其中包含以下記錄:
    navicat使用及SQL查詢語法
    以下SQL語句將僅從employees表中返回薪水(salary)大于7000且dept_id等于1的那些雇員。
    SELECT * FROM employees
    WHERE salary > 7000 AND dept_id = 1;
    執(zhí)行后,您將獲得如下輸出:
    navicat使用及SQL查詢語法
OR運(yùn)算符

同樣,OR運(yùn)算符也是將兩個(gè)條件組合在一起的邏輯運(yùn)算符,但是TRUE當(dāng)兩個(gè)條件中的任何一個(gè)為時(shí),它將返回TRUE。
以下SQL語句將從employees表中返回薪水(salary)大于7000或dept_id等于1的所有雇員。

SELECT * FROM employees
WHERE salary > 7000 OR dept_id = 1;
這次您將獲得如下輸出:
navicat使用及SQL查詢語法
同時(shí)使用AND與OR運(yùn)算符
您還可以組合 AND 和 OR 創(chuàng)建復(fù)雜的條件表達(dá)式。
以下SQL語句將返回薪水大于5000,并且dept_id等于1或5的所有雇員。
SELECT * FROM employees
WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);
執(zhí)行完上面的查詢后,您將獲得如下輸出:
navicat使用及SQL查詢語法

2.5 SQL IN & BETWEEN 運(yùn)算符

IN運(yùn)算符
  • IN運(yùn)算符是邏輯運(yùn)算符,用于檢查一組值中是否存在特定值。 其基本語法可以通過以下方式給出:

    SELECT column_list FROM table_name WHERE column_name IN (value1,
    value1,…);

  • 在這里,column_list是要獲取其值的數(shù)據(jù)庫表的列/字段的名稱,例如name,age,country等。好吧,讓我們看看一些實(shí)例。
    考慮我們在數(shù)據(jù)庫中有一個(gè)employees表,該表具有以下記錄:
    navicat使用及SQL查詢語法
    以下SQL語句將僅返回dept_id為1或3的那些雇員。
    SELECT * FROM employees
    WHERE dept_id IN (1, 3);
    執(zhí)行查詢后,您將獲得如下結(jié)果集:
    navicat使用及SQL查詢語法
    同樣,您可以使用NOT IN運(yùn)算符,則該運(yùn)算符與IN運(yùn)算符完全相反。以下SQL語句將返回除dept_id不是1或3的那些雇員以外的所有雇員。
    SELECT * FROM employees
    WHERE dept_id NOT IN (1, 3);
    執(zhí)行查詢后,這次您將獲得如下結(jié)果集:
    navicat使用及SQL查詢語法

BETWEEN 運(yùn)算符

如果列中的值落在特定范圍內(nèi),有時(shí)您想選擇一行。處理數(shù)字?jǐn)?shù)據(jù)時(shí),這種類型的條件很常見。
要基于這種條件執(zhí)行查詢,您可以利用BETWEEN運(yùn)算符。它是一個(gè)邏輯運(yùn)算符,可讓您指定要測試的范圍,如下所示:
SELECT column1_name, column2_name, columnN_name FROM table_name WHERE column_name BETWEEN min_value AND max_value;
讓我們根據(jù)雇員(employees)表上的范圍條件構(gòu)建和執(zhí)行查詢。
定義數(shù)值范圍
以下SQL語句將僅返回employees表中薪水在7000到9000之間的那些雇員。
SELECT * FROM employees WHERE salary BETWEEN 7000 AND 9000;
執(zhí)行后,您將獲得如下輸出:
navicat使用及SQL查詢語法

定義日期范圍

將BETWEEN運(yùn)算符與日期或時(shí)間值一起使用時(shí),請使用==CAST()==函數(shù)將這些值顯式轉(zhuǎn)換為所需的數(shù)據(jù)類型,以獲得最佳結(jié)果。例如,如果在與DATE的比較中使用諸如“ 2016-12-31”之類的字符串,則將其轉(zhuǎn)換為DATE,如下所示:
以下SQL語句選擇2016年1月1日(即“ 2016-01-01”)至2018年12月31日(即“ 2018-12-31”)之間雇用的所有雇員:
SELECT * FROM employees WHERE hire_date
BETWEEN CAST(‘2016-01-01’ AS DATE) AND CAST(‘2018-12-31’ AS DATE);
執(zhí)行查詢后,您將獲得如下結(jié)果集:
navicat使用及SQL查詢語法

2.6 SQL ORDER BY 子句

對結(jié)果集排序
  • 對結(jié)果集排序
    通常,當(dāng)您使用SELECT語句從表中獲取數(shù)據(jù)時(shí),結(jié)果集中的行沒有任何特定的順序。如果要按特定順序排列結(jié)果集,則可以在語句末尾指定ORDER
    BY子句,該子句告訴程序如何對查詢返回的數(shù)據(jù)進(jìn)行排序。
    默認(rèn)排序順序?yàn)樯颉?br> ORDER BY子句用于按升序或降序?qū)Σ樵兎祷氐臄?shù)據(jù)進(jìn)行排序。該子句的基本語法可以通過以下方式給出:
    SELECT column_list FROM
    table_name ORDER BY column_name ASC|DESC;
  • 在這里,column_list是要獲取其值的數(shù)據(jù)庫表的名稱,年齡,國家等列/字段的名稱,而column_name是要排序的列的名稱。讓我們看一些示例,演示其實(shí)際工作方式。
    考慮我們在數(shù)據(jù)庫中有一個(gè)employees表,該表具有以下記錄:
    navicat使用及SQL查詢語法
單列排序

下面的SQL語句將從employees表中返回所有employee,并按emp_name列的升序?qū)Y(jié)果集進(jìn)行排序。
SELECT * FROM employees
ORDER BY emp_name ASC;
您可以跳過該ASC選項(xiàng),而僅使用以下語法。它返回與上一條語句相同的結(jié)果集,因?yàn)镾QL默認(rèn)排序順序是升序的:
SELECT * FROM employees
ORDER BY emp_name;
執(zhí)行上述命令后,您將獲得如下輸出:
navicat使用及SQL查詢語法
同樣,您可以使用DESC選項(xiàng)以降序執(zhí)行排序。以下語句將按數(shù)字薪水(salary)列的降序排列結(jié)果集。
SELECT * FROM employees
ORDER BY salary DESC;
這次,您將獲得如下結(jié)果集:
navicat使用及SQL查詢語法

多列排序

注意:當(dāng)指定多個(gè)排序列時(shí),結(jié)果集首先按第一列排序,然后按第二列對該有序列表排序,依此類推。
現(xiàn)在執(zhí)行此語句,該語句按dept_id和salary列對結(jié)果集進(jìn)行排序。
SELECT * FROM employees
ORDER BY dept_id ASC,salary DESC;
navicat使用及SQL查詢語法

2.7 SQL LIMIT 子句

SQL LIMIT 子句

SQL LIMIT子句用于限制返回的行數(shù)。其基本語法為:
SELECT column_list FROM table_name LIMIT number;

以下語句返回雇員(employees)表中收入最高的前三名雇員。
– MySQL 數(shù)據(jù)庫的語法
SELECT * FROM employees
ORDER BY salary DESC LIMIT 3;
執(zhí)行后,您將獲得如下輸出:
navicat使用及SQL查詢語法
注意: 在SELECT語句中,始終將ORDER BY子句與LIMIT子句一起使用。 否則,您可能無法獲得理想的結(jié)果。

在LIMIT子句中設(shè)置行偏移
LIMIT子句接受可選的第二個(gè)參數(shù)。
當(dāng)指定了兩個(gè)參數(shù)時(shí),第一個(gè)參數(shù)指定要返回的第一行的偏移量,即起點(diǎn),而第二個(gè)參數(shù)指定要返回的最大行數(shù)。初始行的偏移量是0(不是1)。
因此,如果要找出薪水第三高的員工,可以執(zhí)行以下操作:
– MySQL數(shù)據(jù)庫的語法
SELECT * FROM employees
ORDER BY salary DESC LIMIT 2, 1;
執(zhí)行上述命令后,結(jié)果集中將僅獲得一條記錄:
navicat使用及SQL查詢語法

2.8 SQL DISTINCT 子句

從數(shù)據(jù)庫表中獲取數(shù)據(jù)時(shí),結(jié)果集可能包含重復(fù)的行或值。 如果要刪除這些重復(fù)的值,可以在SELECT關(guān)鍵字之后直接指定關(guān)鍵字DISTINCT,如下所示:
SELECT DISTINCT column_list FROM table_name;

在這里,column_list是用逗號分隔的要獲取其值的數(shù)據(jù)庫表的列名或字段名的列表(例如name,age,country等)。
注意: DISTINCT子句的行為類似于UNIQUE約束,除了它對待null的方式不同。 兩個(gè)NULL值被認(rèn)為是唯一的,而同時(shí)又不認(rèn)為它們是彼此不同的。

我們在數(shù)據(jù)庫中有一個(gè)employees表,該表具有以下記錄:
navicat使用及SQL查詢語法
現(xiàn)在執(zhí)行以下語句,該語句返回此表的dept_id列中的所有行。

SELECT dept_id FROM employees;
執(zhí)行后,您將獲得如下輸出:
navicat使用及SQL查詢語法
如果仔細(xì)查看輸出,您會發(fā)現(xiàn)部門ID“1”在我們的結(jié)果集中出現(xiàn)了兩次,這不好吧。好吧,讓我們解決這個(gè)問題。
刪除重復(fù)數(shù)據(jù)
SELECT DISTINCT dept_id FROM employees;
執(zhí)行上述命令后,您將獲得如下輸出:
navicat使用及SQL查詢語法
正如您看到的,這次的結(jié)果集中沒有重復(fù)的值。
注意:如果將SELECT DISTINCT語句用于具有多個(gè)NULL值的列,則SQL保留一個(gè)NULL值,并從結(jié)果集中刪除其他值,因?yàn)镈ISTINCT將所有NULL值視為相同的值。

2.9 SQL 聯(lián)表查詢(Join)

  • 到目前為止,您所看到的所有查詢都集中在一個(gè)表上。但是在現(xiàn)實(shí)生活中,您經(jīng)常需要一次查詢兩個(gè)或多個(gè)表并帶來合并的結(jié)果集。這在技術(shù)上稱為聯(lián)接,因?yàn)樗婕案鶕?jù)表之間的公共字段(外鍵)聯(lián)接不同的表以創(chuàng)建數(shù)據(jù)的新視圖。
  • 注意:為了聯(lián)接表,用于聯(lián)接表的列的數(shù)據(jù)應(yīng)該匹配,而不必匹配列名 聯(lián)結(jié)類型
  • 聯(lián)接表時(shí),在查詢中創(chuàng)建的聯(lián)接類型會影響結(jié)果集中顯示的行。您可以創(chuàng)建以下類型的聯(lián)接:
2.9.1 INNER JOIN 語句
  • INNER JOIN是最常見的連接類型。它僅返回在兩個(gè)聯(lián)接表中都匹配的行。下維恩圖說明了內(nèi)部聯(lián)接的工作方式。
    navicat使用及SQL查詢語法
    為了容易理解這一點(diǎn),讓我們來看看下面employees和departments表。在這里,employees表的dept id列是departments表的外鍵。因此,可以將這兩個(gè)表連接起來,得到組合的數(shù)據(jù)。
    navicat使用及SQL查詢語法
    navicat使用及SQL查詢語法
    表: departments
    現(xiàn)在,假設(shè)您只需要檢索分配給特定部門的那些員工的emp_id ,emp_name,hire_date和dept_name。因?yàn)樵趯?shí)際情況中,可能有些雇員尚未分配到部門,例如我們employees表中的第七名雇員“吳剛” 。但是這里的問題是,如何在同一個(gè)SQL查詢中從兩個(gè)表中檢索數(shù)據(jù)?
    如果您看到employees表,您會注意到它有一個(gè)名為dept_id的列,該列保存每個(gè)雇員分配到的部門的ID,即按技術(shù)術(shù)語來說,employees表的dept_id列是departments表的外鍵, 因此,我們將使用此列作為這兩個(gè)表之間的橋梁。
    這是一個(gè)示例,該示例通過使用通用的dept_id列將employee 和departments表連接在一起來檢索員工的id,姓名,雇用日期及其所屬部門。 它不包括未分配給任何部門的那些雇員。
    SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
    FROM employees AS t1 INNER JOIN departments AS t2
    ON t1.dept_id = t2.dept_id ORDER BY emp_id;
    提示:聯(lián)接表時(shí),請?jiān)诿總€(gè)列名稱前添加其所屬表的名稱(例如 employees.dept_id,departments.dept_id 或 t1.dept_id,t2.dept_id 如果您使用表別名),以避免萬一不同表中的列存在混淆和歧義的列錯(cuò)誤同名。
    注意:為了節(jié)省時(shí)間,可以在查詢中使用表別名代替鍵入長表名。 例如,您可以為employees表賦予別名t1,并使用t1.emp_name而不是employees.emp_name 來引用其列emp_name。執(zhí)行完上述命令后,您將得到如下結(jié)果集:
    navicat使用及SQL查詢語法
    正如您看到的,結(jié)果集僅包含具有dept_id值的雇員,并且該值也存在于department表的dept_id列中

2.9.2 LEFT JOIN 語句

一條LEFT JOIN語句返回左表中的所有行以及右表中滿足連接條件的行。左聯(lián)接是外部聯(lián)接的一種,因此也被稱為left outer join。外部聯(lián)接的其他變體是右聯(lián)接和完全聯(lián)接。
下維恩圖說明了左聯(lián)接的工作方式。
navicat使用及SQL查詢語法
注意:外部聯(lián)接是一種聯(lián)接,它在結(jié)果集中包含行,即使要聯(lián)接的兩個(gè)表中的行之間可能不匹配。

為了清楚地理解這一點(diǎn),讓我們來看看下面employees和departments表。
navicat使用及SQL查詢語法
navicat使用及SQL查詢語法

現(xiàn)在,假設(shè)您要檢索所有雇員的ID,姓名和雇用日期以及他們的部門名稱,而不管他們是否分配到任何部門。為了獲得這種類型的結(jié)果集,我們需要應(yīng)用左連接。
以下語句通過使用公用字段將員工(employees)和departments(部門)表連接在一起來檢索員工的ID,姓名,雇用日期及其部門名稱dept_id。它還包括未分配到部門的那些雇員。

SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
FROM employees AS t1 LEFT JOIN departments AS t2
ON t1.dept_id = t2.dept_id ORDER BY emp_id;
提示:在聯(lián)接查詢中,左表是該JOIN子句中最左側(cè)出現(xiàn)的表,而右表是該子句中最右側(cè)出現(xiàn)的表。
navicat使用及SQL查詢語法
正如您可以清楚地看到的那樣,左聯(lián)接包括雇員(employees)表中結(jié)果集中的所有行,無論departments表中的dept_id列是否匹配。
注意:如果左表中有一行,而右表中沒有匹配項(xiàng),則關(guān)聯(lián)的結(jié)果行將包含NULL來自右表的所有列的值。

2.9.3 RIGHT JOIN 語句

RIGHT JOIN是與LEFT JOIN完全相反。它返回右表中的所有行以及左表中滿足連接條件的行。
右連接是外連接的一種,因此也被稱為right outer join。外部聯(lián)接的其他變體是左聯(lián)接和完全聯(lián)接。下維恩圖說明了右聯(lián)接的工作方式。
navicat使用及SQL查詢語法
注意:外部聯(lián)接是一種聯(lián)接,它在結(jié)果集中包含行,即使要聯(lián)接的兩個(gè)表中的行之間可能不匹配。
為了清楚地理解這一點(diǎn),讓我們來看看下面employees和departments表。
navicat使用及SQL查詢語法
navicat使用及SQL查詢語法

現(xiàn)在,假設(shè)您要檢索所有部門的名稱以及在該部門工作的員工的詳細(xì)信息。但是,在實(shí)際情況下,可能有些部門目前沒有員工在工作。好吧,讓我們找出答案。
以下語句通過使用通用的dept_id字段將employee和department表連接在一起,檢索所有可用部門以及該部門員工的id,名稱,雇用日期。
提示:在聯(lián)接查詢中,左邊的表是在JOIN子句中最左邊出現(xiàn)的表,右邊的表是在最右邊出現(xiàn)的表。
執(zhí)行上述命令后,您將獲得如下輸出:
navicat使用及SQL查詢語法
正確的聯(lián)接包括結(jié)果集中部門表中的所有行,無論雇員表中的dept_id列是否匹配,因?yàn)槟梢郧宄乜吹?,即使該部門沒有員工,也將包含“銷售部”。
注意:如果右表中有一行,但左表中沒有匹配項(xiàng),則關(guān)聯(lián)的結(jié)果行將包含來自左表的所有列的NULL值。

2.10 LIKE 運(yùn)算符

到目前為止,您已經(jīng)看到了標(biāo)識確切字符串的條件,例如WHERE name=‘Lois Lane’。但是在SQL中,您也可以使用LIKE運(yùn)算符執(zhí)行部分或模式匹配。
LIKE運(yùn)算符允許您為一個(gè)或多個(gè)字符指定通配符提供模式匹配的度量。您可以使用以下兩個(gè)通配符:
● 百分號(%) - 匹配任意數(shù)量的字符,甚至零個(gè)字符。
● 下劃線(_) - 完全匹配一個(gè)字符
這是一些示例,顯示了如何將LIKE運(yùn)算符與通配符一起使用。

聲明 含義 返回值
WHERE name LIKE ‘Da%’ 查找以Da開頭的名字 David, Davidson
WHERE name LIKE ‘%th’ 查找以th結(jié)尾的名字 查找以th結(jié)尾的名字 Elizabeth, Smith
WHERE name LIKE ‘%on%’ 查找包含on的名字 Davidson, Toni
WHERE name LIKE ‘Sa_’ 查找以Sa開頭且最多后跟一個(gè)字符的名字 Sa
WHERE name LIKE ‘_oy’ 查找以oy結(jié)尾且最多包含一個(gè)字符的名字 Joy, Roy
WHERE name LIKE ‘an 查找包含an的名字,并以一個(gè)字符開頭和結(jié)尾 Dana, Hans
WHERE name LIKE ‘%ar_’ 查找包含ar的名字,該名字以任意數(shù)量的字符開頭,并以最多一個(gè)字符結(jié)尾 Richard, Karl
WHERE name LIKE ‘_ar%’ 查找包含ar的名字,最多以一個(gè)字符開頭,以任意數(shù)量的字符結(jié)尾 Karl, Mariya

通過搜索一些記錄,讓我們將上面討論的語句投入實(shí)際應(yīng)用中。
考慮我們employees在數(shù)據(jù)庫中有一個(gè)包含以下記錄的表:
navicat使用及SQL查詢語法
現(xiàn)在,假設(shè)您想找出所有以吳開頭的員工。
SELECT * FROM employees
WHERE emp_name LIKE ‘吳%’;
執(zhí)行查詢后,您將獲得如下輸出:
navicat使用及SQL查詢語法

2.11 表、列別名

2.11.1定義表別名
  • 當(dāng)多個(gè)表被加入在一個(gè)單一的查詢,你需要每一列的名字前面加上所屬的表的名稱,像employees.dept id,
    departments.dept
    id等,以避免混亂和模糊列錯(cuò)誤情況下不同表中的列有相同的名稱。但是,如果表名很長,并且多次出現(xiàn)在查詢中,那么編寫查詢將成為一項(xiàng)困難和惱人的任務(wù)。
    因此,為了節(jié)省時(shí)間并避免編寫完整的表名,可以為每個(gè)表提供一個(gè)簡短的別名,并在查詢中使用該別名來引用其列。
    為了清楚地理解這一點(diǎn),讓我們來看看下面employees和departments表。 下面是一個(gè)查詢,通過使用公共的dept
    id字段將雇員和部門表連接在一起,來檢索雇員的id、名稱和他們的部門名稱。
  • SELECT employees.emp_id, employees.emp_name, departments.dept_name
    FROM employees LEFT JOIN departments ON employees.dept_id =
    departments.dept_id ORDER BY emp_id;
  • 這是上一個(gè)使用表別名的查詢的壓縮版本:
  • -SELECT
    t1.emp_id, t1.emp_name, t2.dept_name FROM employees AS t1 LEFT JOIN
    departments AS t2 ON t1.dept_id = t2.dept_id ORDER BY emp_id;
    如果執(zhí)行這些語句中的任何一條,將得到相同的輸出,如下所示:
    navicat使用及SQL查詢語法
    正如您看到的,使用表別名可以節(jié)省多少打字工作。

2.11.2定義表列的別名

在MySQL中,當(dāng)您使用SQL函數(shù)生成自定義輸出時(shí),輸出列的名稱可能難以理解或難以理解。在這種情況下,您可以使用別名為輸出列臨時(shí)命名。
考慮以下查詢,在該查詢中我們使用表達(dá)式重新格式化了hire_date列中的日期以生成自定義輸出:
– MySQL數(shù)據(jù)庫的語法
SELECT emp_name, DATE_FORMAT(hire_date, ‘%M %e, %Y’) FROM employees;
如果執(zhí)行上面的語句,您將獲得如下輸出:
navicat使用及SQL查詢語法
正如您看到的,輸出中最后一列的標(biāo)簽很長而且很笨拙。我們可以使用列別名來解決此問題,如下所示:
– MySQL數(shù)據(jù)庫的語法
SELECT emp_name, DATE_FORMAT(hire_date, ‘%M %e, %Y’) AS hire_date
FROM employees;
如果執(zhí)行上面的語句,您將獲得更具可讀性的輸出,如下所示:
navicat使用及SQL查詢語法
注意:您可以在GROUP BY,ORDER BY或HAVING子句中的使用別名來引用列。但是,不允許在WHERE子句中使用別名。

2.12 GROUP BY 子句

GROUP BY子句與SELECT語句和聚合函數(shù)結(jié)合使用,以按通用列值將行分組在一起
為了清楚地理解這一點(diǎn),讓我們來看看下面employees和departments表。
navicat使用及SQL查詢語法
navicat使用及SQL查詢語法
表: departments
現(xiàn)在,不只是查找雇員及其所在部門的名稱,而是要查找每個(gè)部門中的雇員總數(shù)。
對于小型表,您可以簡單地應(yīng)用左聯(lián)接并計(jì)算雇員數(shù),但是假設(shè)如果一個(gè)表包含數(shù)千名雇員,那將不是那么容易。
在這種情況下,可以將GROUP BY子句與SELECT語句一起使用,如下所示:
SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name;

如果執(zhí)行上面的語句,您將獲得如下輸出:
navicat使用及SQL查詢語法

注意:在SQL SELECT語句中,GROUP BY子句必須出現(xiàn)在FROM和WHERE子句之后,并且出現(xiàn)在ORDER BY之前。

2.13 HAVING 子句

根據(jù)條件過濾組
HAVING子句通常與GROUP BY子句一起使用,以指定組或集合的過濾條件。HAVING子句只能與SELECT語句一起使用。
為了清楚地理解這一點(diǎn),讓我們來看看下面employees和departments表。
navicat使用及SQL查詢語法
navicat使用及SQL查詢語法

表: departments
現(xiàn)在,不只是查找員工及其部門的名稱,還要查找沒有員工的部門的名稱。
對于小型表,您可以簡單地應(yīng)用左連接并手動檢查每個(gè)部門,但是假設(shè)一個(gè)表包含數(shù)千名員工,那將不是那么容易。
在這種情況下,可以將HAVING子句與GROUP BY子句一起使用,如下所示:
SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name
HAVING total_employees = 0;
如果執(zhí)行上面的語句,您將獲得如下輸出:
navicat使用及SQL查詢語法

提示:HAVING子句類似于WHERE子句,但僅適用于整個(gè)組,而WHERE子句適用于單獨(dú)的行
SELECT查詢可以包含WHERE和HAVING子句,但是在這種情況下,WHERE子句必須出現(xiàn)在GROUP BY子句之前,而HAVING子句必須出現(xiàn)在GROUP BY子句之后但在ORDER BY子句之前。文章來源地址http://www.zghlxwxcb.cn/news/detail-410062.html

到了這里,關(guān)于navicat使用及SQL查詢語法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • LLMs之Vanna:Vanna(利用自然語言查詢數(shù)據(jù)庫的SQL工具+底層基于RAG)的簡介、安裝、使用方法之詳細(xì)攻略

    LLMs之Vanna:Vanna(利用自然語言查詢數(shù)據(jù)庫的SQL工具+底層基于RAG)的簡介、安裝、使用方法之詳細(xì)攻略

    LLMs之Vanna:Vanna(利用自然語言查詢數(shù)據(jù)庫的SQL工具+底層基于RAG)的簡介、安裝、使用方法之詳細(xì)攻略 目錄 Vanna的簡介 1、用戶界面 2、RAG vs. Fine-Tuning 3、為什么選擇Vanna? 4、擴(kuò)展Vanna Vanna的安裝和使用方法 1、安裝 2、訓(xùn)練 (1)、使用DDL語句訓(xùn)練 (2)、使用文檔訓(xùn)練 (3)、使用SQL訓(xùn)

    2024年01月20日
    瀏覽(46)
  • DB SQL 轉(zhuǎn) ES DSL(支持多種數(shù)據(jù)庫常用查詢、統(tǒng)計(jì)、平均值、最大值、最小值、求和語法)...

    DB SQL 轉(zhuǎn) ES DSL(支持多種數(shù)據(jù)庫常用查詢、統(tǒng)計(jì)、平均值、最大值、最小值、求和語法)...

    1. 簡介 ??日常開發(fā)中需要查詢 Elasticsearch 中的數(shù)據(jù)時(shí),一般會采用 RestHighLevelClient 高級客戶端封裝的API。項(xiàng)目中一般采用一種或多種關(guān)系型數(shù)據(jù)庫(如: Mysql 、 PostgreSQL 、 Oracle 等) + NoSQL(如: Elasticsearch )存儲方案;不同關(guān)系數(shù)據(jù)庫可以采用 Mybatis-Plus 方案屏蔽數(shù)據(jù)庫的方言

    2024年01月17日
    瀏覽(22)
  • 使用內(nèi)網(wǎng)穿透本地MariaDB數(shù)據(jù)庫,并實(shí)現(xiàn)在公網(wǎng)環(huán)境下使用navicat圖形化工具

    使用內(nèi)網(wǎng)穿透本地MariaDB數(shù)據(jù)庫,并實(shí)現(xiàn)在公網(wǎng)環(huán)境下使用navicat圖形化工具

    最近,我發(fā)現(xiàn)了一個(gè)超級強(qiáng)大的人工智能學(xué)習(xí)網(wǎng)站。它以通俗易懂的方式呈現(xiàn)復(fù)雜的概念,而且內(nèi)容風(fēng)趣幽默。我覺得它對大家可能會有所幫助,所以我在此分享。點(diǎn)擊這里跳轉(zhuǎn)到網(wǎng)站。 本篇教程將使用cpolar內(nèi)網(wǎng)穿透本地MariaDB數(shù)據(jù)庫,并實(shí)現(xiàn)在外公網(wǎng)環(huán)境下使用navicat圖形化

    2024年02月08日
    瀏覽(31)
  • 通過內(nèi)網(wǎng)穿透本地MariaDB數(shù)據(jù)庫,實(shí)現(xiàn)在公網(wǎng)環(huán)境下使用navicat圖形化工具

    通過內(nèi)網(wǎng)穿透本地MariaDB數(shù)據(jù)庫,實(shí)現(xiàn)在公網(wǎng)環(huán)境下使用navicat圖形化工具

    本篇教程將使用cpolar內(nèi)網(wǎng)穿透本地MariaDB數(shù)據(jù)庫,并實(shí)現(xiàn)在外公網(wǎng)環(huán)境下使用navicat圖形化工具遠(yuǎn)程連接本地內(nèi)網(wǎng)的MariaDB數(shù)據(jù)庫。 1. 配置MariaDB數(shù)據(jù)庫 1.1 安裝MariaDB數(shù)據(jù)庫 進(jìn)入MariaDB數(shù)據(jù)庫官網(wǎng)https://mariadb.com/downloads/community/,然后下載相應(yīng)的windows版本 下載好后點(diǎn)擊安裝,出現(xiàn)設(shè)置

    2024年02月05日
    瀏覽(27)
  • 【數(shù)據(jù)庫】日常使用PL/SQL 登錄ORACLE 數(shù)據(jù)庫查詢數(shù)據(jù)

    一、PL/SQL 登錄方式 username: ##訪問數(shù)據(jù)庫的賬號 password: ##訪問數(shù)據(jù)庫的密碼 Databse: ##數(shù)據(jù)庫IP地址/實(shí)例名 數(shù)據(jù)庫集群心跳地址/實(shí)例名 Connect as : ##Normal,如果使用sysdba賬戶登錄選擇SYSDBA 二、PL/SQL使用SQL語句查詢 點(diǎn)擊上方導(dǎo)航欄,New,選擇SQL Window,即可再次輸入要查詢的

    2024年02月19日
    瀏覽(30)
  • Navicat連接SQL Server數(shù)據(jù)庫

    使用navicat連接sqlserver數(shù)據(jù)庫時(shí)必須連接sqlserver驅(qū)動,否則的話會連接報(bào)錯(cuò); 按照應(yīng)用的常理來說都是高版本兼容低版本的驅(qū)動; 我這邊呢,是一個(gè)SQL Server Native Client 11.0的驅(qū)動; 大家需要的話可以到SQL Server官網(wǎng)網(wǎng)址去下載各類驅(qū)動; 網(wǎng)址:https://docs.microsoft.com/en-us/sql/con

    2024年02月08日
    瀏覽(25)
  • Navicat中導(dǎo)入數(shù)據(jù)庫SQL腳本并執(zhí)行

    Navicat中導(dǎo)入數(shù)據(jù)庫SQL腳本并執(zhí)行

    1、打開Navicat數(shù)據(jù)庫管理工具; 2、點(diǎn)擊菜單欄上的“工具”,選擇“命令列界面”; 打開了命令列界面 3、復(fù)制sql腳本到命令列界面內(nèi),按enter(回車)執(zhí)行,會發(fā)現(xiàn)執(zhí)行成功的OK返回消息,如下所示: 4、刷新,否則無法看到新增的數(shù)據(jù)庫、數(shù)據(jù)表、數(shù)據(jù)表中的記錄

    2024年02月11日
    瀏覽(102)
  • 如何通過navicat連接SQL Server數(shù)據(jù)庫

    如何通過navicat連接SQL Server數(shù)據(jù)庫

    ? ? ? ?本文介紹如何通過Navicat 連接SQL Server數(shù)據(jù)庫。如果想了解如何連接Oracle數(shù)據(jù)庫,可以參考下邊這篇文章。 如何通過Navicat連接Oracle數(shù)據(jù)庫 https://sgknight.blog.csdn.net/article/details/132064235 1、新建SQL Server連接配置 ? ? ? ? 打開Navicat軟件,點(diǎn)擊連接,選擇SQL server,進(jìn)入配置頁

    2024年02月04日
    瀏覽(93)
  • clickhouse數(shù)據(jù)庫 使用http 方式交付查詢sql

    今天使用clickhouse 的HTTP 方式進(jìn)行查詢語句 clickhouse? 服務(wù)? 搭建在192.168.0.111 上面 那么我們?nèi)绾慰焖俚娜ゲ樵兡? ?如下 我們可以使用curl 功能 或者直接在瀏覽器上輸入對應(yīng)的查詢命令? 如下: 說明: 前面的IP 是我們clickhouse所在的服務(wù)器IP底子 端口? ? ? 8123 ? ? 默認(rèn)的H

    2024年01月25日
    瀏覽(23)
  • navicat導(dǎo)入sql數(shù)據(jù)庫文件的簡單操作步驟

    navicat導(dǎo)入sql數(shù)據(jù)庫文件的簡單操作步驟

    目錄 前言必讀 一、概念 二、操作步驟 (一)新建連接? (二)新建數(shù)據(jù)庫 (三)數(shù)據(jù)庫導(dǎo)入sql文件 讀者手冊(必讀)_云邊的快樂貓的博客-CSDN博客 在很多項(xiàng)目當(dāng)中都有sql文件導(dǎo)入到MySQL數(shù)據(jù)庫的需要,因?yàn)橛衧ql數(shù)據(jù)庫文件,這個(gè)項(xiàng)目才能正常運(yùn)行起來,那么現(xiàn)在就來學(xué)習(xí)

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包