mysql启动与停止
net start mysql80
net stop mysql80
mysql客户端连接
mysql
使用该命令需要本地配置一些环境
mysql -u 用户名 -p
数值类型
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
FLOAT, DOUBLE
如果数值非负,则可以在类型后加[UNSIGNED]
字符串类型
CHAR, VARCHAR, TINYBLOB, TINYTEXT, BLOB, TEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB, LONGTEXT
日期类型
DATA, TIME, YEAR, DATATIME, TIMESTAMP
在命令终端操作指令时,需要添加分号作为结束标志,而其他一些MYSQL的图像化界面软件程序中,分号是可选的。
#查询所有数据库
SHOW DATABASES;
#查询当前所在数
SELECT DATABASE();
#创建数据库
CREATE DATABASE [IF NOT EXISTS]数据库名[DEFAULT CHARSET 字符集][COLLATE 排序规则]
CREATE DATABASE mydatabase DEFAULT CHARSET UTF8MB4;#示例
#数据库名
DROP DATABASE[IF EXISTS]
#使用并进入到该数据库
USE 数据库名
#查询当前所在数据库中所有表
SHOW TABLES;
#查询表中结构(显示表中各字段信息)
DESC 表名;
#显示创建指定表的MYSQL语句
SHOW CREATE TABLE 表名;
#创建表
CREATE TABLE 表名(
字段1名称:字段1的数据类型[COMMENT 字段1的注释],
字段2名称:字段2的数据类型[COMMENT 字段2的注释],
......
字段n名称:字段n的数据类型[COMMENT 字段n的注释]
)[COMMENT 本表的注释];
#修改表名
ALTER TABLE 表名 RENAME TO 新表名
#删除表
DROP TABLE[IF EXISTS] 表名;
#清空表
TRUNCATE TABLE 表名;#实际是表的重构建
#添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释][约束];
#修改字段名和字段类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长短);
#修改字段名和字段类型
ALTER TABLE CHANGE 旧字段名 新字段名 类型(长度)[COMMENT][约束];
ALTER TABLE 表名 DROP 字段名;
INSERT INTO 表名 (字段1, 字段2...)VALUES(值1,值2...),(值1, 值2...)
#当不写明字段时,默认为全部字段添加该数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2...[where 条件];
DELETE FROM 表名 [WHERE 条件]
DQL的编写顺序
SELECT ... FROM ... WHERE ... GROUP BY ...
HAVING ... ORDER BY ... LIMIT ...
DQL的执行顺序
FROM ... WHERE ... GROUP BY ... HAVING ...
SELECT ... ORDER BY ... LIMIT ...
利用这样的执行顺序,我们可以做一些例如起别名的操作.
查询多个字段
SELECT 字段1, 字段2, 字段3...FROM 表名;
SELECT * FROM 表名
#为了增加代码的可读性,不建议使用*这类的通配符
设置别名
SELECT 字段1[AS 别名1],字段2[AS 别名2]... FROM 表名;
#把字段名替换成别名
去除重复字段
SELECT DISTINCT 字段列表 FROM 表名;
#当选择多个字段时,只要两行中一个字段的数据不同,都不会去重。
语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件
>, >=, <, <=, =, (<>, !=)
BETWEEN...AND... #(最小值,最大值)
IN(...) #(1, 2, 4, 8)
LIKE 占位符(_, %) #LIKE '__x_', LIKE '%x'
IS NULL, (AND, &&), (OR, ||), (NOT, !)
语法
SELECT 聚合函数 FROM 表名
聚合函数
count 统计数量
max 取最大值
min 取最小值
avg 求平均值
sum 求和
#select sum(字段名) from 表名 [where 条件]
#字段必须是数值类型,否则返回0或者按非预期方式计算出的值
语法
SELECT 字段显示列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名[HAVING 分组过滤条件]
#统计男女性别的个数,并将性别及对应的数量大于3显示出来
SELECT gender, COUNT(*) FORM 表名 GROUP BY gender HAVING COUNT(*) > 3;
在数据处理的优先度上
WHERE > 聚合函数 > HAVING
分组之后查询的一般是聚合函数和被分组字段, 查询其他字段无意义.
语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2...;
排序方式
ASC #升序排序(默认值)
DESC #降序排序
排序方式2是对排序字段1相同值按字段2进行二次排序
语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引序数, 查询记录数
起始索引序数的下一个值开始,向下打印查询记录数个值
起始索引序数可省略不写,默认为0
查询用户
USE mysql;
SELECT * FROM user;
#固定查询字段
创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
主机名
localhost 只能在本机访问数据库
% 可以在任意主机访问连接数据库
修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password(#密码的处理方式) BY '新密码';
删除用户
DROP USER '用户名'@'主机名';
查询权限
SHOW GRANTS FOR '用户名'@'主机名';
授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
多个权限之间通常使用逗号分隔
授权时可使用 * 对数据库名和表名进行通配操作