Mysql
数据库
打开:mysql -u root -p
关系型数据库
概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库
特点:
1. 使用表存储数据,格式统一,便于维护。
1. 使用SQL语言操作,标准统一,使用方便。
SQL语法
通用语法:
1.SQL语句可以单行或多行书写,以分号结尾
2.SQL语句可以使用空格/缩进来增强语句的可读性
3.mysql数据库的SQL语句不区分大小写,关键字建议使用大写.
4.注释 单行 :–注释内容或#注释内容(mysql特有)
多行 :/*注释内容*/
SQL分类:
DDL
查询
查询所有数据库
SHOW DATABASE;
查询当前数据库
SELECT DATABASE();
创建
CREATA DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET字符集][COLLATE 排序规则];
字符集建议utf8mb4
删除
DROP DATABASE[IF EXISTS]数据库名;
使用
USE 数据库名;
DDL-表结构-查询
查询当前数据库所有表
show tables;
查询表结构
desc 表名;
查询指定表的建表语句
show create table 表名;
DDL-表操作-创建
create table 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释]
)[COMMENT 表注释];
数值类型
age TINYINT UNSLGNED;无符号类型 unsigned
age TINYINT SLGNED ; 有符号类型 signed
字符串类型
char(x)和varchar(x)都要带参数,表示存储字符串的个数
char()性能好 gander char(1)
varchar()性能差 name varchar(10); 定长用char,不定长用varchar
日期类型
DDL-表操作-修改
添加字段
alter table 表名 add 字段名 类型(长度)[comment 注释];
修改数据类型
alter table 表名 modify 字段名 新数据类型(长度)
修改字段名和字段类型
alter 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
修改表名
alter table rename to 表名
DDL-表操作-删除
删除字段
alter table 表名 drop 字段名;
删除表
drop table[if exists] 表名;
删除指定表,并重新创建该表
truncate table 表名
DML
DML-添加数据
给指定字段添加数据
insert into 表名(字段1,字段2...)values(值1,值2,...);
给全部字段添加数据
insert into表名 values(值1,值2,...);
批量添加数据
insert into 表名(字段名1,字段名2,...) values(值1,值2,...),(值1,值2,...),(值1,值2,...);
insert into 表名 values(值1,值2,...),(值1,值2,...);
注意:
插入数据时,指定字段顺序需要与值的顺序一一对应。
字符串和日期型的数据应该包含在引号中
输入的数据大小,应该在字段的规定范围内。
DML-修改数据
update 表名 set 字段名1=值1,字段2=值2,...[where 条件];
DML-删除数据
delete from 字段 where 条件
注意:
*delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
*delete 语句不能删除每一个字段的值(可以使用update)
DQL
DQL-语法
select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字段列表
limlt
分页参数
DQL-基本查询
查询多个字段
select 字段1,字段2.....from 表名;
select * from 表名;(查询返回所有字段)
设置别名
select 字段1 [as 别名1],字段2 [as 别名2] ... from 表名;
去除重复记录
select distinct 字段列表 from 表名;
DQL-条件查询(where)
语法
select 字段列表 from 表名 where 条件列表;
'–'两个字符,‘%x’最后一个字符为x;
DQL-聚合函数
含义:将一列数据作为一个整体,进行纵向计算。
语法
select 聚合函数(字段列表) from 表名 [where...];
注意:null值不参与所有
DQL-分组查询
语法
select 字段列表 from 表名[where 条件 ] group by 分组字段名[having 分组后过滤条件]
注意:执行顺序:where>聚合函数>having.
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
DQL-排序查询
语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
排序方式
asc:升序(默认)
desc:降序
注意:如果是多字段排序,当第一个字段值相同是,才会根据第二个字段进行排序
DQL-分页查询
语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
注意
起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
DQL-查询顺序
DCL
DCL-管理用户
查询用户
use mysql;
select * from user;
创建用户
crate user '用户名'@'主机名' identified by '密码';
主机名为%时,意思是在任意主机上访问
修改密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
删除用户
drop user '用户名'@'主机名';
DCL-权限控制
查询权限
show grants for '用户名'@'主机名';
授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
注意
多个权限之间,使用逗号分隔
授权时,数据库名和表名可以使用*进行通配,代表所有