《MySQL必知必會》總結2

2021-09-06 21:20:39 字數 4213 閱讀 9150

1.從內往外,查到的值作為條件輸入

2.相關子查詢,涉及到列名有多義性,需要用完全限定列名,如orders.cust_id

3.建立計算字段,並命名為orders

select cust_name,

(select count(*)

from orders

where orders.cust_id = customers.cust_id) as orders

1.關係型資料庫,可伸縮性好

2.建立聯結,一定要有where語句

3.笛卡兒積:沒有聯結條件的返回值,等於第乙個錶行數乘以第二個錶行數

4.叉聯結:有聯結條件的返回值

5.聯結可以和子查詢等價,比子查詢速度快

select cust_name,cust_contact

from customers,oders

where customers.cust_id = orders.cust_id

6.聯結的分類

乙個列在多個表中出現,返回所有資料,列會重複出現只返回有關聯行的行

select customers.cust_id,order.order_num

from customers inner join orders

on customer.cust_id = order.cust_id;

在同一張表中查詢,表的多次命名

select p1.prod_id,p1.prod_name

from products as p1,products as p2

where p1.ven_id = p2.vend_id

and p2.prod_id = 'aaaa';

每一列只出現一次,排除重複列。只對第乙個表所有列都列出,其他表明確列出列名

select c.*,o.order_num,o.order_date

from customers as c, orders as o

where c.cust_id = o.cust_id

左外聯結/右外聯結,包括沒有關聯的行也列出,左/右可以通過顛倒from和where進行轉換

select customers.cust_id,orders.order_num

from customers left outer join orders

on customers.cust_id = order.cust_id;

1 union 復合查詢

1)union在兩條select語句之間,包含相同的列/表示式/聚集函式,自動去除重複的行,相當於where。

2)如果要返回所有行,用union all,能完成where完成不了的工作。

3)只能在最後有一條order by,對所有select排序

2 insert 插入資料

1)不產生輸出,指定表名(若指明列名更準確)和被插入的值,沒有值用null代替

2)將過濾後的資料重新插入**中insert select

insert into 表名(列名1,列名2)

values(列值1,列值2);

3 update 更新資料

1)以表名開始,set將新值賦值給更新的列,以where結尾,否則更新所有的行

2)用null去掉列中的值

update 表名

set 列名=更新列值

where 查詢條件;

4 delete 刪除資料

delete from 表名

where 刪除的行

1 create table 建立表

1)自動增量auto_increment,乙個表只有乙個,必須被索引

2)default 1 表示預設值為1

3)primary key定義主鍵

4)引擎engine,主要是一下幾種:

a. innodb: 可靠的事務處理引擎,不支援全文本搜尋

b.memory:資料儲存在記憶體中,速度快,適合臨時表

c. myisam:支援全文本搜尋,不支援事務處理

create table 表名

(列名 int not null auto_increment,

列名 datetime null,

列名 int not full default 1,

primary key(列名),

)engine=innodb;

1.mysql5之後加入

2.包含的是動態查詢語句,虛擬表,不包括任何列

3.建立檢視create view,之後直接from 檢視

create view 檢視名 as

select 語句;

1.執行儲存過程call可以有返回值,所有變數必須以@開始

call 儲存名稱(@變數名,@變數名);
2.建立儲存過程沒有引數也要加(),

out引數從儲存過程傳出的值,

in 傳給儲存過程,

into儲存變數的關鍵字

create procedure 儲存名稱(

out pl decimal(8,2),

in pa int

)begin

select min(price)

into pl

from products;

select max(price)

into pa

from products;

end;

3.刪除儲存過程

drop procedure 儲存名稱;
4.檢查儲存過程

show create procedure 儲存名稱;
1.定義:儲存在mysql伺服器上的資料庫查詢,被select檢索出來的結果集

2.使用原因:在檢索出來的行中前進或後退一行或多行

3.建立游標declare,開啟游標open,關閉游標close,從第一行開始檢索變數fetch

4.迴圈檢索游標

5.查詢游標

select *

from 游標名;

1.串資料型別

2.數值資料型別

unsigned表示非負,正向可以擴大兩倍

貨幣型別用decimal(8,2)

3.時間資料型別

4.二進位制資料型別

可以儲存各種型別的資料

mysql必知必會 mysql必知必會(四)

十四 理解子查詢 1 通過子查詢過濾 這本書在所有的章節都關連到了資料庫表,訂單資料是儲存在兩個表中,orders表儲存著 訂單號碼 顧客id和訂單日期。個人的訂單列表關連著orderitems表,訂單表沒有儲存顧客資訊,它只是儲存著顧客id,這實際的顧客資訊是儲存在customers表中。現在假設...

mysql的必知必會 mysql 必知必會 筆記

好久沒有寫了。1 show columns from table 等同於describe table顯示的是表的結構。而select from table 則顯示的是整個表中插入的資料。2 select distinct c1,c2 from table除非列不相同,否則所有行將被檢索出來,即不能對...

閱讀《Mysql必知必會》總結

從4月5號到4月15號歷時11天,我看完了這本 mysql必知必會 這是一本講述mysql基 本概念與用法的書,雖然十分基礎,但是對於從沒有系統性學過資料庫的我來說仍有很 大的幫助。下面我來說說書中的主要內容以及自己的看法。首先講到的是查詢語句,包括檢索 select 排序 order 過濾 whe...