1.DQL(Data Query Language):
- 幾個資料庫語言中的最核心的語言,
- 資料庫中所有簡單的查詢、復雜的查詢都是用DQL,
- 使用頻率極高,
2.實作程序:
2.1簡單select查詢及定義別名的語法:
查詢表的全部內容:
- SELECT * FROM
表名;
查詢表中指定欄位內容(未設定別稱):
- SELECT
欄位1名稱,...,欄位n名稱FROM表名;
查詢表中指定欄位內容(設定別稱):
- 有時候我們欄位名稱起的不是那么容易看懂,那么我們查詢出來可能會造成閱讀困難,所以此時我們可以使用 AS 關鍵字來給欄位名起一個別稱,方便閱讀結果,
- SELECT
欄位1名稱AS別稱,...,欄位n名稱AS別稱FROM表名AS別稱;
運用concat(a,b)資料庫字串拼接函式來融合查詢指定欄位(設定別稱),
- SELECT CONCAT(‘拼接內容’,
欄位1名稱) AS別稱,..., CONCAT(‘拼接內容’,欄位n名稱) AS別稱FROM表名AS別稱;
CREATE DATABASE IF NOT EXISTS `school`;
USE `school`;
-- 年級表創建以及資料插入
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade`(
`grade_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '年級編號',
`grade_name` VARCHAR(20) NOT NULL COMMENT '年級名稱',
PRIMARY KEY (`grade_id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `grade` (`grade_id`,`grade_name`)
VALUES (1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'研究生');
-- 學生表創建以及資料插入
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`(
`student_no` INT(4) NOT NULL COMMENT '學生學號',
`login_pwd` VARCHAR(20) DEFAULT NULL COMMENT '登陸密碼',
`student_name` VARCHAR(20) DEFAULT NULL COMMENT '學生姓名',
`sex` TINYINT(1) DEFAULT NULL COMMENT '性別,0或1',
`grade_id` INT(11) DEFAULT NULL COMMENT '年級編號',
`tel` VARCHAR(50) DEFAULT NULL COMMENT '聯系電話',
`address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`email` VARCHAR(50) DEFAULT NULL COMMENT '郵箱賬號',
`ID_number` VARCHAR(18) DEFAULT NULL COMMENT '身份證號碼',
PRIMARY KEY (`student_no`),
UNIQUE KEY `ID_number`(`ID_number`),
KEY `email`(`email`)
)ENGINE=MYISAM DEFAULT CHARSET=utf8;
INSERT INTO `student` (`student_no`,`login_pwd`,`student_name`,`sex`,
`grade_id`,`tel`,`address`,`birthday`,`email`,`ID_number`)
VALUES(1000,'123456','張三',0,2,'18888888888','火星','1900-1-1','text1@qq.com','123456789012345678'),
(1001,'123456','李四',1,3,'19999999999','水星','1901-1-1','text2@qq.com','098765432109876543');
-- 科目表創建以及資料插入
DROP TABLE IF EXISTS `subject`;
CREATE TABLE `subject`(
`subject_no` INT(11) NOT NULL AUTO_INCREMENT COMMENT '課程編號',
`subject_name` VARCHAR(50) DEFAULT NULL COMMENT '課程名稱',
`period` INT(4) DEFAULT NULL COMMENT '學時',
`grade_id` INT(4) DEFAULT NULL COMMENT '年級編號',
PRIMARY KEY (`subject_no`)
)ENGINE=INNODB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
INSERT INTO `subject`(`subject_no`,`subject_name`,`period`,`grade_id`)
VALUES(1,'高等數學',64,1),
(2,'C語言基礎',64,1),
(3,'C++程式設計',64,1),
(4,'Java程式設計',64,1),
(5,'資料結構',64,1);
-- 成績表創建以及資料插入
DROP TABLE IF EXISTS `result`;
CREATE TABLE `result`(
`student_no` INT(4) NOT NULL COMMENT '學生學號',
`subject_no` INT(11) NOT NULL COMMENT '課程編號',
`exam_date` DATETIME NOT NULL COMMENT '考試時間',
`student_result` INT(4) NOT NULL COMMENT '考試成績',
KEY `subject_no`(`subject_no`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `result`(`student_no`,`subject_no`,`exam_date`,`student_result`)
VALUES(1000,1,'2021-01-01 00:00:00',85),
(1000,2,'2021-01-01 00:00:00',86),
(1000,3,'2021-01-01 00:00:00',87),
(1000,4,'2021-01-01 00:00:00',88),
(1000,5,'2021-01-01 00:00:00',89);
-- 簡單查詢程序:
-- 查尋表全部內容,
SELECT * FROM `student`;
-- 查詢指定欄位(沒有設定別稱),
SELECT `student_no`,`student_name` FROM `student`;
-- 查詢指定欄位(設定別稱),
SELECT `student_no` AS 學號,`student_name` AS 學生姓名 FROM `student`;
-- 運用concat(a,b)資料庫字串拼接函式來融合查詢指定欄位(設定別稱),
SELECT CONCAT('學號:',`student_no`) AS `學號`,CONCAT('姓名:',`student_name`) AS 學生姓名 FROM `student`;
2.2 去重以及據庫的運算式語法:
去重(distinct)
作用:去除SELECT查詢結果中重復的資料,保留重復資料中的一條,
語法:SELECT DISTINCT
欄位名1,欄位nFROM表名;
/*
緊接著上面實驗簡單查詢所需創建的表以及資料繼續往下些SQL
*/
-- 統計此次參加考試了的人的學號,
SELECT `student_no` AS 學號 FROM `result`;
/*
執行下面這條查詢陳述句會發現將1000學號的學生的考試結果都
查出來了,資訊重復了,于是我們執行去重,
*/
SELECT DISTINCT `student_no` AS 學號 FROM `result`;
/*
執行去重過后的查詢陳述句發現只顯示一條1000,說明去重成功了,
*/
2.3 繼續深入:
我們在之前簡單查詢和去重之后我們可以知道:
- 在 SELECT
...FROM表名; 之間的...中的內容可以拓展, - 于是SELECT陳述句的使用方法也就逐漸加深,
/*
緊接著上面實驗簡單查詢所需創建的表以及資料繼續往下些SQL
*/
-- 查詢陳述句用來計算(運算式):
SELECT 1*2*3*4*5 AS 計算5的階乘結果;
-- 查詢陳述句用來查詢自增步長(變數):
SELECT @@AUTO_INCREMENT_INCREMENT AS 自增步長;
-- 查詢陳述句用來查詢當前MySQL版本(函式):
SELECT VERSION() AS 當前MySQL版本;
綜上可知:
-
算數運算式、系統變數、函式、NULL、列等等都是屬于資料庫中的運算式,
-
所以在 SELECT
...FROM表名; 之間的...中的內容可以拓展的內容非常多, -
...中就可以是資料庫的運算式,
所以SELECT
...FROM表名可以概括為:
- SELECT
資料庫中的運算式[FROM表名];([]中內容可以省略),
2.4 where 條件陳述句:
-
通常情況下大家要做條件查詢都是SELECT … WHERE …
-
那么我們來學習一下WHERE條件陳述句,
where條件陳述句之邏輯運算子:
| 運算子 | 描述 | 示例 |
|---|---|---|
| AND(&&) | 邏輯與 | 條件1 AND(&&) 條件2 |
| OR(||) | 邏輯或 | 條件1 OR(||) 條件2 |
| NOT(!) | 邏輯非 | NOT 條件 |
/*
緊接著上面實驗簡單查詢所需創建的表以及資料繼續往下些SQL
*/
-- 查詢課程號碼在2~4號的課程名稱,
SELECT `subject_no` AS 課程編號,`subject_name` AS 課程名稱 FROM `subject`
WHERE `subject_no`>=2 AND `subject_no`<=4;
-- 查詢課程號碼在2~4號的課程名稱(模糊查詢),
SELECT `subject_no` AS 課程編號,`subject_name` AS 課程名稱 FROM `subject`
WHERE `subject_no` BETWEEN 2 AND 4;
-- 查詢除了課程編號為1的課程外的其他課程,
SELECT `subject_no` AS 課程編號,`subject_name` AS 課程名稱 FROM `subject`
WHERE NOT `subject_no`=1;
2021.1.15
本文章是本人學習筆記,不進行任何商用所以不支持轉載請理解,也請別拿去商用!
如果覺得對你有幫助那么歡迎你隨時來回顧!
只為記錄本人學習歷程,
畢
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/249129.html
標籤:其他
上一篇:課程設計:通訊錄系統(資料庫)
下一篇:ORA-12545: Connect failed because target host or object does not exist
