MySQL
初始化
管理員身份運行cmd
-- 初始化
mysqld --initialize-insecure
-- 註冊mysql服務
mysqld -install
-- 啓動mysql服務
net start mysql
-- 修改默認賬户密碼
mysqladmin -u root password 1234
-- 登錄mysql
mysql -uroot -p1234
卸載MySQL
-- 停止mysql服務
net stop mysql
-- 卸載mysql服務
mysqld -remove mysql
數據庫操作
-- 查詢所有數據庫
show databases;
-- 使用數據庫
use db_name;
-- 查詢當前數據庫
select database();
-- 創建數據庫
create database [if not exists] db_name [default character utf8mb4];
-- 刪除數據庫
drop database [if exists] db_name;
SQL功能分類
| 分類 |
説明 |
| DDL |
用於定義數據庫對象(數據庫,表,字段) |
| DML |
用於對數據庫表中的數據進行增刪改 |
| DQL |
用於查詢數據庫中表的數據 |
| DCL |
用於創建數據庫用户,控制數據庫的訪問權限 |
表-DDL
表創建
create table table_name(
字段名 字段類型 [約束] [comment '註釋'],
...
字段名 字段類型 [約束] [comment '註釋']
) [comment '表註釋']
約束
not null 非空
unique 唯一
primary key 非空且唯一
default 默認值
auto_increment 自動增長
foreign key 外鍵
字段類型
| 字符串類型 |
描述 |
數值類型 |
描述 |
日期類型 |
描述 |
| tinyint |
小整數值 |
char |
定長字符串 |
date |
YYYY-MM-DD |
| smallint |
大整數值 |
varcahr |
可變長字符串 |
time |
HH:MM:SS |
| mediumint |
大整數值 |
tinyblob |
小於255字符的二進制字符串 |
year |
YYYY |
| int |
大整數值 |
tinytext |
短文本字符串 |
datetime |
YYYY-MM-DD HH:MM:SS |
| bigint |
極大整數值 |
blob |
二進制長字符串 |
|
|
| float |
單精度浮點數 |
text |
長文本字符串 |
|
|
| double |
雙精度浮點數 |
mediumblob |
中等二進制長字符串 |
|
|
| decimal |
小數值(精度更高) |
mediumtext |
中等文本字符串 |
|
|
|
|
longblob |
二進制極長字符串 |
|
|
|
|
longtext |
極長文本字符串 |
|
|
表的修刪查
-- 查詢所有數據庫的表
show tables;
-- 查詢表結構
desc table_name;
-- 查詢建表語句
show create table table_name;
-- 增加字段
alter table table_name add 字段 類型 [comment '註釋'] [約束]
-- 修改字段類型
alter table table_name modify 字段 新類型;
-- 修改字段名和類型
alter table table_name change 舊名 新名 類型 [comment '註釋'] [約束];
-- 刪除字段
alter table table_name drop column 字段;
-- 修改表名
alter table table_name rename to 新表名;
-- 刪除表
drop table [if exists] table_name;
表-DML
表的增刪改
-- 指定字段插入
insert into table_name(字段1,字段2) values(值1,值2);
-- 插入所有字段
insert into table_name values(值1,值2,...);
-- 批量插入
insert into table_name(字段1,字段2) values(值1,值2), (值3,值4);
insert into table_name values(值1,值2,值3), (值4,值5,值6);
-- 修改數據
update table_name set 字段1=值1,字段2=值2 [where 條件];
-- 刪除數據
delete from table_name [where 條件];
表-DQL
表的查詢語句
-- 查詢多個字段
select 字段1,字段2,字段3... from 表名;
-- 查詢所有字段
select * from 表名;
-- 為字段起別名
select 字段1 [as 別名1], 字段2 [as 別名2] from 表名;
-- 去重
select distinct 字段1,字段2 from 表名;
| 聚合函數 |
功能 |
| count() |
統計數量 |
| sum() |
求和 |
| avg() |
求平均值 |
| max() |
求最大值 |
| min() |
求最小值 |
select 字段列表
from 表名列表
[where 條件列表]
[group by 分組字段]
[having 分組條件]
[order by 排序字段 [asc 升序/desc 降序]]
[limit 索引,數量]
沒有顯式指定 GROUP BY 子句時,模式要求 SELECT 列表中的所有非聚合列必須包含在聚合函數中