MySQL 基礎 (三) 表聯結 day04

2021-09-11 18:16:29 字數 3523 閱讀 9763

將查詢或者篩選出來列用關鍵字as

命名

select 欄位名 [as] 別名 [,欄位名 [as] 別名,……] from 表名;
給表起乙個別名,為了在查詢資料時,使用起來方便,也使用關鍵字as

select * from 表名 [as] 別名;
如果表中有至少乙個匹配,則返回行,獲取兩個表中字段匹配關係

的記錄。

語法:

select column_name

from table_name1

inner join table_name2

on table_name1.column_name=table_name2.column_name

等價於:

select column_name

from table_name1

where table_name1.column_name=table_name2.column_name

即使右表中沒有匹配,也從左表返回所有的行;會返回左表(table1)中所有的行

注:除此之外還有right join和full join(其中right join 和left join用法相似,即右表中的所有行,而full join 返回兩個表中的所有行)

有時,一些特殊的查詢需要對同乙個關係進行連線查詢,成為表的自身連線: 即一張表看成是兩張表。

select c1.cust_id, c1.cust_name, c1.cust_contact

from customers as c1, customers as c2

where c1.cust_name = c2.cust_name

and c2.cust_contact = 『jim jones』;

mysql union 操作符用於連線兩個以上的 select 語句的結果組合到乙個結果集合中。多個 select 語句會刪除重複的資料。 

語法:

select expression1, expression2, ... expression_n

from tables

[where conditions]

union [all | distinct]

select expression1, expression2, ... expression_n

from tables

[where conditions];

expression1, expression2, … expression_n: 要檢索的列。

tables: 要檢索的資料表。

where conditions: 可選, 檢索條件。

distinct: 可選,刪除結果集中重複的資料。預設情況下 union 操作符已經刪除了重複資料,所以 distinct 修飾符對結果沒啥影響。

all: 可選,返回所有結果集,包含重複資料。

注:union語句用於將不同表中相同列中查詢的資料展示出來(不包括重複資料),union all語句包括重複資料。

inner join產生的結果是兩張表的交集,

left join產生左表的完全集,右表中若沒有匹配則以null值取代。

cross join將兩張表資料進行乙個n*m組合,即笛卡爾積。

自連線是對於自身的操作,將自己當成兩張表操作來提取需要的資訊。

union操作符是用於連線兩個以上的select語句,它和inner join的區別是乙個是連線兩張表,另乙個是連線兩個select語句。

step1:在資料庫中建立表1和表2

step2:插入資料

step3:編寫乙個 sql 查詢,滿足條件:無論 person 是否有位址資訊,都需要基於上述兩表提供 person 的以下資訊:firstname, lastname, city, state

編寫乙個 sql 查詢,來刪除 email 表中所有重複的電子郵箱,重複的郵箱裡只保留 id 最小 的那個。

-- 建立表並插入資料

create table email(

id int not null,

email varchar(255) not null,

primary key (id)

);-- 插入資料

編寫查詢語句:

MySQL 基礎 (三) 表聯結

3.聯結方式的區別和聯絡 4.例項 別名 alias 是乙個欄位或值的替換名,別名用as關鍵字賦予,mysql支援列別名,計算字段別名,表別名。使用別名可以縮短sql語句並在一條語句中多次使用相同的表。select column name as alias from table name selec...

MySQL基礎(三) 表聯結

inner join 內連線,或等值連線 取得兩個表中存在連線匹配關係的記錄。取得左表 table1 完全記錄,即是右表 table2 並無對應匹配記錄。交叉連線,得到的結果是兩個表的乘積,即笛卡爾積 在資料庫中建立表1和表2,並各插入三行資料 表1 person 列名型別 personid int...

MySQL 基礎 (三) 表聯結

一 mysql別名 使用mysql別名來提高查詢的可讀性。mysql支援兩種別名,稱為列別名和表別名。1.表別名 有時,列的名稱是一些表示式,使查詢的輸出很難理解。要給列乙個描述性名稱,可以使用列別名。用法 如果別名包含空格,則必須引用 select column 1 expression as d...