程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql用法精華集錦

mysql用法精華集錦

編輯:MySQL綜合教程

mysql用法精華集錦


1. 環境:windows,MySQL Server 5.5,Navicat forMySQL

2. Mysql常用sql語句

SQL分類:

DDL—數據定義語言(CREATE,ALTER,DROP,DECLARE)

DML—數據操縱語言(SELECT,DELETE,UPDATE,INSERT)

DCL—數據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先介紹基礎語句:

2.1創建數據庫

CREATE DATABASE database-name

2.2刪除數據庫

drop database dbname

2.3備份sql server

---創建備份數據的device

USE master EXEC sp_addumpdevice ‘disk’,’testBack’,’c:mssql7backupMyNwind_1.dat’

---開始備份

BACKUP DATABASE pubs TO testBack

2.4創建新表

create table tabname(col1 type1[notnull][primary key],col2 type2[not null])

根據已有的表建立新表

2.4A:create table tab_new liketab_old(使用舊表創建新表)

2.4B:create table tab_new as selectcol1,col2…from tab_old definition only

2.5刪除表

Drop table tabname

2.6為表添加一列

Alter table tabname add column coltype 注:列增加後將不能刪除

2.7添加主鍵/刪除主鍵

Alter table tabname add primarykey(col)

Alter table tabname drop primarykey(col)

2.8添加索引/刪除索引

Create [unique] index idxname ontabname(col…)

drop index idxname

2.9 創建視圖/刪除視圖

create view viewname as select statement

drop view viewname

2.10常用的基本sql語句

查找:select * fromtable1 where 范圍

插入:insert intotable1(field1,field2) values(value1,value2)

刪除:delete fromtable1 where 范圍

更新:update table1set field1=value1 where 范圍

模糊查詢:select *from table1 where field1 like ‘%value1%’

排序:select * fromtable1 order by field1,field2[desc]

總數:selectcount(*) as totalcount from table1

求和:selectsun(field1) as sunvalue from table1

平均:selectavg(field1) as avgvalue from table1

最大:selectmax(field1) as maxvalue from table1

最小:selectmin(field1) as minvalue from table1

2.11幾個常用高級查詢運算符

2.11A:UNION運算符

