首先創建一張表如下,創建表的方法在上篇介紹過了,這里就不再贅述。
添加新數據:
INSERT INTO <表名> (<列名列表>) VALUES (<值列表>)
如:
INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'大毛',18,'男');
其中列名可以省略,省略之后要求插入的值必須與列一一對應:
INSERT INTO t_student VALUES (2,'王二',20,'男');
多行數據添加:
INSERT INTO t_student VALUES (3,'張三',22,'男'), (4,'李四',17,'女'), (5,'王五',23,'男');
更改數據:
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 表名
二者區別在於:
查詢操作
分類:
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 FROM 表 WHERE 條件1 (AND或者OR) 條件2
其中AND表示並且,OR表示或者。
選擇范圍——BETWEEN
如:
SELECT * FROM t_student WHERE student_age BETWEEN 20 AND 23;
BETWEEN后的值為從下限到上限。
定義集合——IN或NOT IN
現在想查看年齡為17、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排序