[沫忘录]MYSQL基础(一)

[沫忘录]MYSQL基础(一)

系统控制台命令

mysql启动与停止

net start mysql80
net stop mysql80

mysql客户端连接

mysql 使用该命令需要本地配置一些环境

mysql -u 用户名 -p

DDL数据控制语言

MYSQL的数据类型

数值类型

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 字段名;

DML数据操作语言

添加数据
INSERT INTO 表名 (字段1, 字段2...)VALUES(值1,值2...),(值1, 值2...)
#当不写明字段时,默认为全部字段添加该数据
修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2...[where 条件];
删除数据
DELETE FROM 表名 [WHERE 条件]

DQL数据查询语言

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

DCL数据控制语言

用户管理

查询用户

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 '用户名'@'主机名';
  • 多个权限之间通常使用逗号分隔

  • 授权时可使用 * 对数据库名和表名进行通配操作

你可能感兴趣的:(mysql,数据库)