MySQL 快速入門(一)
- 2022 年 2 月 16 日
- 筆記
- MySQL, MySQL快速入門(一)
目錄
MySQL快速入門

簡介
存儲數據的演變過程
- 數據的存儲通過我們自己編寫來決定,存到文件的樣式千差萬別
- 軟體開發目錄規範規定了文件的位置,不同的文件存儲相應功能的程式碼和不同類型的數據
- 通過資料庫來存儲所有文件內的數據,統一成一個格式的數據,所有人操作數據都來一個地方(都用SQL語句)
'''
不管BS還是CS架構,服務端和客戶端都是基於socket通訊來收發消息的,後台的程式語言有很多,數據類型可能不一樣,那麼在存儲數據的時候使用資料庫,SQL語句就規定了統一操作數據的語言
'''
資料庫分類
-
關係型資料庫特點
- 數據之間彼此有關係或者約束
- 存儲數據的表現形式通常以表格存儲,每個欄位還會有存儲類型的限制
MySQL、Oracle、db2、access、sql server··· -
非關係型資料庫特點:
- 存儲數據通常以K,V鍵值對形式存儲
- 約束不是很大,用於快取等
redis、mongodb、memcache
概念介紹
類比理解
- 庫:文件夾
- 表:文件
- 記錄:文件內一行行的數據
- 表頭:表格的第一行
- 欄位:表格第一行內的值,name、passwd·····
MySQL安裝
推薦下載5.6,5.7版本左右的,盡量不要下載最新版本
步驟如下:





下載後解壓縮
'''
打開bin文件
1. 服務端:mysqld.exe
2. 客戶端:mysql.exe
'''
登錄
# 在超級管理員身份下打開cmd命令窗口登錄
mysql -uroot -h 127.0.0.1 -P 3306 -p
-u:用戶
-h:地址
-P:埠
-p:密碼
# 簡寫
mysql -uroot -p
# 只寫mysql
mysql登錄遊客模式,不是管理員登錄,只能體會lowb的功能
MySQL命令初始
show databases; # 展示所有資料庫
\c或 ctrl+c(新版本) # 取消執行
exit\ctrl+z(新版本) # 退出
環境變數配置
win命令補充
# 查看進程
tasklist
tasklist |findstr mysqld
# 殺死進程(管理員模式)
taskkill /F /PID PID號
MySQL環境變數配置
步驟
1.配置環境變數,將mysqld所在路徑添加到path中
D:\MySQL\mysql-5.6.48-winx64\mysql-5.6.48-winx64\bin
2.將mysql服務端mysqld製作成開機自啟動的服務
打開cmd,輸入mysqld --install
# 移除mysql服務:mysql --remove
修改配置文件
[mysqld] : mysql服務端,啟動mysql服務載入的配置
[mysql] :mysql客戶端,啟動mysql載入的配置
[client] :其他客戶端
統一編碼配置,在目錄下新建
my.ini文件,寫入以下內容
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
# 然後重啟服務
# \s查看
配置用戶名和密碼,登錄可以不用輸入(可選)
[mysql]
user="root"
password=[密碼]

