單表查詢

創(chuàng)建數(shù)據(jù)庫(kù)

CREATE DATABASE chapter04;

選擇數(shù)據(jù)庫(kù)

USE chapter04;

創(chuàng)建表

CREATE TABLE student(
id INT(3) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
grade FLOAT,
gender CHAR(2)
);

插入數(shù)據(jù)

INSERT INTO student(name,grade,gender) VALUES
('songjiang',40,'男'),
('wuyong',100,'男'),
('qinming',90,'男'),
('husanniang',88,'女'),
('sunerniang',66,'女'),
('wusong',86,'男'),
('linchong',92,'男'),
('yanqing',90,NULL);

SELECT 語(yǔ)句

# 在 SELECT 語(yǔ)句中指定所有字段
`SELECT id,name,grade,gender FROM student;`
# 在 SELECT 語(yǔ)句中使用星號(hào)(“*”)通配符代替所有字段
`SELECT * FROM student;`
# 查詢指定字段
`SELECT name,gender FROM student;`

帶關(guān)系運(yùn)算符的查詢

# 查詢student表中id為4的學(xué)生姓名
SELECT id,name FROM student WHERE id=4;
# 使用SELECT語(yǔ)句查詢name為“wusong”的學(xué)生性別
SELECT name,gender FROM student WHERE name='wusong';
# 查詢student表中g(shù)rade大于80的學(xué)生姓名
SELECT name,grade FROM student WHERE grade>80;

帶IN關(guān)鍵字的查詢

# 查詢student表中id值為1、2、3的記錄
SELECT id,grade,name,gender FROM student WHERE id IN (1,2,3);
# 查詢student表中id值不為1、2、3的記錄
SELECT id,grade,name,gender FROM student WHERE id NOT IN (1,2,3);

帶BETWEEN AND關(guān)鍵字的查詢

# 查詢student表中id值在2~5之間的學(xué)生姓名
SELECT id,name FROM student WHERE id BETWEEN 2 AND 5;
# 查詢student表中id值不在2~5之間的學(xué)生姓名
SELECT id,name FROM student WHERE id NOT BETWEEN 2 AND 5;

NULL值查詢

# 查詢student表中g(shù)ender為空值的記錄
SELECT id,name grade,gender FROM student WHERE gender IS NULL;
# 查詢student表中g(shù)ender不為空值的記錄
SELECT id,name,grade,gender FROM student WHERE gender IS NOT NULL;

帶DISTINCT關(guān)鍵字的查詢

SELECT DISTINCT gender FROM student;

添加一條新數(shù)據(jù)

INSERT INTO student(name,grade,gender) VALUES ('songjiang',20,'男');

DISTINCT關(guān)鍵字作用于多個(gè)字段

SELECT DISTINCT gender,name FROM student;

帶LIKE關(guān)鍵字的查詢

百分號(hào)(%)通配符

# 查找student表中name字段值以字符“s”開(kāi)頭的學(xué)生id
SELECT id,name FROM student WHERE name LIKE "s%";
# 查詢student表中name字段值以字符“w”開(kāi)始,以字符“g”結(jié)束的學(xué)生id
SELECT id,name FROM student WHERE name LIKE 'w%g';
# 查詢student表中name字段值包含字符“y”的學(xué)生id
SELECT id,name FROM student WHERE name LIKE '%y%';
# 查詢student表中name字段值不包含字符“y”的學(xué)生id
SELECT id,name FROM student WHERE name NOT LIKE '%y%';

下劃線(_)通配符

# 查詢student表中name字段值以字符串“wu”開(kāi)始,以字符串“ong”結(jié)束,并且兩個(gè)字符串之間只有一個(gè)字符的記錄
SELECT * FROM student WHERE name LIKE  'wu_ong';
# 查詢student表中name字段值包含7個(gè)字符,并且以字符串“ing”結(jié)束的記錄
SELECT * FROM student WHERE name LIKE '____ing';

添加一條新數(shù)據(jù)

INSERT INTO student(name,grade,gender) VALUES ('sun%er',95,'男');

使用百分號(hào)和下劃線通配符進(jìn)行查詢操作

# 查詢student表中name字段值包括“%”的記錄
SELECT * FROM student WHERE name LIKE '%\%%';

帶AND關(guān)鍵字的多條件查詢

