MySql總結

2020-10-20 11:00:57

1、mysql-installer-community-8.0.16.0.msi的安裝教學

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述

2、MySQL服務的啟動和停止

伺服器端安裝好了,它裡面維護了一個大容器,大倉庫,但是它預設是沒有開著,是禁用狀態。哪怕你有許可權,有身份也進不去。所以在使用前,必須要保證服務是啟動狀態。

方式一:通過計算機管理方式

右擊計算機-----管理-------服務------------啟動或停止mysql服務
在這裡插入圖片描述在這裡插入圖片描述
在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述

方式二:通過命令列方式

net是windows系統自帶的。
啟動:net start mysql服務名
停止:net stop mysql服務名
注意:要用管理員身份開啟命令列。在這個身份下才能開啟和停止服務

在這裡插入圖片描述在這裡插入圖片描述

方式三:mysql命令

mysqladmin -u root -p shutdown 要輸密碼
這個是關閉mysql服務

3、MySQL伺服器端的登入和退出

登入:
mysql 【-h主機名 -P埠號 】-u使用者名稱 -p密碼
如果是在本機,可以省略 -h 主機名 -P埠號
退出:
exit或ctrl+C

在這裡插入圖片描述在這裡插入圖片描述

注意:假如輸入命令被提示不是合法的內部命令,這是因為環境變數沒有配好。我們在安裝mysql不是設定了嗎?可能因為我們設定的安裝在後面,環境變數預設是從前往後找,可能會出現混淆,導致mysql不好使。那就要重新設定環境變數。將mysql中bin目錄的路徑新增到計算機Path路徑的第一行即可。

4、 MySQL的常見命令

1.檢視當前所有的資料庫
show databases;
2.開啟指定的庫
use 庫名
3.檢視當前庫的所有表
show tables;
4.檢視其它庫的所有表
show tables from 庫名;
5.建立表
create table 表名(
列名 列型別,
列名 列型別,
。。。
);
6.檢視表結構
desc 表名;

7.檢視伺服器的版本
方式一:登入到mysql伺服器端
select version();
方式二:沒有登入到mysql伺服器端
mysql --version
或
mysql --V

案例:
展示所有資料庫,然後進入test資料庫檢視表
在這裡插入圖片描述在這裡插入圖片描述

此時可知test資料庫中沒有表,那我想看看mysql資料庫中有沒有表。
有兩種方式:
1.use mysql; =====> show tables;
2.show tables from mysql;
在這裡插入圖片描述

注意:此時還是在test資料庫中。
select database(); 檢視當前在哪個庫中。
在這裡插入圖片描述

接下來在test庫中建一張表,並檢視表以及表結構
在這裡插入圖片描述

然後檢視該表資料,並且插入資料
在這裡插入圖片描述

接下來檢視資料庫的版本
方式1:登入到mysql伺服器端 select version();
在這裡插入圖片描述

在這裡插入圖片描述

方式二:沒有登入到mysql伺服器端
mysql --version

mysql --V
在這裡插入圖片描述

5、MySQL的語法規範

1.不區分大小寫,但建議關鍵字大寫,表名、列名小寫
2.每條命令最好用分號結尾
3.每條命令根據需要,可以進行縮排 或換行
4.註釋
單行註釋:#註釋文字
單行註釋:-- 註釋文字 --空格
多行註釋:/* 註釋文字 */

6、DML語言

(1)插入

語法:
insert into 表名(欄位名,…)
values(值1,…);

(2)修改

修改單表語法:

update 表名 set 欄位=新值,欄位=新值
【where 條件】

修改多表語法:

update 表1 別名1,表2 別名2
set 欄位=新值,欄位=新值
where 連線條件
and 篩選條件

(3)刪除

方式1:delete語句

單表的刪除: ★
delete from 表名 【where 篩選條件】

多表的刪除:
delete 別名1,別名2
from 表1 別名1,表2 別名2
where 連線條件
and 篩選條件;

方式2:truncate語句

truncate table 表名

兩種方式的區別【面試題】

#1.truncate不能加where條件,而delete可以加where條件
#2.truncate的效率高一丟丟

#3.truncate 刪除帶自增長的列的表後,如果再插入資料,資料從1開始
#delete 刪除帶自增長列的表後,如果再插入資料,資料從上一次的斷點處開始

#4.truncate刪除不能回滾,delete刪除可以回滾

7、DDL語句

庫和表的管理

庫的管理:

一、建立庫
create database 庫名
二、刪除庫
drop database 庫名

表的管理:
#1.建立表

CREATE TABLE IF NOT EXISTS stuinfo(
	stuId INT,
	stuName VARCHAR(20),
	gender CHAR,
	bornDate DATETIME
);

DESC studentinfo;
#2.修改表 alter
語法:ALTER TABLE 表名 ADD|MODIFY|DROP|CHANGE COLUMN 欄位名 【欄位型別】;

#①修改欄位名
ALTER TABLE studentinfo CHANGE  COLUMN sex gender CHAR;

#②修改表名
ALTER TABLE stuinfo RENAME [TO]  studentinfo;
#③修改欄位型別和列級約束
ALTER TABLE studentinfo MODIFY COLUMN borndate DATE ;

#④新增欄位

ALTER TABLE studentinfo ADD COLUMN email VARCHAR(20) first;
關鍵字after可以改變增加列的順序,如果增加列為第一列,則要加first.
#⑤刪除欄位
ALTER TABLE studentinfo DROP COLUMN email;

#3.刪除表
DROP TABLE [IF EXISTS] studentinfo;

8、MySQL資料庫中char和varchar的區別char 的長度是固定的;

varchar的長度是可變的。
也就是說:我們定義一個char[11]和varchar[11],然後存在進去的是‘china’,
那麼這時候char佔的長度依舊是11,除去‘china’外,後邊還會跟著6個空格;
而varchar會立馬把長度變為5。
在取資料的時候
char需要用trim()去除空格;
 而varchar不需要。

9、修改密碼mysql登入密碼

在這裡插入圖片描述

10、資料庫的備份與恢復

備份:
在這裡插入圖片描述
恢復:
在這裡插入圖片描述

11、表的複製

在這裡插入圖片描述

12、union關鍵字使用

union聯合查詢
預設去重
Select * from 表1
Union 
Select * from 表2;
如果不想去重,加上all
Select * from 表1
Union all
Select * from 表2;

13、mysql不區分大小寫

在這裡插入圖片描述

14、Regexp

select * from t_user where userName regexp ‘ ^n‘;
表示以n打頭
select * from t_user where userName regexp ‘ ^n$‘;
表示以n為結尾

在這裡插入圖片描述

15、temporary建立臨時表

在這裡插入圖片描述

16、新增主鍵

Alter table users add primary key(userId);

在這裡插入圖片描述
新增聯合主鍵:

在這裡插入圖片描述刪除主鍵:
ALTER TABLE stuinfo DROP PRIMARY KEY;

17、新增索引

在這裡插入圖片描述

刪除索引:

在這裡插入圖片描述