設置新密碼
# 下載好的MySQL初始沒有密碼,可以設置新密碼,在cmd中
mysqladmin -uroot -p [oldpwd] password [newpwd]
忘記密碼的情況
1. 先關閉mysql服務
# 命令行啟動,原理是跳過登錄密碼驗證功能
2. mysqld --skip-grant-tables
3.無密碼登錄:mysql -uroot -p
4.修改當前用戶的密碼(mysql文件夾中的user表):update mysql.user set password=password(新密碼) where user='root' and host='localhost';
5.將修改數據刷到硬碟:flush privileges;
6.重新啟動服務就可以正常校驗登錄了,登錄
基本sql語句
大部分程式的業務邏輯都是增刪改查
庫的增刪改查(文件夾)
# 增加資料庫
create database 資料庫名;
create database 資料庫名 charset ='gbk'; # 設置庫的字符集編碼
# 查看資料庫
show database; # 查所有資料庫
show create database 資料庫名; # 查單個
# 修改資料庫
alter database 資料庫名 charset='gbk';
# 刪除資料庫
drop database [資料庫名];
表的增刪改查(文件)
操作表,需要指定該表所在的庫(文件夾)
# 查看當前所在庫的名字
select database();
# 切換庫
use 資料庫名;
# 增加表
create table 表名(欄位1,欄位2);
create table t1(id int,name char(4));
# 刪除表
drop table [表名];
# 修改表名
alter table 表名 modify 欄位 欄位類型 ;
alter table t1 modify name char(16);
# 查看錶
show tables; # 查看庫下所有表
show create table 表名; # 查看單表
desc 表名; # 查看錶的詳細欄位資訊
# 在一個資料庫操作另外一個資料庫內的表,可以不use
資料庫名.表名
數據的增刪改查(數據)
操作數據,先確定庫,在確定表,在操作數據
# 增加數據
insert into 表名 values(value1, value2,···);
insert into t1 values(1,'hammer') # 插入單個
insert into t1 values(1,'hammer'),(2,'ze'); # 插入多個
# 查看數據
select * from 表名; # 查看所有數據
select 欄位名 from 表名;
select name from t1; # 獲取t1表中的所有name值
# 修改數據
update 表名 set 欄位名='值' where 欄位條件
update t1 set name='hammer' where id>1; # id大於1的name修改成hammer
# 刪除數據
delete from 表名; # 刪除表內所有數據
delete from 表名 where 條件;
delete from t1 where id>1; # 將id>1的數據刪除
delete from t1 where name='hammer';
存儲引擎
日常生活中文件格式有很多種,針對不同文件的格式會有對應不同存儲方式和處理機制,針對不同的數據應該有對應的不同處理機制來存儲;
- 存儲引擎就是不同的處理機制;
MySQL主要存儲引擎
InnoDB:MySQL5.5版本之後默認的存儲引擎(默認)MyISAM:MySQL5.5版本之前默認的存儲引擎,比InnoDB快,但是InnoDB更安全- memory:記憶體引擎,數據全部存放在記憶體中(危險,斷電數據丟失,但是快)
- blackhole:無論存儲什麼,都立刻消失(黑洞)
命令
- 查看所有存儲引擎:
show engines;
mysql> show engines;
InnoDB :DEFAULT(默認的) Supports transactions(支援事物), row-levellocking(行鎖), and foreign keys(外鍵)
- 指定引擎
create table 表名(類型,欄位) engine=[引擎名]
# 驗證不同的存儲引擎在存儲表的時候,異同點
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=blackhole;
create table t4(id int) engine=memory;
# 文件區別如下圖
# 存數據
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);
# 重啟服務查看
select * from t1;
+------+
| id |
+------+
| 1 |
+------+
select * from t2;
+------+
| id |
+------+
| 1 |
+------+
select * from t3; # 記憶體中會消失
Empty set (0.00 sec)
select * from t4; # "黑洞"存啥消失啥
Empty set (0.00 sec)

創建表的完整語法
格式:create table 表名 (
欄位1 類型(寬度) 約束條件,
欄位2 類型(寬度) 約束條件,
欄位3 類型(寬度) 約束條件
···
)
- 欄位名不能重複
- 寬度和約束條件可以選擇,寬度有默認值,約束條件可以有多個
- 欄位名和欄位類型是必須寫的
- 最後一行不能有逗號','
寬度是對數據進行限制
mysql> create table t5(name char);
mysql> desc t5; # 寬度默認為1
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| name | char(1) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
insert into t5 values('hammer'); # 插入值
mysql> select *from t5;
+------+
| name |
+------+
| h |
+------+
# 只能插入一個字元,不同版本不同限制,不同效果
# 5.7版本之後默認開啟了嚴格模式,規定多少寬度,就插入多少數據,超出報錯
約束條件
desc查看錶結構,查看是否可以插入空值
mysql> desc t5;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| name | char(1) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
* null yes:可以插入控制
【待續,持續更新····】

