【MYSQL】MYSQL数据库命令大全

news2024/11/24 17:31:29

文章目录

  • 🌷 1. root 用户登录
  • 🌷 2. 数据库的操作
  • 🌷 3. 常用数据类型
  • 🌷 4. 表的操作
    • ⭐ 4.1 创建表
      • 🍁 约束类型
    • ⭐ 4.2 插入
    • ⭐ 4.3 查询
      • 🍁 去重:DISTINCT
      • 🍁 排序:ORDER BY
      • 🍁 条件查询:WHERE
      • 🍁 分页查询:LIMIT
      • 🍁 聚合函数
      • 🍁 GROUP BY子句
      • 🍁 HAVING
      • 🍁 内连接
      • 🍁 外连接
      • 🍁 自连接
      • 🍁 子查询
      • 🍁 合并查询
    • ⭐ 4.4 修改
    • ⭐ 4.5 删除
  • 🌷 5. 索引
  • 🌷 6. 事务

🌷 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. 常用数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🌷 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

在这里插入图片描述

在这里插入图片描述

案例:

-- 查询语文成绩在 [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;

🍁 聚合函数

在这里插入图片描述

案例:

-- 统计班级共有多少同学
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 ...]

案例:

-- 将曹孟德同学的数学成绩变更为 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'; //仅对下⼀个事务⽣效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql设置表只存储一段时间的数据

使用MySQL的事件调度器&#xff08;Event Scheduler&#xff09;来定期删除表中的数据。 假设你要删除的表是mytable&#xff0c;并且表中有一个名为created_at的日期时间类型的列&#xff0c;存储了每条记录的创建时间。你可以通过以下步骤设置表只存储30天的数据&#xff1a…

CentOS7.x docker安装Oracle11g并使用navicat连接

1.拉取Oracle11g镜像 #因为国内访问docker官方镜像源速度很慢,所以这里使用阿里的 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g#名字太长,重新打标签 docker tag registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest helowin/oracle_11g 2.启…

采用海明窗,设计FIR滤波器

clc; % 清空命令行窗口 clear; %清空工作区 close all;% fir1函数使用方法 b fir1(48,[0.35 0.65]); freqz(b,1,512)figure b1 fir1(11,0.2); plot(20*log(abs(fft(b1)))/log(10))% E4_1_fir1.m文件的源码 % % 采用海明窗&#xff0c;分别设计长度为41&#xff08;阶数为40…

python基基基基基基础知识

python 基础入门 一、python介绍和安装 1. python语言的特点 语法简洁类库丰富跨平台可扩展源码开放 2. python版本 官方版本 只包含python的解释程序和一些标准库 https://www.python.org/downloads/&#xff0c;安装后打开终端输入python&#xff0c;显示python版本即为安…

手推FlinkML2.2(二)

FeatureHasher&#xff08;特征哈希器&#xff09;是一种用于处理高维分类特征&#xff08;如文本或类别特征&#xff09;的方法。它将特征转换为固定长度的数值向量&#xff0c;以便在机器学习模型中使用。特征哈希通过哈希函数将特征映射到较低维度的向量空间&#xff0c;可以…

【Linux网络】PXE高效批量网络装机

PEX高效批量网络装机 一、部署PXE远程安装服务1.1PXE的优点1.2搭建PXE网络体系的前提条件 二、实现Kincksatrt无人值守安装2.1实验思路&#xff0c;2.2实验&#xff1a;无人值守远程安装2.2.1实现 Kickstart 无人值守安装 一、部署PXE远程安装服务 PXE&#xff08;预启动执行环…

Apple 的 plist 编辑器入门指南:基础操作与高级功能详解

PlistEdit Pro是一款专为macOS编写的最高级属性列表Plist编辑器。对于Mac和IOS开发人员来说&#xff0c;编写应用程序时必须编辑各种列表文件。PlistEdit Pro通过提供直观且功能强大的界面&#xff0c;使编辑这些文件更加容易。它不仅能够复制和粘贴或拖放属性列表数据&#xf…

三种线程安全的List

在单线程开发环境中&#xff0c;我们经常使用ArrayList作容器来存储我们的数据&#xff0c;但它不是线程安全的&#xff0c;在多线程环境中使用它可能会出现意想不到的结果。 多线程中的ArrayList&#xff1a; 我们可以从一段代码了解并发环境下使用ArrayList的情况&#xff…

用友滴滴:商旅费控领域现实中的1+1>2

