MySql数据库基本命令大全

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 关系型数据库 MySQL
初步了解MySQL数据库的基本命令
初步了解MySQL数据库的基本命令
46 0
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
1月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
25 1
|
2月前
|
关系型数据库 MySQL 数据库
6-2|测试连接数据库的命令
6-2|测试连接数据库的命令
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
31 3
|
2月前
|
存储 关系型数据库 MySQL
MySQL基础命令及使用示例
这些基础命令构成了与MySQL数据库交互的核心,理解并掌握它们对于进行有效的数据库操作至关重要。在实际使用中,建议结合实际案例和需求来练习这些命令,以加深理解和提高效率。
68 4
|
1月前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
23 0
|
1月前
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
66 0
|
4月前
|
存储 关系型数据库 MySQL
(十五)MySQL命令大全:以后再也不用担心忘记SQL该怎么写啦~
相信大家在编写SQL时一定有一个困扰,就是明明记得数据库中有个命令/函数,可以实现自己需要的功能,但偏偏不记得哪个命令该怎么写了,这时只能靠盲目的去百度,以此来寻找自己需要的命令。
167 28
|
4月前
|
NoSQL MongoDB 数据库
Mongo 数据库备份和恢复命令
Mongo 数据库备份和恢复命令
248 4
下一篇
无影云桌面