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 insert 插入資料2)如果要返回所有行,用union all,能完成where完成不了的工作。
3)只能在最後有一條order by,對所有select排序
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...