儲存數據的倉庫
數據儲存在記憶體
int[] arr = new int[]{1, 2, 3, 4};
ArrayList<Integer>list = new ArrayList<Integer>();
list.add(1);
list.add(2);
new出來的物件儲存在堆中,堆是記憶體中的一小塊空間
優點:記憶體速度快
缺點:斷電/程式退出,數據就清除了,記憶體價格貴
數據儲存在普通檔案
優點:永久儲存
缺點:查詢,增加,修改,刪除數據比較麻煩,效率低
數據儲存在數據庫
優點:永久儲存,通過SQL語句比較方便的操作數據庫,數據庫是對大量的資訊進行管理的高效的解決方案
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-d4HOn8Gs-1597409228446)(/常見數據庫.PNG)]
Oracle:收費的大型數據庫,Oracle公司的產品。Oracle收購SUN公司,收購MYSQL。
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-xovJHaNi-1597409228451)(/1596868707747.png)]
MYSQL:開源免費的數據庫,小型的數據庫。已經被Oracle收購了。MySQL6.x版本也開始收費。
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-Bws9xpn1-1597409228474)(/1596868680479.png)]
DB2 :IBM公司的數據庫產品,收費的。常應用在銀行系統中。
SQLServer:MicroSoft 公司收費的中型的數據庫。C#、.net等語言常使用。
SyBase:已經淡出歷史舞臺。提供了一個非常專業數據建模的工具PowerDesigner。
SQLite: 嵌入式的小型數據庫,應用在手機端。
MySQL,Oracle
在web應用中,使用的最多的就是MySQL數據庫,原因如下:
瞭解MySQL數據庫解除安裝
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-qd3OJWzR-1597409228480)(unload.png)]
學習MySQL數據庫軟體的安裝
安裝過程:
檔案複製的過程,解壓檔案到指定的目錄下
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-pSv7KnKh-1597409228487)(/1550408706301.png)]
伺服器的設定
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-V3cAtsbj-1597409228488)(/1550408729170.png)]
埠號是:3306
管理員名字叫:root
可以遠端存取:[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-XSh4aU0e-1597409228490)(/1550408779650.png)]
MySQL安裝過程的兩個步驟:1.解壓複製 2.設定MySQL伺服器
MySQL埠號是:3306, 選擇編碼utf8
管理員名字:root
瞭解MySQL目錄結構
│-- bin:mysql相關的可執行檔案*.exe
│-- MySQLInstanceConfig.exe mysql的設定程式
│-- data: mysql自帶的數據庫檔案(不用關注)
│-- include: c語言的標頭檔案(不用關注)
│-- lib: 存放mysql使用到的dll動態庫(相當於jar包,不用關注)
│-- my.ini mysql的組態檔,設定了mysql的相關資訊
服務意味着沒有圖片介面
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-TnrI9o08-1597409228491)(/1550408825267.png)]
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-nHhxMmd1-1597409228492)(/mysql啓動02.png)]
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-xcleqKw1-1597409228495)(/1550289380140.png)]
MySQL是一個需要賬戶名密碼登錄的數據庫,登陸後使用,它提供了一個預設的root賬號,使用安裝時設定的密碼即可登錄
mysql -u使用者名稱 -p密碼
u和p後面沒有空格
例如:
mysql -uroot -proot
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-AIxYuSsy-1597409228498)(/MYSQL登錄01.png)]
後輸入密碼方式:
mysql -uroot -p回車
下一行輸入密碼
登錄格式2:mysql -hip地址 -u使用者名稱 -p密碼
例如:
mysql -h127.0.0.1 -uroot -proot
退出MySQL:exit
或quit
連線到本機的mysql
mysql -u賬號 -p密碼
連線到指定主機的mysql
mysql -hIP地址 -u賬號 -p密碼
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-JZqjeB4u-1597409228501)(/1550289366973.png)]
SQLyog是業界著名的Webyog公司出品的一款簡潔高效、功能強大的圖形化MySQL數據庫管理工具。使用SQLyog可以快速直觀地讓您從世界的任何角落通過網路來維護遠端的MySQL數據庫
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-smAHyDUk-1597409228503)(/SQLYog介紹.png)]
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-9QkWuj3Q-1597409228513)(/1597196571164.png)]
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-dbgyS5Cl-1597409228516)(/1597196642007.png)]
SQLyog的安裝?
一直下一步
使用SQLyog連線mysql?
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-ClitsWbs-1597409228517)(/SQLyog使用01.png)]
學習MySQL伺服器與數據庫、表、記錄的關係
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-wVB7FsCt-1597409228518)(/1550409365086.png)]
關係型數據庫的核心單元是表,有行有列
MySQL伺服器與數據庫、表、記錄的關係?
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-JOIjaxlI-1597409228520)(/1597196947400.png)]
學習SQL的概念和作用
(Structured Query Language) 結構化查詢語言,簡稱SQL。
通過SQL語句我們可以方便的操作數據庫、表、數據。
SQL是數據庫管理系統都需要遵循的規範。不同的數據庫生產廠商都支援SQL語句,但都有特有內容。
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-dfXjqoW5-1597409228523)(/SQL規範.png)]
DDL(Data Definition Language) 數據定義語言
用來定義數據庫物件:數據庫,表,列等。關鍵字:create,drop,alter等
DML(Data Manipulation Language) 數據操作語言
用來對數據庫中表的數據進行增刪改。關鍵字:insert,delete,update等
DQL(Data Query Language) 數據查詢語言
對數據庫進行數據查詢,關鍵字select
DCL(Data Control Language)數據控制語言(瞭解)
是用來設定或更改數據庫使用者或角色許可權的語句,這個比較少用到
SQL語句可以單行或多行書寫,以分號結尾。
可使用空格和縮排來增強語句的可讀性。
MySQL數據庫的SQL語句不區分大小寫,關鍵字建議使用大寫。
SELECT
*
FROM
user;
3種註釋
單行註釋: – 註釋
多行註釋: /*註釋*/
MySQL特有的單行註釋:# 註釋
SQL的作用?
通過SQL語句可以非常方便的操作數據庫,表,記錄
SQL的分類?
DDL: 數據定義語言,操作數據庫,表
DML: 數據操作語言,操作數據增刪改
DQL: 數據查詢語言,查詢數據
DCL: 操作數據的使用者角色的
學習建立數據庫的三種語法
直接建立數據庫
CREATE DATABASE 數據庫名;
判斷是否存在並建立數據庫
CREATE DATABASE IF NOT EXISTS 數據庫名;
建立數據庫並指定字元集(編碼表)
CREATE DATABASE 數據名 DEFAULT CHARACTER SET 字元集;
具體操作:
直接建立數據庫db1
CREATE DATABASE db1;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-P6uI3acf-1597409228525)(/直接建立數據庫.png)]
判斷是否存在並建立數據庫db2
CREATE DATABASE IF NOT EXISTS db2;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-jttgITaL-1597409228527)(/判斷是否存在並建立數據庫.png)]
建立數據庫db3並指定字元集爲gbk
CREATE DATABASE db2 CHARACTER SET gbk;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-Awmm0QHR-1597409228529)(/建立數據庫並指定字元集.png)]
SHOW DATABASES;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-gQQKlzt2-1597409228533)(/檢視所有數據庫.png)]
2. 檢視某個數據庫的定義資訊
SHOW CREATE DATABASE 數據名;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-2bbgey1I-1597409228535)(/檢視某個數據庫的定義資訊.png)]
建立數據庫語法
CREATE DATABASE 數據庫名;
檢視有哪些數據庫
SHOW DATABASES;
ALTER DATABASE 數據庫名 DEFAULT CHARACTER SET 字元集;
具體操作:
ALTER DATABASE db3 DEFAULT CHARACTER SET utf8;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-uNUn2Smx-1597409228538)(/修改數據庫字元集.png)]DROP DATBASE 數據庫名;
具體操作:
DROP DATABASE db2;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-ws5EjHYS-1597409228540)(/刪除數據庫.png)]修改數據庫的字元集格式?
ALTER DATABASE 數據庫名 DEFAULT CHARACTER SET 字元集;
刪除數據庫格式?
DROP DATABASE 數據庫名;
具體操作:
SELECT DATABASE();
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-eULxVMUZ-1597409228542)(/檢視正在使用的數據庫.png)]USE db1;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-84PlxF1k-1597409228544)(/使用db1數據庫.png)]DDL語句操作數據庫 | 關鍵字 |
---|---|
建立 | |
修改 | |
檢視 | |
刪除 |
學習DDL建立表
前提先使用某個數據庫(db1)
CREATE TABLE 表名 (欄位名1 欄位型別1, 欄位名2 欄位型別2);
建議寫成如下格式:
CREATE TABLE 表名 (
欄位名1 欄位型別1,
欄位名2 欄位型別2
);
MySQL中的我們常使用的數據型別如下:
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-uv5EHwUz-1597409228547)(/MYSQL常用數據型別.png)]
詳細的數據型別如下(不建議詳細閱讀!)
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-7jdEuss1-1597409228548)(/1550410505421.png)]
具體操作:
建立student表包含id,name,birthday欄位
CREATE TABLE student (
id INT,
name VARCHAR(20),
birthday DATE
);
建立表語句
CREATE TABLE 表名 (
欄位名 欄位型別,
欄位名 欄位型別
);
常用數據型別
int
double
varchar(數量)
date
## DDL檢視錶(重要)
### 目標
1. 學習檢視某個數據庫中的所有表
2. 學習檢視錶結構
### 講解
1. 檢視某個數據庫中的所有表
```sql
SHOW TABLES;
檢視錶結構
DESC 表名;
檢視建立表的SQL語句
SHOW CREATE TABLE 表名;
具體操作:
檢視MySQL數據庫中的所有表
SHOW TABLES;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-MadhvyMs-1597409228550)(/檢視某個數據庫中的所有表.png)]
檢視student表的結構
DESC student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-voc1yDUv-1597409228551)(/檢視student表的結構.png)]
檢視student的建立表SQL語句
SHOW CREATE TABLE student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-sHBJt0m1-1597409228554)(/檢視student的建立表SQL語句.png)]
檢視某個數據庫中的所有表
SHOW TABLES;
檢視錶結構
DESC 表名;
檢視建立表的SQL語句
SHOW CREATE TABLE 表名;
CREATE TABLE 表名 LIKE 其他表;
具體操作:
建立s1表,s1表結構和student表結構相同
CREATE TABLE s1 LIKE student;
直接刪除表
DROP TABLE 表名;
判斷表是否存在並刪除表
DROP TABLE IF EXISTS 表名;
具體操作:
DROP TABLE s1;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-IfQ2xZUk-1597409228556)(/直接刪除表.png)]DROP TABLE IF EXISTS s1;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-d6g8MMYF-1597409228559)(/判斷表存在並刪除.png)]快速建立一個表結構相同的表
CREATE TABLE 表名 LIKE 其他表;
刪除表語法
DROP TABLE 表名;
學習修改表結構的語法
所有的修改表結構的語句都是: ALTER TABLE 表名 XXX;
修改表結構使用不是很頻繁,只需要瞭解,等需要使用的時候再回來查即可
新增表一列
ALTER TABLE 表名 ADD 欄位名 欄位型別;
具體操作:
ALTER TABLE student ADD remark VARCHAR(20);
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-WqKLqpfJ-1597409228564)(/新增欄位.png)]修改欄位型別
ALTER TABLE 表名 MODIFY 欄位名 新型別;
具體操作:
ALTER TABLE student MODIFY remark VARCHAR(100);
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-RByASkSw-1597409228566)(/修改欄位型別.png)]修改欄位名
ALTER TABLE 表名 CHANGE 老欄位名 新欄位名 型別;
具體操作:
ALTER TABLE student CHANGE remark intro varchar(30);
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-DXHrsOu6-1597409228567)(/修改表欄位名稱.png)]刪除欄位
ALTER TABLE 表名 DROP 欄位名;
具體操作:
ALTER TABLE student DROP intro;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-LLaYW9jE-1597409228569)(/刪除欄位.png)]修改表名
RENAME TABLE 表名 TO 新表名;
具體操作:
RENAME TABLE student TO student2;
DROP TABLE student2;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-InHt42PN-1597409228571)(/修改表名.png)]修改表的字元集
ALTER TABLE 表名 DEFAULT CHARACTER SET 新字元集;
具體操作:
ALTER TABLE student2 character set gbk;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-vaoayG1a-1597409228572)(/修改字元集.png)]所有修改表前面的語法都是相同的?
ALTER TABLE 表名 xxx;
新增欄位:
ALTER TABLE 表名 ADD 欄位名 欄位型別;
修改欄位型別:
ALTER TABLE 表名 MODIFY 欄位名 新型別;
修改欄位名和型別:
ALTER TABLE 表名 CHANGE 老欄位名 新欄位名 型別;
刪除一列:
ALTER TABLE 表名 DROP 欄位名
學習DML往表中新增記錄
DML是對錶中的數據進行增刪改
建立student表包含id,name,birthday,sex,address欄位。
CREATE TABLE student (
id INT,
name VARCHAR(20),
birthday DATE,
sex char(2),
address varchar(50)
);
所有的欄位名都寫出來
INSERT INTO 表名 (欄位名1, 欄位名2, 欄位名3, ...) VALUES (值1, 值2, 值3, ...);
不寫欄位名
INSERT INTO 表名 VALUES (值1, 值2, 值3, ...);
只需要指定要插入數據的欄位
INSERT INTO 表名 (欄位名1, 欄位名2...) VALUES (欄位值1, 欄位值2);
沒有新增數據的欄位會使用NULL
具體操作:
INSERT INTO student (id, NAME, age, sex) VALUES (1, '張三', 20, '男');
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-ARVmwqzt-1597409228575)(/新增部分數據.png)]
向表中插入所有欄位
INSERT INTO student (NAME, id, age, sex, address) VALUES ('李四', 2, 23, '女', '廣州');
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-PK9DrILx-1597409228577)(/所有欄位都新增數據.png)]
INSERT INTO student VALUES (3, '王五', 18, '男', '北京');
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-nqfGCApw-1597409228578)(/新增所有欄位數據.png)]
- 值與欄位必須對應,個數相同,型別相同
- 值的數據大小必須在欄位的長度範圍內
- 除了數值型別外,其它的欄位型別的值必須使用引號引起。(建議單引號)
- 如果要插入空值,可以不寫欄位,或者插入NULL
向表中新增一條完整記錄:
所有的欄位都寫出來
INSERT INTO 表名 (欄位1, 欄位2, 欄位3) VALEUS (值1, 值2, 值3);
不寫欄位名
INSERT INTO 表名 VALEUS (值1, 值2, 值3);
學習解決DOS命令列中文亂碼
當我們使用DOS命令列進行SQL語句操作如有有中文會出現亂碼,導致SQL執行失敗
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-puImblse-1597409228579)(/DOS中文亂碼01.png)]
錯誤原因:因爲MySQL的用戶端設定編碼是utf8,而系統的DOS命令列編碼是gbk,編碼不一致導致的亂碼
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-IYeEsnIj-1597409228581)(/1551157215427.png)]
解決方案:
在DOS命令列輸入:
set names gbk;
注意:以上方式爲臨時方案,退出DOS命令列就失效了,需要每次都設定
如何解決DOS命令列亂碼
在DOS命令列輸入:
SET NAMES gbk;
學習DML更新表記錄
不帶條件修改數據
UPDATE 表名 SET 欄位名=欄位值;
帶條件修改數據
UPDATE 表名 SET 欄位名=欄位值 WHERE 條件;
具體操作:
不帶條件修改數據,將所有的性別改成女
UPDATE student SET sex='女';
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-IwaBerOv-1597409228583)(/修改所有數據.png)]
帶條件修改數據,將id號爲2的學生性別改成男
UPDATE student SET sex='男' WHERE id=2;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-zaRCKf4H-1597409228584)(/帶條件修改.png)]
一次修改多個列,把id爲3的學生,年齡改成26歲,address改成北京
UPDATE student SET age=26, address='北京' WHERE id=3;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-CA4LSWDf-1597409228586)(/一次性修改2個欄位.png)]
不帶條件的更新數據庫記錄
UPDATE 表名 SET 欄位名=新的值;
帶條件更新數據庫記錄
UPDATE 表名 SET 欄位名=新的值 WHERE 條件;
學習DML刪除表記錄
帶條件刪除數據
DELETE FROM 表名 WHERE 條件;
不帶條件刪除數據
DELETE FROM 表名;
具體操作:
帶條件刪除數據,刪除id爲3的記錄
DELETE FROM student WHERE id=3;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-c443sCud-1597409228588)(/刪除滿足條件的記錄.png)]
不帶條件刪除數據,刪除表中的所有數據
DELETE FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-cUkj5XaU-1597409228589)(/刪除所有記錄.png)]
指定條件刪除
DELETE FROM 表名 WHERE 條件;
沒有條件刪除所有的記錄
DELETE FROM 表名;
學習DQL簡單查詢
注意:查詢不會對數據庫中的數據進行修改,只是一種顯示數據的方式。
SELECT 欄位名1, 欄位名2, 欄位名3 FROM 表名;
具體操作:
SELECT id, NAME ,age, sex, address FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-HYnVn2QA-1597409228591)(/查詢所有列.png)]
使用*表示所有列
SELECT * FROM 表名;
具體操作:
SELECT * FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-8dZlNcTG-1597409228592)(/查詢所有列.png)]
查詢student表中的name 和 age 列
SELECT NAME, age FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-v6yRB0uu-1597409228593)(/查詢指定欄位.png)]
查詢時給列、表指定別名需要使用AS關鍵字
使用別名的好處是方便觀看和處理查詢到的數據
SELECT 欄位名1 AS 別名, 欄位名2 AS 別名... FROM 表名;
注意: AS關鍵字可以省略
SELECT NAME AS 姓名, age AS 年齡 FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-TkPz2v92-1597409228594)(/查詢欄位別名.png)]查詢指定列並且結果不出現重複數據
SELECT DISTINCT 欄位名 FROM 表名;
具體操作:
SELECT DISTINCT address 城市 FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-wgXhps49-1597409228596)(/1550289641391.png)]
某列數據和固定值運算
SELECT 欄位名 + 值 FROM 表名;
某列數據和其他列數據參與運算
SELECT 欄位1 + 欄位2 FROM 表名;
注意: 參與運算的必須是數值型別
需求:
實現:
修改student表結構,新增數學和英語成績列
ALTER TABLE student ADD math INT;
ALTER TABLE student ADD english INT;
給每條記錄新增對應的數學和英語成績
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-YcQ84mTH-1597409228597)(/新增數學和英語成績.png)]
查詢math + english的和
SELECT math + english FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-VDlZhZTN-1597409228599)(/查詢math和english的和.png)]
結果確實將每條記錄的math和english相加,但是效果不好看
查詢math + english的和使用別名」總成績」
SELECT math + english 總成績 FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-iU2VD6gf-1597409228600)(/組合查詢結果取別名.png)]
查詢所有列與math + english的和並使用別名」總成績」
SELECT *, math + english 總成績 FROM student;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-qtWsANEg-1597409228601)(/查詢所有列數據和參與運算.png)]
查詢姓名、年齡,將每個人的數學增加10分
SELECT name, math + 10 FROM student;
簡單查詢格式
SELECT 欄位名1, 欄位名2 FROM 表名;
定義別名
AS
SELECT 欄位名1 AS 別名, 欄位名2 FROM 表名;
可以省略AS
SELECT 欄位名1 別名, 欄位名2 FROM 表名;
去除重複行
SELECT DISTINCT 欄位名 FROM 表名;
DML語句操作 | 關鍵字 |
---|---|
新增 | INSERT INTO 表名 (欄位名, 欄位名) VALUES (值1, 值2); |
修改 | UPDATE 表名 SET 欄位名=新的值; |
刪除 | DELETE FROM 表名; |
查詢 | SELECT * FROM 表名; |
前面我們的查詢都是將所有數據都查詢出來,但是有時候我們只想獲取到滿足條件的數據
學習條件查詢語法格式
語法格式:
SELECT * FROM 表名 WHERE 條件;
流程:取出表中滿足條件的記錄
CREATE TABLE student3 (
id int,
name varchar(20),
age int,
sex varchar(5),
address varchar(100),
math int,
english int
);
INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'馬雲',55,'男','杭州',66,78),(2,'馬化騰',45,'女','深圳',98,87),(3,'馬景濤',55,'男','香港',56,77),(4,'柳岩',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'劉德華',57,'男','香港',99,99),(7,'馬德',22,'女','香港',99,99),(8,'德瑪西亞',18,'男','南京',56,65);
>
大於
<
小於
<=
小於等於
>=
大於等於
=
等於
<>
、!=
不等於
具體操作:
SELECT * FROM student3 WHERE math>80;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-C5XVEfHL-1597409228602)(/where查詢01.png)]
SELECT * FROM student3 WHERE english<=80;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-XhihVGej-1597409228604)(/where查詢02.png)]
SELECT * FROM student3 WHERE age=20;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-V2FCcDDY-1597409228605)(/where查詢03.png)]
SELECT * FROM student3 WHERE age!=20;
SELECT * FROM student3 WHERE age<>20;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-J5TJHXDG-1597409228606)(/where查詢04.png)]
and(&&)
多個條件同時滿足
or(||)
多個條件其中一個滿足
not(!)
不滿足
具體操作:
SELECT * FROM student3 WHERE age>35 AND sex='男';
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-rwiWulK7-1597409228607)(/where查詢05.png)]
SELECT * FROM student333 WHERE age>35 OR sex='男';
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-s88dFCwp-1597409228608)(/where查詢06.png)]
SELECT * FROM student3 WHERE id=1 OR id=3 OR id=5;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-zRKZjZMC-1597409228609)(/where查詢08.png)]
in關鍵字
語法格式:
SELECT * FROM 表名 WHERE 欄位名 IN (值1, 值2);
in
裏面的每個數據都會作爲一次條件,只要滿足條件的就會顯示
具體操作:
SELECT * FROM student3 WHERE id IN (1,3,5);
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-bubn7xmB-1597409228611)(/where查詢08.png)]
SELECT * FROM student3 WHERE id NOT IN (1,3,5);
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-6pqr7ZPt-1597409228613)(/where查詢07.png)]
SELECT * FROM 表名 WHERE 欄位名 BETWEEN 值1 AND 值2;
比如:age BETWEEN 80 AND 100
相當於: age>=80 && age<=100
具體操作:
SELECT * FROM student3 WHERE english>=75 AND english<=90;
SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-QT8Qd9j0-1597409228614)(/where查詢09.png)]
比較運算子
>
<
>=
<=
=
!=, <> 不等於
邏輯運算子
&& AND
|| OR
! NOT
IN
SELECT * FROM 表名 WHERE 欄位名 IN (值1, 值2, ...);
BETWEEN AND
SELECT * FROM 表名 WHERE 欄位名 BETWEEN 小值 AND 大值; 包頭又包尾
學習模糊查詢語法格式
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-BqxNQtg1-1597409228615)(/where查詢11.png)]
LIKE
像什麼什麼一樣
SELECT * FROM 表名 WHERE 欄位名 LIKE '萬用字元字串';
滿足萬用字元字串
規則的數據就會顯示出來
MySQL萬用字元有兩個:
%
: 表示任意多個字元
_
: 表示一個字元
具體操作:
SELECT * FROM student3 WHERE NAME LIKE '馬%';
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-0cniQIaJ-1597409228617)(/where查詢10.png)]
SELECT * FROM student3 WHERE NAME LIKE '%德%';
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-TUXknov0-1597409228618)(/where查詢11.png)]
SELECT * FROM student3 WHERE NAME LIKE '馬__';
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-WqY72K3G-1597409228620)(/where查詢12.png)]
模糊查詢格式
SELECT * FROM 表名 WHERE 欄位名 LIKE '萬用字元字串';
%
: 表示任意多個字元
_
: 表示一個字元
學習對查詢的數據進行排序
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-TiF0nMOp-1597409228621)(/orderby01.png)]
通過ORDER BY
子句,可以將查詢出的結果進行排序(排序只是顯示方式,不會影響數據庫中數據的順序)
SELECT * FROM 表名 ORDER BY 欄位名 ASC|DESC;
ASC: 升序
DESC: 降序
1.2.1 單列排序
單列排序就是使用一個欄位排序
具體操作:
select * FROM student3 order by age DESC;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-7YYMdfjE-1597409228622)(/orderby01.png)]
1.2.2 組合排序
組合排序就是先按第一個欄位進行排序,如果第一個欄位相同,才按第二個欄位進行排序,依次類推。
上面的例子中,年齡是有相同的。當年齡相同再使用math進行排序
SELECT * FROM 表名 WHERE 條件 ORDER BY 欄位名 [ASC|DESC], 欄位名 [ASC|DESC];
具體操作:
SELECT * FROM student3 ORDER BY age DESC, math DESC;
[外連圖片轉存失敗,源站可能有防盜鏈機制 機製,建議將圖片儲存下來直接上傳(img-ms7uuehc-1597409228626)(/orderby02.png)]
排序的關鍵字
ORDER BY 欄位名 [ASC|DESC];
[]: 表示可有可無
升序:ASC
降序:DESC
能夠使用SQL語句建庫、建表
建庫: CREATE DATABASE 數據庫名;
建表: CREATE TABLE 表名 (欄位名 欄位型別, 欄位名 欄位型別);
能夠使用SQL語句進行數據的添刪改查操作
新增: INSERT INTO 表名 (欄位名1, 欄位名2) VALUES (值1, 值2);
刪: DELETE FROM 表名;
改: UPDATE 表名 SET 欄位名=值;
查: SELECT * FROM 表名;
能夠使用SQL語句進行排序
SELECT * FROM 表名 ORDER BY 欄位名 [ASC|DESC];