Mysql的命令大全
一、数据库
1、创建数据库
create database 数据库名 charset utf8;
2、查看数据库
show databases; select databse();
3、删除数据库
drop databse 数据库名;
4、使用数据库
use 数据库名;
二、数据表
1、创建表
create table 表名(字段名 类型);
2、查看表
show tables;
3、修改表
alter table 表名 modify 字段名 char(6); # 修改字段数据类型
alter table 表名 rename 新表名; # 修改表名
alter table 表名 add 字段名 数据类型; # 新增字段
alter table 表名 drop 字段名; # 删除字段
alter table 表名 chaneg 旧字段名 新字段名 数据类型; #修改字段名
4、查看表结构
desc 表名;
5、删除表
drop table 表名;
三、数据
1、插入数据
insert into 表名(字段名) values(数据)
2、查看数据
select 字段名 from 表名; select * from 表名;
3、修改数据
update 表名 set 字段名="";
4、删除数据
delete from 表名;
四、数据类型
1、数值类型
类型 | 大小 |
---|---|
int(整数) | 4字节 |
float(浮点数) | 4字节 |
double(浮点数) | 8字节 |
smallint(整数) | 2字节 |
bigint(整数) | 8字节 |
2、日期类型
类型 | 格式 |
---|---|
year | YYYY(2014) |
date | YYYY-MM-DD(2014-12-31) |
time | HH:MM:SS(11:59:30) |
datetime | YYYY-MM-DD HH:MM:SS |
timestamp | YYYYMMDD HHMMSS |
3、字符类型
类型 | 区别 |
---|---|
char | (定长)处理速度更快 |
vachar | (不定长)存储空间少 |
4、枚举类型与集合类型
类型 | 区别 |
---|---|
enum(枚举) | 在给定范围选一个值 |
set(集合) | 在给定范围选多个值 |
五、约束条件
1、完整性约束
create table students(name char(16),sex not null default '男'); # 如果输入性别为空,则默认为男
2、唯一性约束
create table students(id int unique,name char(16) unique); # unqie为唯一,可以有多个
3、主键
create table students(id int primary key,name char(16)); # 主键不能为空,且必须唯一
create table students(id int ,name char(16),primary key(id,name)); # 联合主键
4、自增
create table students(id int primary key auto_increment );
5、外键
create table students(id int, name char(6),foreign key(class_id) references class(id));
六、单表记录查询
1、定义显示格式
select concat('姓名:',name,'年龄',age)as decs from students;
2、去重
select distinct name,age from students;
3、条件约束
select * from students where age>=18; # 单条件查询 select * from students where age>=18 and sex="男"; # 多条件查询 select * from students where age between 18 and 25; # 范围查询 select * from students where name in ('hhq','zxy'); # 包含查询 select * from students where name like "黄%"; # 模糊查询
4、分组查询
聚合函数 | 作用 |
---|---|
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 总值 |
count | 计数 |
select age,count(age) as '年龄人数' from students group by age;
5、过滤
select age,count(age) as '年龄人数' from students group by age having 年龄人数>25;
6、排序
select age from students order by age asc; # 升序,默认升序 select age from students order by age desc; # 降序
7、限数
select * from students limit 10;
七、多表记录查询
1、基础查询(本质)
select * from studends,class where students.cls_id=class.id;
2、内连接
select * from students inner join class on students.cls_id=class.id; # 查询2张表的共同部分
3、左连接
select * from students left join class on students.cls_id=class.id; # 以左表为准,查询2张表的共同部分
4、右连接
select * from students right join class on students.cls_id=class.id; # 以右表为准,查询2张表的共同部分
5、外连接
select * from students left join class on students.cls_id=class.id union select * from students right join class on students.cls_id=class.id; #同时以左表和右表为准,查询记录
八、视图
1、创建视图
create view 视图名 as select * from students where age>18;
2、修改视图
alter view 视图名 as select * from students where age>20;
3、删除视图
drop view 视图名;
九、事务
1、开启事务
start transaction; 或者 begin;
2、提交事务
commit;
3、回滚
rollback;
十、索引
1、创建索引
create index 索引名 on 表名(字段名);
2、查看表索引
select index from 表名;
十一、SQL优化
1、explain语句
explain select id from user where id=1;
2、profile执行耗时
select have_profiling; # 是否支持profile select @@profiling; # 是否开启profile set @@profiling=1; # 设置开启profile show profiles; # 查看每条sql耗时操作 show profile for query 具体ID; # 查看单条sql每个阶段耗时操作
十二、锁
1、全局锁
对所有表进行锁定,只能进行查询操作,不能进行增删改操作。
flush tables with read lock; # 加全局锁 unlock tables; # 解锁
2、表级锁
(1)表锁
lock tables 表名 read/write; # 添加读锁/写锁 unlock tables; # 解锁
3、行级锁
(1)行锁
SELECT * FROM 表名 WHERE id = 1 LOCK IN SHARE MODE; # 添加共享锁 SELECT * FROM products WHERE id = 1 FOR UPDATE; # 添加排他锁
(图片来源网络,侵删)
(图片来源网络,侵删)
(图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。