MySql数据库基本命令大全

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySql数据库基本命令大全 创建数据库test1 create database test1; 1数据库查询 show databases; 1选择要操作的数据库 use test1 1查看 test1 数据库中创建的所有数据表 show tables; 1创建表 # CREATE .

MySql数据库基本命令大全

创建数据库test1

create database test1;
  • 1

数据库查询

show databases;
  • 1

选择要操作的数据库

use test1
  • 1

查看 test1 数据库中创建的所有数据表

show tables;
  • 1

创建表

# CREATE TABLE   tablename (column_name_1 column_type_1 constraints,column_name_2  column_type_2  constraints , ……column_name_n  column_type_n constraintscreate table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2));
  • 1
  • 2

int(2)表示当数值宽度小于2位时,在数字前用0填满宽度,如果只用int,不指定宽度则默认为int(11)。 
decimal(10,2)decimal表示十进制,(10,2)表示该值一共显示10位数字,其中有2位在小数点后面,10和2又称为精度和标度。decimal在不指定精度时,默认的整数位为 10,默认的小数位为 0

查看表

desc emp;
  • 1

删除表

drop table emp;
  • 1

修改表类型

# ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
alter table emp modify ename varchar(20);
  • 1
  • 2

增加表字段

# ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]
alter table emp add column age int(3);
  • 1
  • 2

删除表字段

# ALTER TABLE tablename DROP [COLUMN] col_name
alter table emp drop column age;
  • 1
  • 2

字段改名

# ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name]
alter table emp change age agel int(4);
  • 1
  • 2

注意:change 和 modify都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。但是 change 的优点是可以修改列名称,modify则不能。

修改字段排列顺序

alter table emp add birth date after ename;
alter table emp modify age int(3) first;
  • 1
  • 2

表改名

# ALTER TABLE   tablename RENAME [TO] new_tablename
alter table emp rename emp1;
  • 1
  • 2

插入记录

# INSERT INTO   tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn);
insert into emp(ename,hiredate,sal,deptno) values('zzx1','2000-01-01','2000',1);
  • 1
  • 2
也可以不用指定字段名称,但是 values 后面的顺序应该和字段的排列顺序一致,如:
insert into emp values('lisa','2003-02-01','3000',2);
  • 1
对某些属性未插入时,自动显示为NULL,如:
insert into emp  (ename,sal) values('dony',1000);
  • 1

修改字段排列顺序

alter table emp add birth date after ename;
alter table emp modify age int(3) first;
  • 1
  • 2

一次性插入多条记录

INSERT INTO   tablename   (field1, field2,……fieldn)
VALUES(record1_value1, record1_value2,……record1_valuesn),
(record2_value1, record2_value2,……record2_valuesn),
……(recordn_value1, recordn_value2,……recordn_valuesn);
# 一次插入两条记录
insert into dept values(5,'dept5'),(6,'dept6');
select * from dept;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

更新记录

#UPDATE tablename SET field1=value1,field2.=value2,……fieldn=valuen [WHERE CONDITION]
update emp set sal=4000 where ename='lisa';

##同时更新多个表中数据
#UPDATE t1,t2…tn set t1.field1=expr1,tn.fieldn=exprn   [WHERE CONDITION]
update emp1 a,dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意:多表更新的语法更多地用在了根据一个表的字段,来动态的更新另外一个表的字段

删除记录

# DELETE FROM tablename [WHERE CONDITION]
delete from emp where ename='dony';

##一次删除多个表的数据
#DELETE t1,t2…tn FROM t1,t2…tn [WHERE CONDITION]
delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3; # ????
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注意: 不管是单表还是多表, 不加 where 条件将会把表的所有记录删除, 所以操作时一定要小心。

查询记录

# SELECT * FROM tablename [WHERE CONDITION]
select * from emp;
  • 1
  • 2

其中“*”表示要将所有的记录都选出来,也可以用逗号分割的所有字段来代替,例如

