一、MySQL資料庫軟體
1、安裝
點擊去往官網社區版本下載
記錄版本號:5.5.40 64位
2、卸載
1、程式卸載
2、洗掉C:/ProgramData目錄下的MySQL檔案夾
3、配置
MySQL服務啟動
- 手動打開服務視窗(計算機管理-->服務視窗)
- cmd--> services.msc 打開服務的視窗
- 使用管理員打開cmd
- net start mysql : 啟動mysql的服務
- net stop mysql:關閉mysql服務
MySQL登錄
- mysql -uroot -p密碼
- mysql -hip -uroot -p連接目標的密碼
- mysql --host=ip --user=root --password=連接目標的密碼
MySQL退出
- exit
- quit
MySQL目錄結構
- MySQL安裝目錄:basedir="D:/develop/MySQL/"
- 組態檔 my.ini
- MySQL資料目錄:datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
- 資料庫 表 資料
二、SQL(Structured Query Language)結構化查詢語言
定義了操作所有關系型資料庫的規則,每一種資料庫操作的方式存在不一樣的地方,稱為“方言”
1、SQL通用語法
- SQL 陳述句可以單行或多行書寫,以分號結尾,
- 可使用空格和縮進來增強陳述句的可讀性,
- MySQL 資料庫的 SQL 陳述句不區分大小寫,關鍵字建議使用大寫,
- 3 種注釋
- 單行注釋: -- 注釋內容 或 # 注釋內容(mysql 特有)
- 多行注釋: /* 注釋 */
2、SQL分類
- DDL(Data Definition Language)資料定義語言
- 用來定義資料庫物件:建庫,建表等,關鍵字:create, drop,alter 等
- DML(Data Manipulation Language)資料操作語言
- 對表中的記錄操作增刪改,關鍵字:insert, delete, update 等
- DQL(Data Query Language)資料查詢語言
- 對表中的查詢操作,關鍵字:select, where 等
- DCL(Data Control Language)資料控制語言(了解)
- 對用戶權限的設定,關鍵字:GRANT, REVOKE 等
三、MySQL圖形化工具
- Navicat (推薦使用)
- 很詳細:Navicat for MySQL 15注冊激活
- SQLyog
- phpMyAdmin
- Workbench
四、DDL:操作資料庫、表
CRUD 代表:創建(create)、查詢(Retrieve)、修改(Update)、洗掉(Delete)
1、操作資料庫
創建
- 創建資料庫
create database 資料庫名稱;
- 創建資料庫,判斷不存在,再創建
create database if not exists 資料庫名稱;
- 創建資料庫,并指定字符集,如:gbk、utf8等
create database 資料庫名稱 character set 字符集名;
查詢
- 查詢所有資料庫的名稱
show databases;
- 查詢某個資料庫的字符集:查詢某個資料庫的創建陳述句
show create database 資料庫名稱;
修改
- 修改資料庫的字符集
alter database 資料庫名稱 character set 字符集名稱;
洗掉
drop database 資料庫名稱;
- 判斷資料庫存在,存在再洗掉
drop database if exists 資料庫名稱;
使用資料庫
- 查詢當前正在使用的資料庫名稱
select database();
- 使用/切換資料庫
use 資料庫名稱;
2、操作表
創建
- 創建表
create table 表名(
列名1 資料型別1,
列名2 資料型別2,
...
列名n 資料型別n
)
注意:最后一列,不要加逗號
- 常用資料型別如下:
| 型別 | 描述 |
|---|---|
| int | 整數型別 (如:age int) |
| double | 小數型別(如:score double(5,2)), 5指整數位數,2代表小數位數 |
| date | 日期,只包含年月日,yyyy-MM-dd |
| datetime | 日期,包含年月日時分秒 yyyy-MM-dd HH:mm:ss |
| timestamp | 時間戳型別,包含年月日時分秒 yyyy-MM-dd HH:mm:ss (注:如果將來不給這個欄位賦值,或賦值為null,則默認使用當前的系統時間,來自動賦值) |
| varchar | 字串 (如:name varchar(20), 指姓名最大20個字符) |
- 復制表
create table 表名 like 被復制的表名;
查詢
- 查詢某個資料庫中所有的表名稱
show tables;
- 查詢表結構
desc tables;
修改
- 修改表名
alter table 表名 rename to 新的表名
- 修改表的字符集
alter table 表名 character set 字符集名稱;
- 添加一列
alter table 表名 add 列名 資料型別;
- 修改列名稱 型別
alter table 表名 change 列名 新列名 新資料型別;
alter table 表名 modify 列名 新資料型別;
- 洗掉列
alter table 表名 drop 列名;
洗掉
drop table 表名;
drop table if exists 表名;
五、DML:增刪改表中資料
添加資料
- 語法
insert into 表名 (列名1,列名2,...列名n) values(值1,值2,...值n);
- 注意:
- 列名和值要一一對應,
- 如果表名后,不定義列名,則默認給所有列添加值,
- 除了數字型別,其他型別需要使用引號(單雙都可以)引起來,
洗掉資料
- 語法
delete from 表名 [where 條件];
舉個例子:刪掉表中score為null的資料
delete from stu where score is null;
-
注意:
- 如果不加條件,則洗掉表中所有記錄,
-
如果需要洗掉所有記錄:
delete from 表名; ---不推薦使用,有多少條就會執行多少次洗掉,效率低
truncate table 表名; ---推薦使用,先洗掉表,然后在創建一張一樣的表,效率高
修改資料
- 語法
update 表名 set 列名1 = 值1, 列名2 = 值2, ... [where 條件]
- 注意:
- 如果不加任何條件,則會將表中所有記錄全部修改,
六、DQL:查詢表中的記錄(重要)
1、語法
slelect
欄位串列
from
表名串列
where
條件串列
group by
分組欄位
having
分組之后的條件
order by
排序
limit
分頁限定
2、基礎查詢
- 多個欄位的查詢
select 欄位名1,欄位名2... from 表名;
select * from 表名; --查詢所有欄位
- 去除重復
select distinct 欄位名 from 表名;
- 計算列
select 欄位名1 + 固定值(或者欄位名2) from 表名;
注:一般只會進行數值型的計算
ifnull(需要判斷的值,替換值):null參與的運算,計算結果都為null,
- 起別名
select 欄位名1 as 別名1, 欄位名2 as 別名2 ... from 表名;
注:as也可以省略不寫,
3、條件查詢
- 語法:
select 欄位名 from 表名 where 條件;
運算子
| 運算子 | 說明 | 例子 |
|---|---|---|
| >、<、<=、>=、=、<> | <>在SQL中表示不等于,在mysql中也可以使用 !=, 沒有== | |
| between...and | 在一個范圍之內,包頭又包尾 | score between 80 and 100; 表示在80到100之間,相當于:age>=80 && age<=100 |
| in(集合) | 表示多個值,使用逗號分隔 | id not in(1,3,5); 查詢id不是1或3或5的 |
| like | 模糊查詢, 占位符:_:單個任意字符,%:多個任意字符 | name like '%張%'; 查詢包含張的 |
| is null | 查詢一列為null的值,不能寫成 =null | |
| and 或 && | 與,SQL中建議使用前者,后者并不通用 | |
| or 或 || | 與,SQL中建議使用前者,后者并不通用 | |
| not 或 ! | 與,SQL中建議使用前者,后者并不通用 |
4、排序查詢
- 語法
order by 排序欄位1 排序方式1, 排序欄位2 排序方式2...
-
排序方式
- asc:升序(默認)
- desc:降序
-
注意
- 如果有多個排序條件,則當前邊的條件值一樣時,才會判斷第二條件
5、聚合函式
- 5個聚合函式
| SQL中的聚合函式 | 作用 |
|---|---|
| max(列名) | 求這一列的最大值 |
| min(列名) | 求這一列的最小值 |
| avg(列名) | 求這一列的平均值 |
| count(列名) | 統計這一列有多少條記錄 |
| sum(列名) | 對這一列求總和 |
- 語法
select 聚合函式(列名) from 表名;
- 注意
- 聚合函式的計算,會排除null值,解決:ifnull(列名,默認值)
6、分組查詢
- 語法
group by 分組欄位 [having 條件]
- where 和 having 的區別?
- where 在分組之前進行限定,如果不滿足條件,則不參與分組,having在分組之后進行限定,如果不滿足結果,則不會被查詢出來
- where 后不可以跟聚合函式,having可以進行聚合函式的判斷,
7、分頁查詢
- 語法
limit 開始的索引, 煤業查詢的條數;
- 公式
開始的索引 = (當前的頁碼 - 1) * 每頁顯示的條數
- 注意
- limit 是一個MySQL"方言",
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/230254.html
標籤:MySQL
