【MYSQL】MYSQL数据库命令大全

这篇具有很好参考价值的文章主要介绍了【MYSQL】MYSQL数据库命令大全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌷 1. root 用户登录

  • root 用户登录
mysql -u root -p
  • 使用mysql数据库
use mysql;
  • 更新用户表的root账户,设置为任意ip都可以访问,密码修改为123456
update user set host="%",authentication_string=password('root') where user="root";
  • 刷新权限
flush privileges;
  • 退出
quit;

🌷 2. 数据库的操作

  • 显示当前的数据库
SHOW DATABASES;
  • 创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name CHARACTER SET utf8mb4;

MYSQL中允许用户使用关键字做为数据库名,但是需要用反引号把关键字引起来

  • 查看数据库字符集
show variables like '%character%';
  • 使用数据库
use 数据库名;
  • 查看下当前使用的是哪个数据库:
select database();
  • 删除数据库
DROP DATABASE [IF EXISTS] db_name;

🌷 3. 常用数据类型

【MYSQL】MYSQL数据库命令大全
【MYSQL】MYSQL数据库命令大全
【MYSQL】MYSQL数据库命令大全

🌷 4. 表的操作

  • 查看表结构
desc 表名;

⭐ 4.1 创建表

CREATE TABLE table_name (`
`field1 datatype,`
`field2 datatype,`
`field3 datatype);`
-- 可以使用comment增加字段说明

🍁 约束类型

NOT NULL -- 指示某列不能存储 NULL 值。
UNIQUE -- 保证某列的每行必须有唯一的值。
DEFAULT -- 规定没有给列赋值时的默认值。
PRIMARY KEY -- NOT NULL 和 UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标识,
auto_increment--对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。
FOREIGN KEY -- 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK -- 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。
  • 外键使用语法:
foreign key (字段名) references 主表() 

案例:

-- 设置学生表结构
create table student (
	id int primary key auto_increment,
    sn int unique comment '学号',
    sex varchar(1),
    check (sex ='男' or sex='女'),
    name varchar(255) default 'unkown', 
    qq_mail VARCHAR(20),
	classes_id int not null,
	FOREIGN KEY (classes_id) REFERENCES classes(id)
);

⭐ 4.2 插入

INSERT [INTO] table_name [(column [, column] ...)]
VALUES(value_list) [, (value_list)] ...

案例:

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO student VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO student VALUES (101, 10001, '孙悟空', '11111');
-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id, sn, name) VALUES
 (102, 20001, '曹孟德'),
 (103, 20002, '孙仲谋');

从另一张表中复制:

-- 将学生表中的所有数据复制到用户表
insert test_user(name,email) select name,qq_mail from student; 

⭐ 4.3 查询

MYSQL语句的执行顺序:from -> where -> select -> group by

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

案例:

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。
SELECT * FROM exam;
-- 指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam;
-- 表达式不包含字段
SELECT id, name, 10 FROM exam;
-- 表达式包含一个字段
SELECT id, name, english + 10 FROM exam;
-- 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam;
-- 结果集中,表头的列名=别名
SELECT id, name, chinese + math + english 总分 FROM exam;

🍁 去重:DISTINCT

-- 去重结果
SELECT DISTINCT math FROM exam;

🍁 排序:ORDER BY

– ASC 为升序(从小到大)
– DESC 为降序(从大到小)
默认为 ASC

 --查询同学姓名和 qq_mail,按 qq_mail 排序显示
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student  ORDER BY qq_mail DESC;

🍁 条件查询:WHERE

【MYSQL】MYSQL数据库命令大全

【MYSQL】MYSQL数据库命令大全

案例:

-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权
 查询 qq_mail 已知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NOT NULL;

🍁 分页查询:LIMIT

– 起始下标为 0
– 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
– 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
– 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

案例:

-- 第 1 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 0;
-- 第 2 页
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 3;
-- 第 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 6;

🍁 聚合函数

【MYSQL】MYSQL数据库命令大全

案例:

-- 统计班级共有多少同学
select count(*)from student;
-- 统计班级收集的 qq_mail 有多少个,qq_mail 为 NULL 的数据不会计入结果
select count(qq_mail) from student where qq_mail != null;
-- 统计数学成绩总分
select sum(math) from exam;
-- 不及格同学的数学成绩,没有结果,返回 NULL
select sum(math) from exam where math < 60;
-- 统计平均总分
select avg(chinese + math + english) from exam;
-- 返回英语最高分
select max(english) from exam;
-- 返回 > 70 分以上的数学最低分
select min(math) from exam where math > 70;

🍁 GROUP BY子句

select column1, sum(column2), .. from table group by column1;
按group by 中的字段分组查询

-- 查询每个角色的最高工资、最低工资和平均工资:
select role,max(salary),min(salary),avg(salary) from emp group by role;

🍁 HAVING

--显示平均工资低于1500的角色和它的平均工资
select role,max(salary),min(salary),avg(salary) from emp group by role having avg(salary) < 1500;
select role,avg(salary) from emp where salary < 1500 group by role;

🍁 内连接

select 字段 from1 别名1 [inner] join2 别名2 on 连接条件 and 其他条件;
select 字段 from1 别名1,2 别名2 where 连接条件 and 其他条件;

案例:

select sco.score from student stu inner join score sco on stu.id=sco.student_id
and stu.name='许仙';
-- 或者
select sco.score from student stu, score sco where stu.id=sco.student_id and
stu.name='许仙';

🍁 外连接

– 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
– 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;
-- “老外学中文”同学 没有考试成绩,也显示出来了
select * from student stu left join score sco on stu.id=sco.student_id;
-- 对应的右外连接为:
select * from score sco right join student stu on stu.id=sco.student_id;

🍁 自连接

自连接是指在同一张表连接自身进行查询。

案例:

-- 显示所有“计算机原理”成绩比“Java”成绩高的成绩信息
SELECT s1.* FROM score s1,score s2 
WHERE
 s1.student_id = s2.student_id
 AND s1.score < s2.score
 AND s1.course_id = 1
 AND s2.course_id = 3;

🍁 子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询

案例:查询“语文”或“英文”课程的成绩信息

  1. [NOT] IN关键字
-- 使用IN
select * from score where course_id in (select id from course where
name='语文' or name='英文');
-- 使用 NOT IN
select * from score where course_id not in (select id from course where
name!='语文' and name!='英文');

  1. [NOT] EXISTS关键字
-- 使用 EXISTS
select * from score sco where exists (select sco.id from course cou 
where (name='语文' or name='英文') and cou.id = sco.course_id);
-- 使用 NOT EXISTS
select * from score sco where not exists (select sco.id from course cou 
where (name!='语文' and name!='英文') and cou.id = sco.course_id);

🍁 合并查询

union
该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。

案例:查询id小于3,或者名字为“英文”的课程:

select * from course where id < 3
union
select * from course where name='英文';

union all
该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

案例:查询id小于3,或者名字为“Java”的课程

- 可以看到结果集中出现重复数据Java
select * from course where id<3
union all
select * from course where name='英文';

⭐ 4.4 修改

UPDATE table_name SET column = expr [, column = expr ...] [WHERE ...]
[ORDER BY ...] [LIMIT ...]

案例:文章来源地址https://www.toymoban.com/news/detail-430411.html

-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3;
-- 将所有同学的语文成绩更新为原来的 2 倍
UPDATE exam_result SET chinese = chinese * 2;

⭐ 4.5 删除

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = '孙悟空';
-- 删除整表数据
DELETE FROM for_delete;

🌷 5. 索引

  • 查看索引
show index from 表名;
  • 创建索引
create index 索引名 on 表名(字段名);
create index 索引名 on 表名(字段名1,字段名2...);
  • 删除索引
drop index 索引名 on 表名;

🌷 6. 事务

  • 使用
1)开启事务:start transaction;2)执行多条SQL语句
(3)回滚或提交:rollback/commit;
说明:rollback即是全部失败,commit即是全部成功。
  • 查看当前事务的隔离级别
show variables like '%tx_isolation'; 
  • 修改事务的隔离级别
set @@global.tx_isolation = 'READ-UNCOMMITTED'; //全局
set @@session.tx_isolation = 'READ-UNCOMMITTED'; //当前session
set @@tx_isolation = 'READ-UNCOMMITTED'; //仅对下⼀个事务⽣效

到了这里,关于【MYSQL】MYSQL数据库命令大全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 珍藏多年的MySQL函数大全笔记,掌握数据库真不难

    做程序员的谁会离得开数据库呢? 今天就来分享一下我整理的MySQL的常用函数,基本上囊括了平时要用的函数,它们已经陪我走过了不少年头了,风里来雨里去,缝缝补补又几年,希望能帮到你们! 如果数据库函数你能用得好,其他的东西也就水到渠成了。 序号 函数 说明

    2023年04月23日
    浏览(55)
  • MYSQL数据库连接字符串(connectionString)配置参数大全详解

    请参考原文:MYSQL数据库连接字符串(connectionString)配置参数大全详解

    2024年02月12日
    浏览(58)
  • MySQL数据库命令

    一、数据库 二、表 三、操作数据 四、查询数据 五、单表操作 5-1 排序 5-2 聚合 5-3 分组 5-4 主键 5-5 唯一约束 5-6 非空约束 5-7 事物 5-8 事务四大特性 特性 含义 原子性 每个事务都是一个整体,不可再拆分。事务中所有的sql要么全部执行成功,要么都失败 一致性 事务在执行前

    2024年02月02日
    浏览(54)
  • MySql——数据库常用命令

    2024年02月14日
    浏览(47)
  • 数据库监控与调优【七】—— MySQL数据库诊断命令

    TIPS 本文基于MySQL 8.0,理论支持MySQL 5.0及更高版本。 本文整理了常用的MySQL诊断命令,可以帮助我们了解数据库的运行情况。 作用: SHOW [FULL] PROCESSLIST用于查看当前正在运行的线程。如果执行此命令的用户拥有 PROCESS 权限,则可看到所有线程;否则只能看到自己的线程(即与

    2024年02月11日
    浏览(50)
  • mysql导出所有数据库命令

    导入所有数据库命令:  在开发过程中,我们经常会需要备份数据库,以防意外情况丢失数据,而mysql的mysqldump命令可以做到。 格式:mysqldump -u用户名 -p密码 数据库名 表名 具体要保存的路径和文件名。 下面介绍如何使用mysqldump命令导出或备份mysql数据库和数据表: 一、在

    2024年02月06日
    浏览(56)
  • MySQL 数据库的命令操作

    1.数据 (Data) 描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等 以“记录”形式按统一的格式进行存储 2.表 将不同的记录组织在一起 用来存储具体数据 3.数据库 表的集合,是存储数据的仓库 以一定的组织方式存储的相互有关的数据集合 是按照数据结构

    2024年02月09日
    浏览(61)
  • MySQL数据库基本命令操作

    一、MySQL基本命令操作指令 二、查看数据库结构 1.查看当前服务器中的数据库 2.查看数据库中包含的表 3.查看表的结构(字段) 三、SQL语句 SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。 1、SQL语言分类 四、SQL语句操作 1、创建及删

    2024年02月10日
    浏览(82)
  • Mysql 命令行 连接远程/本地数据库

    Mysql 命令行 连接本地数据库 MySQL登录 mysql -uroot -p密码 mysql -hip -uroot -p连接目标的密码 mysql --host=ip --user=root --password=连接目标的密码 Mysql 命令行 连接远程数据库 连接 远程的数据库 mysql --host=ip --user=root --password=连接目标的密码 有两个方法 如果 你的 mysql 数据库没有 密码 最

    2024年02月07日
    浏览(49)
  • MySQL 数据库导入命令 SOURCE 详解

    在 MySQL 数据库中,可以使用 SOURCE 命令来执行 SQL 脚本文件,并将其内容导入到当前数据库中。这是一个非常有用的命令,特别是当需要导入大量数据或者执行复杂的数据库操作时。本文将详细介绍 SOURCE 命令的使用方法,并提供相应的源代码示例。 使用 SOURCE 命令导入 SQL 脚

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包