MySql数据库基本命令大全

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
SQL 数据可视化 IDE
开发数据库不想写命令?YashanDB Developer Center 帮你轻松搞定
YashanDB Developer Center(YDC)是一款可视化的数据库开发工具,专为提升数据库开发效率而设计。它通过图形化对象管理让数据库对象清晰可见,提供智能SQL编辑器支持语法高亮与自动补全,实现PL调试的图形化操作,帮助快速定位问题。此外,操作记录可追溯,多端灵活部署,适配多种场景。无论是中大型企业研发团队,还是不熟悉命令行的业务开发者,YDC都能显著优化开发体验,堪称YashanDB的“可视化IDE”。
|
29天前
|
SQL 分布式计算 数据库
【YashanDB知识库】Hive 命令工具insert崖山数据库报错
【YashanDB知识库】Hive 命令工具insert崖山数据库报错
|
30天前
|
SQL 分布式计算 数据库
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
|
1月前
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令1——数据库操作
本节介绍了 MongoDB 中数据库的选择、创建与删除操作。使用 `use 数据库名称` 可选择或创建数据库,若数据库不存在则自动创建。通过 `show dbs` 或 `show databases` 查看所有可访问的数据库,用 `db` 命令查看当前数据库。注意,集合仅在插入数据后才会真正创建。数据库命名需遵循 UTF-8 格式,避免特殊字符,长度不超过 64 字节,且部分名称如 `admin`、`local` 和 `config` 为系统保留。删除数据库可通过 `db.dropDatabase()` 实现,主要用于移除已持久化的数据库。
68 0
|
4月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
6月前
|
关系型数据库 MySQL 数据库
Mysql 常用命令
Mysql 常用命令
59 0
|
6月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
71 1
|
6月前
|
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`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
6月前
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
198 0
|
7月前
|
关系型数据库 MySQL 数据库
6-2|测试连接数据库的命令
6-2|测试连接数据库的命令

推荐镜像

更多