知了猴飛走了 2016-10-13 15:26:10 本文只考慮mysql、SQL Server、Oracle sql對(duì)大小寫(xiě)不敏感 可以把sql分為兩部分:數(shù)據(jù)操作語(yǔ)言(DML)和數(shù)據(jù)定義語(yǔ)言(DDL) 查詢和更新指令構(gòu)成了SQL的DML部分:select-從數(shù)據(jù)庫(kù)表中獲取數(shù)據(jù),update-更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù),delete-從數(shù)據(jù)庫(kù)中刪除數(shù)據(jù),insert into-像數(shù)據(jù)庫(kù)表中插入數(shù)據(jù) sql的數(shù)據(jù)定義語(yǔ)言(DDL)部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的連接,以及施加表之間的約束。: sql中重要的DDL語(yǔ)句: create database-創(chuàng)建數(shù)據(jù)庫(kù) alter database-修改數(shù)據(jù)庫(kù) create table-創(chuàng)建新表 alter table-改變數(shù)據(jù)庫(kù)表 drop table-刪除表 create index-創(chuàng)建索引(搜索鍵) drop index-刪除索引 如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語(yǔ)句:SELECT DISTINCT Company FROM Orders 以字母順序顯示公司名稱(Company),并以數(shù)字順序顯示順序號(hào)(OrderNumber):SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber(先以Company列為標(biāo)準(zhǔn)進(jìn)行排列,Company列名稱相同的 在以O(shè)rderNumber列為標(biāo)準(zhǔn)排列) 以逆字母順序顯示公司名稱:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC 以逆字母順序顯示公司名稱,并以數(shù)字順序顯示順序號(hào):SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC(先以Company列為標(biāo)準(zhǔn)進(jìn)行逆字母順序排列,Company列名稱相同的 在以O(shè)rderNumber列為標(biāo)準(zhǔn)進(jìn)行升序排列) INSERT INTO 表名稱 VALUES (值1, 值2,....) INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) delete語(yǔ)句用于刪除表中的行:delete from person where lastName = ‘Wilson’,刪除了lastName為Wilson的那一行所有數(shù)據(jù) delete from person,刪除了person表中的所有數(shù)據(jù) 更新某一行的一個(gè)列:update person set firstName = ‘fred’ where lastName = ‘wlison’ 更新某一行的很多列:update person set firstName = ‘sss’,city = 'nanjing' where lastName = ‘a(chǎn)lison’ top子句(只對(duì)SQL Server中管用) top子句用于規(guī)定返回的記錄的數(shù)目,對(duì)于擁有數(shù)千條數(shù)據(jù)的大型表來(lái)說(shuō),top非常有用 只對(duì)SQL Server中管用:select top 3 * from goods; select top 50 percent * from goods;(選取表中前百分之五十的數(shù)據(jù)) MySQL:slelect * from goods limit 3; Oracle:select * from goods ROWNUM <= 3; like子句(“%”可用于定義通配符、模式中缺少的字符) select * from goods where goods_name like '%ewq%' select * from goods where goods_name like 'q%' select * from goods where goods_name like '%e' select * from goods where goods_name like 'ewq%qwe' 通配符(在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),sql通配符可以替代一個(gè)或多個(gè)字符。sql通配符必須與like運(yùn)算符一起使用。) a.%通配符,同上 b._通配符 “_”只能代表一個(gè)字符,只是替代了一個(gè)字符而已,其他位置字符必須一樣 select * from goods where goods_name like '_qwqw' select * from goods where goods_name like 'q_wqw' c.[charlist]通配符(貌似對(duì)mysql不好使) select * from goods where goods_name like '[ALN]%';(查找商品名稱以A、L、N開(kāi)頭的的商品) select * from goods where goods_name like '[!ALN]%';(查找商品名稱不以A、L、N開(kāi)頭的的商品) in子句(類(lèi)似等于) SELECT * FROM goods WHERE category_id IN (9999904,849) AND goods_name IN ('124','西紅柿','青島啤酒'); 類(lèi)似于 SELECT * FROM goods WHERE id = 1560 OR id = 1564; between子句(操作符BETWEEN...AND會(huì)選取介于兩個(gè)值之間的數(shù)據(jù)范圍,這些值可以是數(shù)值、文本、日期,mysql中的between左右都包括) SELECT * FROM goods WHERE goods_name BETWEEN '西紅柿' AND '青島啤酒'; SELECT * FROM goods WHERE category_id BETWEEN 99999909 AND 99999911; having子句 在SQL中增加HAVING子句的原因是,where關(guān)鍵字無(wú)法與合計(jì)函數(shù)一起使用。 select customer,sum(orderPrice) from orders group by customer having sum(orderPrice)< 2000 select customer,sum(orderPrice) from orders where customer='bush' or customer='admin' group by customer having sum(orderprice)>1500 視圖view: 視圖就像是一個(gè)可視化的表 什么是視圖:在sql中,視圖是基于sql語(yǔ)句的結(jié)果集的可視化的表。 視圖可以包含行和列,就像一個(gè)真實(shí)的表。視圖中的字段就是來(lái)自一個(gè)或多個(gè)數(shù)據(jù)庫(kù)的真實(shí)的表中的字段。我們可以向視圖添加sql函數(shù)、where、join語(yǔ)句,我們也可以提交數(shù)據(jù),就像這些來(lái)自于某個(gè)單一的表。 create view view_name as select column_name(s) from table_name where condition 視圖總是顯示最近的數(shù)據(jù)。每當(dāng)用戶查詢視圖時(shí),數(shù)據(jù)庫(kù)引擎通過(guò)使用sql語(yǔ)句來(lái)重建數(shù)據(jù)。 創(chuàng)建視圖 CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName FROM Products WHERE Discontinued=No 查看視圖 SELECT * FROM [Current Product List] |
|