select ename,hiredate,sal,deptno from emp;
  • 1
查询不重复的记录
# 查询emp表中deptno的非重复属性
select distinct deptno from emp;
  • 1
  • 2
条件查询
# 查询emp表中deptno=1时对应的项
select * from emp where deptno=1;
# 多字段条件查询
select * from emp where deptno=1 and sal<3000;
  • 1
  • 2
  • 3
  • 4
排序和限制
# SELECT  *  FROM  tablename  [WHERE  CONDITION] [ORDER  BY  field1  [DESC|ASC] , field2  [DESC|ASC],……fieldn [DESC|ASC]]
#把 emp 表中的记录按照sal高低排序
select * from emp order by sal;
# 对deptno 相同的前两条记录,按照sal由高到低排序
select * from emp order by deptno,sal desc;
  • 1
  • 2
  • 3
  • 4
  • 5

聚合

#SELECT [field1,field2,……fieldn] fun_name FROM tablename [WHERE where_contition] [GROUP BY field1,field2,……fieldn [WITH ROLLUP]] [HAVING where_contition]
'''
fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum (求和)、 count(*) (记录数)、max(最大值)、min(最小值)。
GROUP BY 关键字表示要进行分类聚合的字段, 比如要按照部门分类统计员工数量, 部门就应该写在 group by 后面。
WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
HAVING 关键字表示对分类后的结果再进行条件的过滤
'''
#要 emp 表中统计公司的总人数
select count(1) from emp;
#在此基础上,要统计各个部门的人数
select deptno,count(1) from emp group by deptno;
#既要统计各部门人数,又要统计总人数
select deptno,count(1) from emp group by deptno with rollup;
#统计人数大于 1 人的部门
select deptno,count(1) from emp group by deptno having count(1)>1;
#统计公司所有员工的薪水总额、最高和最低薪水
 select sum(sal),max(sal),min(sal) from emp;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

表连接

select ename,deptname from emp,dept where emp.deptno=dept.deptno;
# 可以列出另一列中不存在的name
select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
  • 1
  • 2
  • 3

子查询

select * from emp where deptno in(select deptno from dept);
#如果子查询记录数唯一,还可以用=代替 in
select * from emp where deptno = (select deptno from dept limit 1);
  • 1
  • 2
  • 3

记录联合

mysql> select deptno from emp 
         -> union all
         -> select deptno from dept;
# 将结果去掉重复记录后显示
mysql> select deptno from emp 
        -> union
        -> select deptno from dept;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

按照层次查看帮助

#用 “?contents” 命令来显示所有可供查询的的分类
? contents
#用“?  类别名称”的方式做进一步查看
 ? data types
#快速查询某项语法
 ? show
#看 CREATE TABLE 的语法
? create table
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
40 0
|
3月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
25 0
|
1月前
|
SQL 关系型数据库 MySQL
|
7天前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
19 0
|
14天前
|
关系型数据库 MySQL
如何解决cmd命令窗口无法运行mysql命令的问题
如何解决cmd命令窗口无法运行mysql命令的问题
10 0
|
1月前
|
Shell Linux 数据库
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
【Shell 命令集合 网络通讯 】Linux 更新邮件别名数据库 newaliases命令 使用指南
29 1
|
1月前
|
监控 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 检查和创建磁盘配额数据库 quotacheck命令使用教程
【Shell 命令集合 磁盘管理 】Linux 检查和创建磁盘配额数据库 quotacheck命令使用教程
30 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 更新locate命令所使用的数据库 updatedb命令解析
【Shell 命令集合 文件管理】Linux 更新locate命令所使用的数据库 updatedb命令解析
155 0
|
1月前
|
存储 关系型数据库 MySQL
|
1月前
|
关系型数据库 MySQL Linux
MySQL启动与登录命令详解
【2月更文挑战第27天】
50 1
MySQL启动与登录命令详解