SQL語句彙總(二)——數據修改、數據查詢

SQL語句第二篇,不說廢話直接開始吧。spa

 

首先建立一張表以下,建立表的方法在上篇介紹過了,這裏就再也不贅述。3d

 

添加新數據:日誌

INSERT INTO <表名> (<列名列表>) VALUES (<值列表>

如:code

INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'大毛',18,'');

其中列名能夠省略,省略以後要求插入的值必須與列一一對應:blog

INSERT INTO t_student VALUES (2,'王二',20,'');

多行數據添加:排序

INSERT INTO t_student VALUES (3,'張三',22,''),
                 (4,'李四',17,''),
                 (5,'王五',23,'');

 

更改數據:class

UPDATE 表名 SET 列1=新值1,列2=新值2 WHERE 過濾條件

假如要修改李四的年齡爲21歲效率

UPDATE t_student SET student_age=21 WHERE student_name='李四';

注:修改多個列的值時用逗號隔開。要想設置某一列的值爲空,只需讓<列名>=NULL 便可。WHERE表示過濾條件。分頁

 

刪除數據(行): 引用

DELETE FROM 表名 WHERE 過濾條件

現要刪除20到22歲的學生信息:

DELETE FROM t_student WHERE student_age BETWEEN 20 AND 22;

WHERE的判斷條件以後會更詳細的介紹。

刪除除了DELETE還有一種方法TRUNCATE,寫法:

TRUNCATE TABLE 表名

兩者區別在於:

DELETE會記錄日誌,意味着刪除後的數據還能夠恢復,可是效率低。TRUNCATE不會記錄日誌,刪除後的數據不能恢復,可是效率高。須要注意的是,TRUNCATE不能用於有外鍵約束引用的表。

 

查詢操做

分類:

–投影操做
  指定查詢結果中能顯示哪些列
–選擇操做
  指定哪些行出如今結果中
–排序操做
  指定查詢的結果以什麼樣的順序顯示
 
投影操做:
SELECT 列1,列2 FROM 表名

多個列中間用逗號隔開,若是選擇全部列能夠用*號簡寫。

仍是此表:

如今只想要查看姓名和年齡列:

SELECT student_name,student_age FROM t_student;

注意這裏不是把其餘列刪除了,而是隻顯示咱們想看見的部分。

SELECT CONCAT(student_name,'——',student_age) '組合值' FROM t_student;

CONCAT,能夠將列與列之間用想要的符號鏈接起來:

 

排除重複——DISTINCT

現給原表加入一班級列:

按照以前方法查詢班級列獲得:

可是咱們只想查看具體有哪些班級,這裏就須要用到去重,也就是DISTINCT

SELECT DISTINCT student_class FROM t_student;

 

返回限定行數的查詢——LIMIT

LIMIT後面參數爲1或2個:

LIMIT N 表示從第一行開始返回N行結果,LIMIT i,N 表示從第i+1行開始返回N行結果。

例:

SELECT * FROM t_student LIMIT 3;

SELECT * FROM t_student LIMIT 2,3;

*注:LIMIT很重要,它是以後作數據表格分頁的關鍵。

 

選擇操做——WHERE:

分爲單條件選擇與多條件選擇

單條件選擇標準結構:

SELECT 列1, 列2 FROM 表名 WHERE 列3 = 值 

關係運算符包括:>  >=  <  <=  =  !=

多條件選擇標準結構:

SELECT 列A, 列B FROMWHERE 條件1 (AND或者OR) 條件2

其中AND表示而且,OR表示或者。

 

選擇範圍——BETWEEN

如:

SELECT * FROM t_student WHERE student_age BETWEEN 20 AND 23;

BETWEEN後的值爲從下限到上限。

 

定義集合——IN或NOT IN

如今想查看年齡爲1七、20、23的學生信息: 

SELECT * FROM t_student WHERE student_age IN (17,20,23);

反之NOT IN就是選擇不包括在集合裏的學生信息。

 

模糊查詢——LIKE

爲了更好的解釋模糊查詢,這裏從新建張表:

這裏姓王的兄弟們躺槍...別介意。

首先先說下佔位符與通配符:

佔位符 "_",表示任何單個字符。

通配符 "%",表示包含零或多個字符。

下面就來用模糊查詢逐一選中咱們想要的行。

名字只有兩個字的:

SELECT * FROM t_student WHERE student_name LIKE '__';

這裏可能看不清,引號裏實際是兩個佔位符。

全部姓王的:

SELECT * FROM t_student WHERE student_name LIKE '王%';

最後一個字是「王」的:

SELECT * FROM t_student WHERE student_name LIKE '%王';

只要是名字中有「王」字的:

SELECT * FROM t_student WHERE student_name LIKE '%王%';

這下模糊查詢就很明白了吧,固然還有其餘組合,你們能夠本身嘗試。

 

處理空值數據:

判斷條件不能用列名=NULL,而是要用IS NULL或IS NOT NULL。

標準寫法:

SELECT * FROM t_student WHERE 性別 IS NULL

 

排序操做——ORDER BY:

使用ORDER BY時,列名上指定ASC或DESC。ASC表示正序,DESC表示倒序。若是不指定則默認爲正序。

按年齡排:

SELECT * FROM t_student ORDER BY student_age ASC;

SELECT * FROM t_student ORDER BY student_age DESC;

 

最後必定要注意!

基本查詢SQL的執行順序:

1.執行FROM 2.WHERE條件過濾 3.SELECT投影 4.ORDER BY排序

 

SQL的第二篇就到這裏了,博主寫的快吐了!感受學的時候沒這麼多啊,但願各位認同的朋友頂一下,也好讓我有動力寫完。

相關文章
相關標籤/搜索