脚本中写注释(#,--,/* */)
操作库
show databases; | 显示由哪些数据库 |
create database db1; | 创建数据库 |
create database if not exists db1; | 创建前进行判断是否已经存在 |
drop database db2; | 删除数据库 |
drop database if exists db2; | 删除数据库前进行判断 |
use db1; | 使用对应表 |
查询表
show tables; | 显示当前数据库有哪些表 |
desc tb_user; | 查询里面表的结构信息 |
创建表
create table tb_user( id int, username varchar(20), password varchar(32) ); | 创建表名tb_user,表中包含id、用户名、密码。先写变量名后写变量类型(->是在MySQL命令中自动添加的,忽略) |
数据库中变量类型
删除表格
drop table tb_user; | 删除表 |
drop table if exists tb_user; | 判断如果存在再删除表 |
修改表
alter table tb_user rename to user; | 更改表名 |
alter table user add address varchar(50); | 表中添加一列 |
alter table user modify address varchar(40); | 修改数据类型 |
alter table user change address addr varchar(50); | 修改列名和数据类型 |
alter table user drop addr; | 删除列 |
添加数据
insert into user(id, username, password, address) values(2, '李四', 'hh', 'ww'); | 在对应位置添加数据 |
insert into user values(3, "hgx", "密码", "昭通"); | 添加数据可以不写结构,但是还是写了好看懂 |
insert into user values (3, "hgx", "密码", "昭通"), (4, "hhh", "密码", "北京"); | 一次添加多个 |
查询数据
select * from user; | 查询user表中所有数据 |
条件查询
-- 查询语法
select * from user;# 显示user表中所有内容
select id, username from user;# 从表中查询这两列出来显示
select distinct id, username from user;# 去出重复后显示
select distinct id, username as 用户名 from user; # 更改标题名显示,其中as可以不写
select distinct id, u.用户名 from user as u; # 多个表中的别名,用,号隔开
select * from user where username = 'hhh';# =(等于)、>大于、<小于、and与、!=不等于、or或
select * from user where password between 111 and 123456;# 显示这个范围以内的,或用not between,也可以不用between,在中间添加&&
select * from user where address in ('北京', '昆明');# 显示等于in中描述的数据
select * from user where password is null;# 选择密码设置为空的,这里为空不能用=
select * from user where password is not null; # 选择密码不为空的
select * from user where password like '_2%'; # 查询包含2的,%表示多个任意字符,_表示单个任意字符
排序查询
# 排序查询select 字符列表 from 表名 order by 排序字段名1,字段名2...; 默认ASC升序;DESC降序
select * from user order by address;# 按照地址默认升序排序
select * from user order by address desc;# 降序排序
select * from user order by password, address; # 排序优先使用第一个排序,当第一个相同的时候用第二个排序
-- 按照id数字排序,limit指定显示个数,limit 0,5;从第0个开始显示5个
SELECT * FROM tb_device_iot where status = '1' group by id limit 5;
聚合函数
-- 聚合函数
select count(password) from user;# 统计密码不为空的有多少个
select count(*) from user;# 统计总的有多少个
select min(id) from user;# 查询ID的最小值
select max(id) from user;# 查询ID的最大值
select sum(id) from user;# 全部ID求和
select avg(id) from user;# ID求平均值
分组查询
分页查询
# 分页查询
select * from user limit 2; # 查询2条数据
select * from user limit 0, 2;# 查询数据从第0个开始,每页显示2条数据
select * from user limit 1, 2;# 分页排列的第2个开始,每页显示2条数据
修改数据
-- 修改数据,由于address不是KEY,会报错,需要用以下第一条命令更改模式才能正确执行
SET SQL_SAFE_UPDATES = 0;
update user set address = '上海' where password = 'hh';
update user set address = '昆明', password = '123456' where username = '李四';
删除数据
-- 删除数据,如果不在后面加条件判断会全部删除。 delete from 表名 [where 条件];
SET SQL_SAFE_UPDATES = 0; 需要进入安全模式才能操作
delete from user where username = '张三';
全局设置
// 查看日志
show variables like 'general_log'; // 查看日志是否开启
set global general_log=on; // 开启日志,远程可能权限不足
// 根据提示文件名,查看日志,tail查看最后100行
cat /var/lib/mysql/instance-vnjumxyb.log | tail -n 100
// 服务运行缓慢,增加连接个数
show variables like 'max_connections'; // 显示最大连接数
show status like 'thread%'; // 显示当前操作连接数
set global max_connections= 500; // 设置最大连接数
get global max_connections; // 查询最大连接数