当前&#xff0c;AI、5G、大数据等数智技术持续演进&#xff0c;千行百业数智化正在加速。在行业数字化之下&#xff0c;企业服务生态也进入新发展阶段&#xff0c;同时也孕育着新合作、新机遇。 在2023用友生态峰会上&#xff0c;用友与滴滴签署战略合作。用友依托数智化商旅费…

塔望3W消费战略产品案丨筷手小厨:筷手功夫饭的差异化致胜之道

筷手小厨 自热米饭 客户&#xff1a;颐海国际控股有限公司 品牌&#xff1a;筷手小厨 服务&#xff1a;3W消费战略 自热米饭产品案 项目背景 颐海国际控股有限公司,成立于2013年。2016年在香港主板上市&#xff08;股票代码&#xff1a;01579.HK&#xff09;。是一家集研…

使用随机森林回归填补缺失值

文章目录 一、概述二、实现1. 导入需要的库2. 加载数据集3. 构造缺失值4. 使用0和均值填充缺失值5. 使用随机森林填充缺失值6. 对填充好的数据进行建模7. 评估效果对比 一、概述 现实中收集的数据&#xff0c;几乎不可能是完美无缺的&#xff0c;往往都会有一些缺失值。面对缺…

简单沟通,远离纸质繁琐!灵活简单的在线表单制作工具

在线表单制作表单的便利性、灵活性、简易性等优势特点已经成为当今现代化办公中的必需品。随着科技的进步和发展&#xff0c;大到企业、学校&#xff0c;小到集体、个人都需要采用正确的方式去采集信息。鉴于此&#xff0c;在线表单制作工具就是比较理想的记录工具了。那么&…

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

中小型企业的仓库管理中常见问题及解决方案

中小型企业的仓储管理是企业运营中非常关键的一环&#xff0c;直接影响到企业的资金使用效率和客户体验。因此&#xff0c;建立高效的仓储管理系统对于企业来说至关重要。今天我们就来聊聊中小型企业该如何建立高效的仓库管理。 一、分析一下中小型企业仓库管理的现状 1、手工…

16.Java IO数据流

目录 1. Java基本介绍 2. JDK下载安装及其环境配置 3. 一个简单的java程序 4. Eclipse基本使用、数据类型、运算符 5. 控制语句&#xff08;if、switch、for、while、foreach&#xff09; 6. Java数组 7. Java字符串对象(String|StringBuffer|StringBuilder|StringJoiner…

功能安全ISO26262 道路车辆 功能安全审核及评估方法第3部分:软件层面

道路车辆 功能安全审核及评估方法 第3部分&#xff1a;软件层面 Road vehicles - Functional Safety Audit and Assessment Method - Part 3: Software Level &#xff08;工作组草案&#xff09; 2022.4.15 前  言 本文件按照GB/T 1.1—2020《标准化工作导则 第1部分…

什么是客户服务平台?

在社交媒体和智能手机出现之前&#xff0c;品牌主要通过单向广告渠道与客户互动。社交媒体打破了这种自上而下的动态&#xff0c;以前所未有的方式打开了对话&#xff0c;将客户包括在内。 品牌不再控制客户对人们分享公司内容的行为。人们可以点击离开&#xff0c;向左滑动&a…

分别使用软件和硬件SPI驱动1.28寸LCD屏幕刷新时间对比(驱动IC为GC9A01)

写在前面&#xff1a; 屏幕供应商提供的GC9A01驱动代码过于简陋&#xff0c;使用的话需要修改的东西比较多&#xff0c;还好看到一篇文章&#xff0c;而且博主分享了驱动代码。文章地址 以下软件SPI部分是通过博主分享的驱动代码得来的&#xff0c;稍微改一下就可以用&#xf…

jconsole工具监测jvm

背景 本篇文章为了记录如何使用jconsole工具。 jconsole工具使用环境是windows&#xff0c;监控服务端在linux上。 如何启动jconsole 找到你本地jdk的目录&#xff0c;进入bin目录&#xff0c;找到jconsole.exe程序双击启动即可 本地进程 如果是想调试本地程序的话&#xf…

23、iOS逆向防护

一、ptrace 1.1 、ptrace概述 ptrace: process trace,提供一个进程监察和控制另一个进程.并且可以读取和改变被控制进程的内存和寄存器里面的数据.它就可以用来实现断点调试和系统调用跟踪. App可以被lldb动态调试,因为App被设备中的debugserver附加,它会跟踪我们的应用进程…