知了猴飛走了 2016-10-13 15:26:10 本文只考慮mysql、SQL Server、Oracle sql對大小寫不敏感 可以把sql分為兩部分:數(shù)據(jù)操作語言(DML)和數(shù)據(jù)定義語言(DDL) 查詢和更新指令構(gòu)成了SQL的DML部分:select-從數(shù)據(jù)庫表中獲取數(shù)據(jù),update-更新數(shù)據(jù)庫表中的數(shù)據(jù),delete-從數(shù)據(jù)庫中刪除數(shù)據(jù),insert into-像數(shù)據(jù)庫表中插入數(shù)據(jù) sql的數(shù)據(jù)定義語言(DDL)部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的連接,以及施加表之間的約束。: sql中重要的DDL語句: create database-創(chuàng)建數(shù)據(jù)庫 alter database-修改數(shù)據(jù)庫 create table-創(chuàng)建新表 alter table-改變數(shù)據(jù)庫表 drop table-刪除表 create index-創(chuàng)建索引(搜索鍵) drop index-刪除索引 如需從 Company" 列中僅選取唯一不同的值,我們需要使用 SELECT DISTINCT 語句:SELECT DISTINCT Company FROM Orders 以字母順序顯示公司名稱(Company),并以數(shù)字順序顯示順序號(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ù)字順序顯示順序號: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語句用于刪除表中的行:delete from person where lastName = ‘Wilson’,刪除了lastName為Wilson的那一行所有數(shù)據(jù) delete from person,刪除了person表中的所有數(shù)據(jù) 更新某一行的一個列:update person set firstName = ‘fred’ where lastName = ‘wlison’ 更新某一行的很多列:update person set firstName = ‘sss’,city = 'nanjing' where lastName = ‘a(chǎn)lison’ top子句(只對SQL Server中管用) top子句用于規(guī)定返回的記錄的數(shù)目,對于擁有數(shù)千條數(shù)據(jù)的大型表來說,top非常有用 只對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ù)庫中的數(shù)據(jù)時,sql通配符可以替代一個或多個字符。sql通配符必須與like運算符一起使用。) a.%通配符,同上 b._通配符 “_”只能代表一個字符,只是替代了一個字符而已,其他位置字符必須一樣 select * from goods where goods_name like '_qwqw' select * from goods where goods_name like 'q_wqw' c.[charlist]通配符(貌似對mysql不好使) select * from goods where goods_name like '[ALN]%';(查找商品名稱以A、L、N開頭的的商品) select * from goods where goods_name like '[!ALN]%';(查找商品名稱不以A、L、N開頭的的商品) in子句(類似等于) SELECT * FROM goods WHERE category_id IN (9999904,849) AND goods_name IN ('124','西紅柿','青島啤酒'); 類似于 SELECT * FROM goods WHERE id = 1560 OR id = 1564; between子句(操作符BETWEEN...AND會選取介于兩個值之間的數(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)鍵字無法與合計函數(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: 視圖就像是一個可視化的表 什么是視圖:在sql中,視圖是基于sql語句的結(jié)果集的可視化的表。 視圖可以包含行和列,就像一個真實的表。視圖中的字段就是來自一個或多個數(shù)據(jù)庫的真實的表中的字段。我們可以向視圖添加sql函數(shù)、where、join語句,我們也可以提交數(shù)據(jù),就像這些來自于某個單一的表。 create view view_name as select column_name(s) from table_name where condition 視圖總是顯示最近的數(shù)據(jù)。每當(dāng)用戶查詢視圖時,數(shù)據(jù)庫引擎通過使用sql語句來重建數(shù)據(jù)。 創(chuàng)建視圖 CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName FROM Products WHERE Discontinued=No 查看視圖 SELECT * FROM [Current Product List] |
|