MySQL 快速入門(一)

MySQL快速入門

image

簡介

存儲數據的演變過程

  • 數據的存儲通過我們自己編寫來決定,存到文件的樣式千差萬別
  • 軟體開發目錄規範規定了文件的位置,不同的文件存儲相應功能的程式碼和不同類型的數據
  • 通過資料庫來存儲所有文件內的數據,統一成一個格式的數據,所有人操作數據都來一個地方(都用SQL語句)
'''
不管BS還是CS架構,服務端和客戶端都是基於socket通訊來收發消息的,後台的程式語言有很多,數據類型可能不一樣,那麼在存儲數據的時候使用資料庫,SQL語句就規定了統一操作數據的語言
'''

資料庫分類

  • 關係型資料庫特點

    • 數據之間彼此有關係或者約束
    • 存儲數據的表現形式通常以表格存儲,每個欄位還會有存儲類型的限制
    MySQL、Oracle、db2、access、sql server···
    
  • 非關係型資料庫特點:

    • 存儲數據通常以K,V鍵值對形式存儲
    • 約束不是很大,用於快取等
    redis、mongodb、memcache
    

概念介紹

類比理解

  • 庫:文件夾
  • 表:文件
  • 記錄:文件內一行行的數據
  • 表頭:表格的第一行
  • 欄位:表格第一行內的值,name、passwd·····

MySQL安裝

推薦下載5.6,5.7版本左右的,盡量不要下載最新版本

步驟如下:

image

image

image

image

image

下載後解壓縮

'''
打開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=[密碼]

image

設置新密碼

# 下載好的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)

image

創建表的完整語法

格式: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:可以插入控制

【待續,持續更新····】