MySQL(一)基本查詢

MySQL(一)基本查詢正則表達式

場景:學生信息系統,包括學生信息、教師信息、專業信息和選課信息。安全

建表語句 :數據結構

-- 學生信息表
DROP TABLE IF EXISTS Students; CREATE TABLE Students( Student_ID INT PRIMARY KEY NOT NULL, Student_Name NVARCHAR(50), Student_Age INT, Student_Sex INT, Student_City NVARCHAR(50), Student_MajorID INT ); -- 專業信息表
DROP TABLE IF EXISTS Majors; CREATE TABLE Majors( Major_ID INT PRIMARY KEY NOT NULL, Major_Name NVARCHAR(50) ); -- 課程信息表
DROP TABLE IF EXISTS Courses; CREATE TABLE Courses( Course_ID INT PRIMARY KEY NOT NULL, Course_Name NVARCHAR(50) ); -- 選課信息表
DROP TABLE IF EXISTS SC; CREATE TABLE SC( SC_ID INT PRIMARY KEY NOT NULL, SC_StudentID INT, SC_CourseID INT, SC_Score INT ); 

 

插入數據語句:函數

-- 插入學生信息
INSERT INTO Students (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID) VALUES (40001,'李煜',18,1,'南京',1001); INSERT INTO Students (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID) VALUES (40002,'唐雲',20,1,'杭州',1002); INSERT INTO Students (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID) VALUES (40003,'吳廣',19,1,'南京',1001); INSERT INTO Students (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID) VALUES (40004,'劉雲宇',18,1,'武漢',1003); INSERT INTO Students (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID) VALUES (40005,'王夢琦',17,0,'北京',1004);

-- 插入專業信息
INSERT INTO Majors (Major_ID,Major_Name) VALUE(1001,'軟件工程'); INSERT INTO Majors (Major_ID,Major_Name) VALUE(1002,'土木工程'); INSERT INTO Majors (Major_ID,Major_Name) VALUE(1003,'信息安全'); INSERT INTO Majors (Major_ID,Major_Name) VALUE(1004,'工商管理');

 

-- 插入課程信息
INSERT INTO Courses (Course_ID,Course_Name) VALUE (1001,'高等數學'); INSERT INTO Courses (Course_ID,Course_Name) VALUE (1002,'大學英語'); INSERT INTO Courses (Course_ID,Course_Name) VALUE (1003,'數據結構'); INSERT INTO Courses (Course_ID,Course_Name) VALUE (1004,'結構力學'); INSERT INTO Courses (Course_ID,Course_Name) VALUE (1005,'日語');

-- 插入選課信息
INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100001,40001,1001,2); INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100002,40001,1002,3); INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100003,40002,1001,2); INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100004,40003,1003,3); INSERT INTO SC (SC_ID,SC_StudentID,SC_CourseID,SC_Score) VALUE(100005,40004,1004,2);

1.基礎查詢spa

做用:查詢某數據表中的某些數據列的數據3d

 

語法:code

SELECT 列名1,列名2,列名N FROM 表名

 

實例:blog

1.查詢學生信息表中的ID,年齡,性別。排序

SELECT Student_ID,Student_Name,Student_Sex FROM Students;

 

2.條件查詢數學

做用:

        查詢某數據表中的某些數據列的數據

語法:

SELECT 列名1,列名2,列名N FROM 表名 WHERE 列名 運算符  值

                                                                   主要運算符

運算符 描述
 =  等於
<> 或 !=  不等於 
< 小於 
<=  小於等於 
> 大於
>= 大於等於
BETWEEN......AND...... 在某個範圍內
IS NULL 爲NULL
AND 而且
OR 或者
IN
NOT

LIKE 模糊查詢
REGEXP 正則表達式

                                                                        主要通配符

通配符 描述
 _  匹配單個字符
% 匹配任意個字符
. 匹配任意單個字符 
[] 匹配[]中的任意一個字符
* 匹配零個或多個在它前面的東西
^ 以什麼開始
$ 以什麼結尾

 

實例:

1.查詢學生信息表中年齡爲18的學生信息。

SELECT*FROM Students WHERE Student_Age = 18;

2.查詢學生信息表中年齡不爲18的學生信息。

SELECT*FROM Students WHERE Student_Age <> 18;

 

3.查詢學生信息表中年齡小於18的學生信息。

SELECT*FROM Students WHERE Student_Age < 18;

4.查詢學生信息表中年齡小於等於18的學生信息。

SELECT*FROM Students WHERE Student_Age <= 18;

5.查詢學生信息表中年齡大於18的學生信息。

SELECT*FROM Students WHERE Student_Age > 18;

6.查詢學生信息表中年齡大於等於18的學生信息。

SELECT*FROM Students WHERE Student_Age >=18;

7.查詢學生信息表中年齡17-19的學生信息。

SELECT*FROM Students WHERE Student_Age BETWEEN 17 and 19;
 
 

 8.查詢學生信息表中姓名爲null的學生ID

