MySQL - 常用命令
本文章包含数据定义语句、数据操纵语句及数据控制语句,基于Mysql 5.7 环境
数据定义语句(DDL)
数据库操作
- 登录数据库:
-- 连接(地址、端口可不填,默认为localhost:3306)
mysql -h 地址 -P 端口 -u 用户名 -p 密码
1
2
2
- 创建数据库:
create database [if not exists] test;
1
- 查看所有数据库:
show databases;
1
- 选择数据库并使用:
use test;
1
- 查看所有数据表:
show tables;
1
- 删除数据库:
drop database test;
1
表操作
创建
创建表
create [temporary] table [if not exists] [库名.]表名 (表的结构定义) [表选项]
1
- temporary:临时表,会话结束时表自动消失
- 字段的定义:
字段名 数据类型 [not null | null] [default default_value] [auto_increment] [unique [key] | [primary key] [comment 'string']
修改
-- 修改表本身的选项
alter table 表名 表的选项
1
2
2
- 字段改名:
alter table t_user change age age1 int(4);
1
- 修改表字段:
alter table 表名 操作名;
-- 操作名
add[ column] 字段定义 -- 增加字段
after 字段名 -- 表示增加在该字段名后面
first -- 表示增加在第一个
add primary key(字段名) -- 创建主键
add unique [索引名] (字段名) -- 创建唯一索引
add index [索引名] (字段名) -- 创建普通索引
drop[ column] 字段名 -- 删除字段
modify[ column] 字段名 字段属性 -- 支持对字段属性进行修改,不能修改字段名(所有原有属性也需写上)
change[ column] 原字段名 新字段名 字段属性 -- 支持对字段名修改
drop primary key -- 删除主键(删除主键前需删除其auto_increment属性)
drop index 索引名 -- 删除索引
drop foreign key 外键 -- 删除外键
-- eg:
alter table t_user modify uname varchar(20)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- 字段改名:
-- 方式一
alter table 原表名 rename 新表名;
-- 方式二,可将表移动到另一个数据库
rename table 原表名 to [库名.]新表名;
1
2
3
4
2
3
4
- 添加表字段:
alter table t_user add column age int(3);
1
查看
- 查看所有表
show tables [like 't%'];
show tables from 库名;
1
2
2
- 查看表的定义:
desc 表名;
1
- 查看表定义(详细):
show create table 表名 \G
1
删除
- 删除表:
drop table 表名;
1
- 清空表数据:
truncate [table] 表名;
1
- 删除表字段:
alter table 表名 drop column 列名;
1
数据操纵语句(DML)
插入记录
insert [into] 表名 [(字段列表)] values (值列表)[, (值列表), ...]
-- 如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表。
-- 可同时插入多条数据记录!
replace 与 insert 完全一样,可互换
insert [into] 表名 set 字段名=值[, 字段名=值, ...]
1
2
3
4
5
2
3
4
5
- 指定名称插入:
insert into t_user (id,name,age) values ('1','zhangsan',22);
1
- 不指定名称插入:
insert into t_user values ('2','lisi',21);
1
- 批量插入数据:
insert into t_user values('4','wangwu',22),('5','yangyi',23);
1
修改记录
update 表名 set 字段名=新值[, 字段名=新值] [更新条件]
-- eg:
update t_user set id='001',age=25 where name='zhangsan';
1
2
3
4
2
3
4
删除记录
delete from 表名[ 删除条件子句]
⚠没有条件子句,则会删除全部
-- eg:
delete from t_user where name='zhangsan';
1
2
3
4
5
2
3
4
5
查询记录
select 字段列表 from 表名 [其他子句]
-- 可来自多个表的多个字段
-- 其他子句可以不使用
-- 字段列表可以用*代替,表示所有字段
1
2
3
4
2
3
4
- 查询所有记录:
select * from t_user
1
- 查询不重复的记录:
select distinct age from t_user
1
- 条件查询:
select * from t_user where 1=1 and age<22;
1
- 排序和限制:
select * from t_user order by age desc limit 2
1
- 分页查询(查询从第0条记录开始10条):
select * from t_user order by age desc limit 0,10;
1
- 聚合(查询部门人数大于1的部门编号):
select deptno,count(1) from emp group by deptno having count(1) > 1;
1
- 连接查询:
select * from emp e
left join dept d on e.deptno=d.deptno;
1
2
2
- 子查询:
select * from emp
where deptno in (select deptno from dept);
1
2
2
- 记录联合:
select deptno from emp union select deptno from dept
1
其他
每一个命令,没有任何括号修饰的都是必选的。mysql [OPTIONS] [database]
不要在命令行中键入括号本身。
[ ]
:方括号,是可选参数< >
:尖括号,是必选参数[< >]
:[--]
:-
:--
:[< >...]
:|
:
更多:https://www.cnblogs.com/uakora/p/11809501.html
参考资料
- http://www.macrozheng.com/#/reference/mysql