1、基本操作,增刪查改
INSERT INTO?表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...); DELETE FROM 表名 WHERE 條件 SELECT * FROM?表名 WHERE 條件 UPDATE 表名 SET 字段1 = 值, 字段2 = 值, ... WHERE 條件;
SELECT * INTO?新表 FROM 舊表 WHERE…
????????INSERT INTO 語句用于向一張表中插入新的行。
????????SELECT INTO 語句從一張表中選取數據插入到另一張表中。常用于創建表的備份復件或者用于對記錄進行存檔。
2、刪除表
1.?drop是完全刪除表,包括表結構
2.?delete是刪除表數據,保留表的結構,而且可以加where,只刪除一行或者多行
3.?truncate?只能刪除表數據,會保留表結構,而且不能加where
DROP TABLE 表名
3、創建視圖
CREATE VIEW view_name[column] AS select_statement [WITH CHECK OPTION]
4、授權查詢
授權查詢的語句是grant...to
eg:grant select on CUSTOMERS(cid,cname) to SQLTest?
5、窗口函數
SELECT … RANK () OVER (……) AS …?FROM …
row_number,rank,dense_rank 3 個排名函數的用法:
????????row_number:不管排名是否有相同的,都按照順序1,2,3 ….. n;?
????????rank:排名相同的名次一樣,同一排名有幾個,后面排名就會跳過幾次;
????????dense_rank:排名相同的名次一樣,且后面名次不跳躍。eg:
?
select? row_number()?over(order?by?num)?row_number,??????//12345 rank()?over(order?by?num)?rank,? ? ? ? ? ? ? ? ??//12245 dense_rank()?over(order?by?num)?dense_rank? ? ? ?//12234 from?movies;
6、區間類
1、BETWEEN…AND函數,閉區間?
2、in?表示在此集合內
7、進制轉換
eg:SELECT?CONV('5F',16,3);????????//10112,這里表示將5F從16進制轉為3進制?
8、聚合函數
聚合函數AVG、MIN、MAX、SUM、NOT IN 函數?
SELECT AVG(字段) AS …?FROM 表名?WHERE 字段?NOT IN ……
MAX(字段)、MIN(字段)、SUM(字段)
9、表的連接
table1 RIGHT JOIN?table2? ?// 右連接,以table2為主表 table1 LEFT?JOIN table2? ? ?// 左連接,以table1為主表 table1 INNER JOIN?table2? ?//內連接,以兩表對應
SELECT?DISTINCT 字段名 FROM table1 P1,table1 P2 WHERE P1.字段1= P2.字段1
AND?p1.字段2 <> p2.字段2? ? ? ? // <>自連接、DISTINCT 去重
10、表的操作
CREATE 新建表
CREATE TABLE 表名 (字段1 字段類型 約束,字段2 字段類型 約束,... );
ALTER 修改表?
ALTER TABLE 表名 MODIFY 字段 字段長度;? ? ? ? ? //?修改了列的數據類型 ALTER TABLE 表名 ADD?字段 字段長度;? ? ? ? ? //?添加了新的一列 ALTER TABLE 表名 CHANGE?字段1 字段2?字段長度;? ? //?修改了列名
X、難題
?1、奇偶數互換,若總數為奇數,最后一個不變
????????現需改變相鄰員工的編號eno,如果當員工總人數為奇數時,不需要改變最后一個員工ename的編號。比如員工編號是1、2、3、4、5的話,則需要變成2、1、4、3、5.
//方法1 SELECT ROW_NUMBER() OVER(ORDER BY(eno+1-2*POWER(0,eno%2))) AS eno,ename FROM employee//方法2 SELECT ROW_NUMBER() OVER(ORDER BY(eno-1+2*MOD(eno,2))) AS eno,ename FROM employee//方法3 SELECT IF(eno%2=0,eno-1, IF(eno=(SELECT COUNT(DISTINCT eno) FROM employee),eno,eno+1)) AS eno,ename FROM employee ORDER BY eno
X、其他
1、存儲過程包含很多行SQL語句,但在客戶機調用存儲過程時,網絡中只要傳送調用存儲過程的語句,而無需在網絡中發送很多行代碼,減少了網絡流量,特別是大型、復雜的數據處理,存儲過程無需將中間結果集送回客戶機,只要發送最終結果。?→增加網絡流量
2、緩慢變化維度(Slowly Changing Dimension, SCD)是數據倉庫建模中的重要概念,針對維度數據隨時間發生變化時的處理方法。→覆蓋原值、增加新行、增加新列
3、在MySQL中不能使用?= NULL 或 != NULL 等比較運算符在列中查找 NULL 值?,要用IS NULL 或 IS NOT NULL才會進行NULL值或非NULL值得查找。