SELECT Student_ID FROM Students WHERE Student_Name IS NULL;
 
 

9.查詢來自於南京而且年齡爲19的學生信息

SELECT * FROM Students WHERE Student_City = '南京' AND Student_Age = 19;
 
 

10.查詢來自於南京或者武漢的學生信息

SELECT * FROM Students WHERE Student_City ='南京' OR Student_City ='武漢';
 
 

SELECT * FROM Students WHERE Student_City IN('南京','武漢');

11.查詢姓名中不含有云的學生信息

SELECT * FROM Students WHERE Student_Name NOT LIKE'%雲%';

12.查詢姓唐的同窗信息

SELECT * FROM Students WHERE Student_Name REGEXP '^唐'

 

 

 3.ORDER BY

做用:對須要查詢後的結果集進行排序 

標識 含義 說明
ASC 升序 默認
DESC 倒序  

 實例:

1.查詢學生信息表中的信息表而且按照年齡升序排列 若是年齡相同則按照ID降序排列

SELECT * FROM Students ORDER BY Student_Age,Student_ID DESC;
 
 

4.AS

做用:爲表名或者列名指定別名

實例:

1.將結果列改成指定的名稱

SELECT Student_Name AS '姓名',Student_Sex AS '性別',Student_Age AS'年齡' FROM Students

2.使用表別名來查詢李煜的選課信息

SELECT S.Student_ID,S.Student_Name,C.Course_Name,SC_Score FROM (SELECT Student_ID,Student_Name FROM Students WHERE Student_Name = '李煜') AS S LEFT JOIN SC ON S.Student_ID = SC_StudentID LEFT JOIN Courses AS C ON SC_CourseID = C.Course_ID

5.DISTINCT

做用:查詢結果去除重複的

語法:

-- 查重依據爲 DISTINCT後的全部列名
SELECT DISTINCT 列名 FROM 表名 -- 查重依據爲 GROUP BY後的全部列名
SELECT DISTINCT 列名 FROM 表名 GROUP BY 列名

實例:

1.查詢學生表中的姓名和年齡並去除重複的

SELECT DISTINCT Student_name,Student_age FROM Students

2.查詢學生表中的姓名和年齡並去除年齡重複的

SELECT DISTINCT Student_name,Student_age FROM Students GROUP BY Student_Age

6.GROUP BY

做用:根據指定的一個列或多個列對查詢結果進行分組

實例:

1.查詢專業分佈狀況

SELECT Student_MajorID,COUNT(Student_ID) FROM Students GROUP BY Student_MajorID

2.刪除重複的學生信息,並保留最新的那條

-- 先插入兩條重複的數據
INSERT INTO Students (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID) VALUES (40007,'沈鵬',17,0,'大理',1004); INSERT INTO Students (Student_ID,Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID) VALUES (40008,'沈鵬',17,0,'大理',1004);

DELETE FROM Students WHERE Student_ID NOT IN (SELECT * FROM (SELECT MAX(Student_ID) FROM Students GROUP BY Student_Name,Student_Age,Student_Sex,Student_City,Student_MajorID)AS S)

 7.LIMIT

做用:LIMIT 子句能夠被用於強制 SELECT 語句返回指定的記錄數

語法:

-- 當LIMIT 後面的參數只有一個時爲條數,而默認偏移量爲0
SELECT 列名 FROM 表名 LIMIT 偏移量,條數

實例:

1.查詢學生信息表中年齡最大的三位同窗的信息

SELECT * FROM Students ORDER BY Student_Age DESC LIMIT 3

2.查詢年齡第二到第四的學生信息

SELECT * FROM Students ORDER BY Student_Age DESC LIMIT 1,4

8.HAVING

做用:having字句能夠讓咱們篩選成組後的各類數據,通常而言就是能夠在條件裏面用聚組函數函數。

語法:

SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 聚合函數 運算符 值

        實例:

        查詢平均年齡大於18的專業ID和人數

SELECT Student_MajorID,COUNT(Student_ID)FROM Students GROUP BY Student_MajorID HAVING AVG(Student_Age) > 18

      9.CASE WHEN

        做用:用於計算條件列表並返回多個可能結果表達式之一

        語法:

-- 表達式語法
CASE 列名 WHENTHEN[ ...n ]
     ELSEEND

-- 搜索式語法
CASE  
     WHEN 布爾表達式 THEN[ ...n ]
     ELSEEND

          實例:

          查詢男性年齡大於18女性大於16的學生信息

SELECT * FROM Students WHERE CASE Student_Sex WHEN 1 THEN Student_Age>=19 WHEN 0 THEN Student_Age >=16 END

 

       分別統計男性女性中的成年未成年的人數

SELECT CASE Student_Sex WHEN 0 THEN '' WHEN 1 THEN '' END AS '性別', SUM(CASE WHEN Student_Age >=18 THEN 1 ELSE 0 END) AS'成年', SUM(CASE WHEN Student_Age <18 THEN 1 ELSE 0 END) AS'未成年'
FROM Students GROUP BY  Student_Sex

相關文章
相關標籤/搜索