# 查詢student表中id字段值小于5,并且gender字段值為“女”的學(xué)生姓名
SELECT id,name FROM student WHERE id<5 AND gender='女';
# 查詢student表中id字段值在1、2、3、4之中,name字段值以字符串“ng”結(jié)束,并且grade字段值小于80的記錄
SELECT id,name,grade,gender FROM student WHERE id in (1,2,3,4) AND name LIKE '%ng' AND grade<80;

帶OR關(guān)鍵字的多條件查詢

# 查詢student表中id字段值小于3或者gender字段值為“女”的學(xué)生姓名
SELECT id,name,gender FROM student WHERE id<3 OR gender='女';
# 查詢student表中滿足條件name字段值以字符“h”開(kāi)始,或者gender字段值為“女”,或者grade字段值為100的記錄
SELECT id,name,grade,gender FROM student WHERE name LIKE 'h%' OR gender='女' OR grade=100;

OR和AND關(guān)鍵字一起使用的情況

需要注意的是,AND的優(yōu)先級(jí)高于OR,因此當(dāng)兩者在一起使用時(shí),應(yīng)該先運(yùn)算AND兩邊的條件表達(dá)式,再運(yùn)算OR兩邊的條件表達(dá)式

# 查詢student表中g(shù)ender字段值為“女”或者gender字段值為“男”,并且grade字段值為100的學(xué)生姓名
SELECT name,grade,gender FROM student WHERE (gender='女' OR gender='男') AND grade=100;

聚合函數(shù)

  1. COUNT()函數(shù)
# 查詢student表中一共有多少條記錄
SELECT COUNT(*) FROM student;
  1. SUM()函數(shù)
# 求出student表中g(shù)rade字段的總和
SELECT SUM(grade) FROM student;
  1. AVG()函數(shù)
# 求出student表中g(shù)rade字段的平均值
SELECT AVG(grade) FROM student;
  1. MAX()函數(shù)
# 求出student表中所有學(xué)生grade字段的最大值
SELECT MAX(grade) FROM student;
  1. MIN()函數(shù)
求出student表中g(shù)rade字段的最小值
SELECT MIN(grade) FROM student;

對(duì)查詢結(jié)果排序

# 查詢出student表中的所有記錄,并按照grade字段進(jìn)行排序
SELECT * FROM student ORDER BY grade;
# 查詢出student表中的所有記錄,使用參數(shù)ASC按照grade字段升序方式排序
SELECT * FROM student ORDER BY grade ASC;
# 查詢出student表中的所有記錄,使用參數(shù)DESC按照grade字段降序方式排序
SELECT * FROM student ORDER BY grade DESC;
# 查詢student表中的所有記錄,按照gender字段的升序和grade字段的降序進(jìn)行排序
SELECT * FROM student ORDER BY gender ASC,grade DESC;

分組查詢

  1. 單獨(dú)使用GROUP BY分組
# 查詢student表中的記錄,按照gender字段值進(jìn)行分組
SELECT * FROM student GROUP BY gender;
  1. GROUP BY和聚合函數(shù)一起使用
# 將student表按照gender字段值進(jìn)行分組查詢,計(jì)算出每個(gè)分組中各有多少名學(xué)生
SELECT COUNT(*),gender FROM student GROUP BY gender;
  1. GROUP BY和HAVING關(guān)鍵字一起使用
# 將student表按照genderr字段進(jìn)行分組查詢,查詢出grade字段值之和小于300的分組
SELECT sum(grade),gender FROM student GROUP BY gender HAVING SUM(grade)<300;

使用LIMIT限制查詢結(jié)果的數(shù)量

# 查詢student表中的前4條記錄
SELECT * FROM student LIMIT 4;
# 查詢student表中g(shù)rade字段值從第5位到第8位的學(xué)生(從高到底)
SELECT * FROM student ORDER BY grade DESC LIMIT 4,4;

函數(shù)

# 查詢student表中的所有記錄,將各個(gè)字段使用下劃線“_”鏈接起來(lái)
SELECT CONCAT(id,'_',name,'_',grade,'_',gender) FROM student;
# 查詢student表中的id和gender字段值,如果gender字段的值位“男”則返回1,如果不為“男”則返回0
SELECT id,IF(gender='男',0,1) FROM student;

為表和字段取別名

  1. 為表取別名
# 為student表起一個(gè)別名s,并查詢student表中g(shù)ender字段值為“女”的記錄
SELECT * FROM student AS s WHERE s.gender="女";
  1. 為字段取別名
# 查詢student表中的所有記錄的name和gender字段值,并未這兩個(gè)字段起別名stu_name和stu_gender
SELECT name AS stu_name,gender stu_gender FROM student;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容