UNION運算符通過組合其他兩個結果表(例如table1和table2)並消去表中任何重復行而派生出一個結果表。當ALL與UNION一起使用時(即UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自table1就是table2。

2.11B:EXCEPT運算符

EXCEPT運算符通過包括所有在table1中但不再table2中的行並消除所有重復行而派生出的一個結果表。當ALL隨EXCEPT一起使用時(EXCEPT ALL),不消除重復行。

2.11C:INTERSECT運算符

INTERSECT運算符通過至包括table1和table2中都有的行並消除所有重復行而派生出一個結果表。當ALL隨INTERSECT一起使用時(INTERSECT ALL),不消除重復行。

2.12使用外連接

2.12A:left outer join

左外連接:結果集包括連接表的匹配行,也包括做連接表的所有行

SQL:select a.a,a.b,a.c,b.c,b.d,d.f from a LEFT OUT JOIN b ON a.a=b.c

2.12B:right outer join

右外連接:結果集既包括連接表的匹配行,也包括右連接表的所有行

1.12C:full outer join

全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表的所有行

3. mysql子查詢

3.1mysql子查詢語法與用法實例

子查詢是將一個 SELECT 語句的查詢結果作為中間結果,供另一個SQL 語句調用。MySQL支持SQL 標准要求的所有子查詢格式和操作,也擴展了特有的幾種特性。

示例:select* from article where uid in(select uid from user where status=1)

3.2mysql標量子查詢

標量子查詢是指子查詢返回的是單一值的標量,如一個數字或一個字符串,也是子查詢中最簡單的返回形式。

示例:select* from article where uid=(select uid from user where status=1 order by uid desclimit 1)

3.3mysql列子查詢

列子查詢是指子查詢返回的結果集是 N 行一列,該結果通常來自對表的某個字段查詢返回。

示例:select *from article where uid in(select uid from user where status=1)

3.4mysql行子查詢

行子查詢是指子查詢返回的結果集是一行N 列,該子查詢的結果通常是對表的某行數據進行查詢而返回的結果集。

示例:select* from table1 where (1,2)=(select col1,col2 from table)

3.5mysql表子查詢

表子查詢是指子查詢返回的結果集是N 行N 列的一個表數據。

示例:select *from article where (title,content,uid) in (select title, content, uid fromblog)

3.6mysql from子查詢

MySQL FROM 子查詢是指 FROM 的子句作為子查詢語句,主查詢再到子查詢結果中獲取需要的數據

語法:select …from(subquery) as name…

3.7mysql exists和notexists子查詢

語法:select …from table where exists(subquery)

該語法可以理解為:將主查詢的數據,放到子查詢中做條件驗證,根據驗證結果(TRUE或FALSE)來決定主查詢的數據結果是否得以保留。

示例:select *from article where exists(select * from user where article.uid=user.uid)

3.8mysql關聯子查詢

關聯子查詢是指一個包含對表的引用的子查詢,該表也顯示在外部查詢中。通俗一點來講,就是子查詢引用到了主查詢的數據數據

示例:selectarticle.* from article inner join user on article.uid=user.uid

4. mysql循環

4.1while…end while循環

Create procedure p1()

begin

declare v int;

set v=0;

while v<5 do

insertinto t values(v)

setv=v+1;

end while;

end;

4.2repeat…end repeat循環

create procedure p2()

begin

declare v int;

set v=0;

repeat

insert into t values(v);

set v=v+1;

until v>=5;

end repeat;

end;

注:until後面可以沒有分號

4.3loop…end loop循環

create procedure p3()

begin

declare v int;

set v=0;

loop_label:loop

insert into tvalues(v);

set v=v+1;

if v>=5 then

leaveloop_label;

end if;

end loop;

end;

5. mysql視圖查詢

5.1視圖定義

視圖是由查詢結果形成的一張虛擬表。

5.2視圖的使用

如果某個查詢結果出現的非常頻繁,也就是要經常拿這個查詢結果來做子查詢

5.3語法

create view 視圖名 as select 語句

5.4視圖優點

l 簡化查詢語句

示例:有一張商品表,我們要經常查每個欄目下的商品的平均價格

Select cat_id, avg(shop_price) from goods group by cat_id;

創建一個視圖

create view avgPrice as select cat_id, avg(shop_price) fromgoods group by cat_id;

當我們再次查詢每個欄目平均價格時,只需要這麼寫

select * from avgPrice;

l 進行權限控制

把表的權限封閉,但是開放相應的視圖權限,視圖裡只開放部分數據列,例如我們的goods商品表,我們不想讓別人看到我們的銷售價格,這個時候我們可以把商品表權限封閉,創建一張視圖

create view showGoods as select goods_id,goods_name fromgoods;

5.5視圖修改

Alter view 視圖名 as select 語句;

5.6視圖與表的關系

視圖是表的查詢結果,自然表的數據變了,會影響視圖的結果

6. mysql關聯查詢

6.1連接查詢簡介

連接查詢中用來連接兩個表的條件稱為連接條件或連接謂詞。其形式為:

[<表1>].<列名><連接運算符>[<表2>].<列2>

常見連接運算符包括

l 比較運算符:=、>、<、>=、<=、!=、between和and

l 邏輯運算符:not、and、or

6.2連接按照結果集分類

l 內連接:表中的行互相連接,結果集的行數等於每個表滿足條件的行數乘積,參與連接的表示平等的。

l 外連接:參與連接的表有主次之分,主表的每一行數據去匹配從表的數據列,符合連接條件的數據直接返回到結果集中,不符合連接條件的的數據列將以null填充後返回到結果集中,其中外連接又分為左外連接,右外連接和全連接。

6.3內連接查詢

內連接語法結構:

Select <屬性或表達式列表> from <表名> [inner]join <表名> on <連接條件> [where <限定條件>]

Inner可以省略,當只見到join時就是省略掉了inner。內連接就是傳統的連接操作,這裡用on子句指定連接條件,用where指定其他限定條件,

示例:select p.name,c.countryname from country as c inner join person p onp.countryid=c.countryid

6.4左外連接查詢

左外連接語法結構:

Select <屬性或表達式列表> from <表名> leftouter join <表名> on <連接條件> [where <限定條件>]

左外連接在結果表中包含第一個表中滿足條件的所有記錄,如果連接條件匹配,第二張表返回相應的值,否則返回null。也就是說不管第二個表有沒有記錄,第一張表的字段都會返回。

示例:select p.name,c.countryname from country as c right join person p onp.countryid=c.countryid

6.5右外連接查詢

右外連接查詢語法結構:

Select <屬性或表達式列表> from <表名> rightouter join <表名> on <連接條件> [where <限定條件>]

右外連接的結果表中包含第二張表中滿足條件的所有記錄,如果連接條件匹配,第一張表返回相應的值,否則返回null。

示例:select p.name, c.countryname from country as c right join person pon p.countryid=c.countryid

6.6全外連接查詢

全外連接查詢語法結構:

Select <屬性或表達式列表> from <表名> fullouter join <表名> on <連接條件> [where <限定條件>]

全外連接查詢的結果集表中包含兩個表滿足記錄所有記錄。如果在連接上條件上匹配的元組,則另一個表返回相應的值,否則返回null

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved