MySQL语句大全

news2024/11/25 3:04:30

MySQL语句大全

  • 数据库操作
  • 数据表操作
  • 往表中插入数据
  • 修改表中数据
  • 删除表中数据
  • 查询表中数据
  • 用户管理
  • 函数
  • 约束 (限制表中的字段值)
  • 多表查询
  • 事务

数据库操作

-- 显示数据库
show databases;

-- 创建一个数据库 demo
create database demo;

-- 若不存在数据库 demo 则创建一个数据库 demo;反之不创建 demo
create database if not exists demo;

-- 删除数据库 demo
drop database demo;

-- 若存在数据库 demo 则删除数据库 demo
drop database if exists demo;

-- 使用数据库 demo
use demo;

-- 查询当前数据库
select database();

数据表操作

-- 查看当前数据库的所有表,注意先选中某一个数据库
show tables;

-- 查看表结构
desc tables;

-- 查询指定表的建表语句
show create table 表名;

-- 创建表
create table 表名(

	字段1  字段1类型 comment  字段1注释,
	字段2  字段2类型 comment  字段2注释,
	字段3  字段3类型 comment  字段3注释,
	 ......
	字段n  字段n类型 comment  字段n注释

) comment  表注释;

-- 删除表 demo,包括原表中的数据
drop table demo;

-- 若存在表 demo 则删表 demo
drop table if exists demo;

-- 为表添加一个新字段
alter table 表名 add 字段名 类型(长度) comment 注释;

-- 修改表中的字段名
alter table 表名 modify 字段名 新数据类型(长度);

-- 修改表中的字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) comment 注释;

-- 删除表中的字段
alter table 表名 drop 字段名;

-- 修改表名
alter table 表名 rename to 新表名;

往表中插入数据

-- 给指定字段添加数据
insert into 表名 (字段名1, 字段名2, ...) values (1,2, ...);

-- 给全部字段添加数据
insert into 表名 values (1,2, ...);

-- 批量添加数据
insert into 表名 values (1,2, ...), (1,2, ...), (1,2, ...) ;

修改表中数据

-- 为指定的字段修改数据
update 表名 set 字段名1 =1, 字段名2 =2, ... where 条件;

-- 当没有 where 条件时,则会修改整张表的某字段数据
update 表名 set 字段名1 =1, 字段名2 =2;

删除表中数据

-- 根据条件删除表中某一行的记录
delete from 表名 where 条件;

-- 当没有 where 条件时,则会删除整张表的数据;
-- 但整张表还在,只不过是一张空表
delete from 表名;

查询表中数据

-- 查询表中的多个字段, select 后紧跟的字段即需要展示出来的字段
select 字段1, 字段2, 字段3 ... from 表名;

-- 查询表中的所有字段
select * from 表名;

-- 查询表,并为字段设置临时的别名
select 字段1 as 别名1, 字段2 as 别名2 ... from 表名;

-- 查询字段去重
select distinct 字段 from 表名;

-- 条件查询
select 字段1, 字段2, 字段3 ... from 表名 where 条件列表;

-- 聚合函数,可搭配条件查询
select 聚合函数(字段) from 表名;

-- 分组查询
-- where 是分组之前进行过滤,不满足 where 条件,不参与分组;而 having 是分组之后对结果进行过滤
-- select 后紧跟的字段列表一般为聚合函数或分组字段,查询其他字段无意义
select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;

-- 排序查询, asc 升序, desc 降序
-- oder by 默认就是 asc
-- 若进行多字段排序,先按字段1排序,之后基于相同的字段1,再按字段2排序,一次类推...
select 字段列表 from 表名 oder by 字段1 排序方式1, 字段2 排序方式2 ...;

-- 分页查询,可自定义显示某一页显示多少记录数
-- 第一页的起始索引从 0 开始
-- 后面页的起始索引 = (查询页码 - 1)* 每页显示记录数。
select 字段列表 from 表名 limit 起始索引, 查询记录数;

关于查询数据的编写顺序与执行顺序:

1

用户管理

-- 创建用户
create user '用户名'@'主机名' identified by '密码';

-- 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

-- 删除用户
drop user '用户名'@'主机名';

-- 查询权限
show grants for '用户名'@'主机名' ;

-- 授予权限
-- 数据库名和表名可以使用 * 进行通配,代表所有。
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

-- 撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

函数

-- 字符串函数
concat(),
lower(),
upper(),
lpad(),
rpad(),
trim(),
substring()

-- 数值函数
ceil(),
floor(),
mod(),
rand(),
round()

-- 日期函数
curdate(),
curtime(),
now(),
year(),
month(),
day(),
date_add(),
datediff()

-- 流程函数
if(),
ifnull(),
case when ... then ... else ... end

约束 (限制表中的字段值)

-- 添加非空约束
create table 表名(
	字段名 数据类型 not null,
	...
);

-- 添加唯一约束
create table 表名(
	字段名 数据类型 unique,
	...
);

-- 添加主键约束
create table 表名(
	字段名 数据类型 primary key,
	...
);

-- 添加默认约束
create table 表名(
	字段名 数据类型 default,
	...
);

-- 添加检查约束,仅 MySQL 8.0.16 版本之后支持
create table 表名(
	字段名 数据类型 check(),
	...
);

-- 添加外键约束,至少涉及两张表
create table 表名(
	字段名 数据类型,
 	...
 	constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名)
);

-- 修改外键约束
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名);

-- 删除外键约束
alter table 表名 drop foreign key 外键名称;

-- 外键的更新和删除行为

-- 外键默认,当有子表的字段依赖父表的字段时,不允许删除父表的字段,但允许删除子表的字段
no action

-- 同 no action
restrict

-- 当有子表的字段依赖父表的字段时,删除父表的字段,就会删除子表的字段
cascade

-- 当有子表的字段依赖父表的字段时,删除父表的字段,就会将子表的字段设置为 null
set null

-- 当有子表的字段依赖父表的字段时,删除父表的字段,就会将子表的字段设置为默认值
set default

-- 删除和更新外键,使用 cascade 例子
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名) on update cascade on delete cascade;

多表查询

-- 内连接用于查询两张表交集的部分

-- 内连接,写法一
select 字段列表 from1,2 where 连接条件;
-- 内连接,写法二
select 字段列表 from1 inner join2 on 连接条件;

-- 左外连接用于查询左表 + 两张表交集的部分
select 字段列表 from1 left outer join2 on 连接条件; 

-- 右外连接用于查询右表 + 两张表交集的部分
select 字段列表 from1 right outer join2 on 连接条件;

-- 自连接,将同一张表查询两次
-- 将同一张表分别视为两张表: 表A 和 表B,然后 表A 连接 表B
select 字段列表 from1 as 别名A join1 as 别名B on 连接条件;

-- 联合查询,就是把多次查询的结果合并起来,形成一个新的查询结果集
-- 对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致
-- union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重
select 字段列表 from1  ...  
union all
select 字段列表 from1  ...;

-- 子查询,SQL 语句中嵌套 select 语句
-- 子查询的核心思想,后面嵌套的语句有一个返回值,类似于 C语言中的一个函数的返回值,
-- 利用前面的主句 + 后面的返回值,就可以得出查询的结果

-- 标量子查询,嵌套的子查询结果为单个值
-- 列子查询,嵌套的子查询结果为一列
-- 行子查询,嵌套的子查询结果为一行多列
-- 表子查询,嵌套的子查询结果为多行多列
select 字段列表 from1 where column = ( select column from2 );

事务

-- 开启事务
start transaction;

	...SQL代码...
	...SQL代码...
	
-- 如果正常执行完毕, 则提交事务	
commit;

-- 如果执行过程中报错, 则回滚事务
rollback;

-- 查看事务隔离级别
select @@transaction_isolation;

-- 设置事务隔离级别
set session transaction isolation level 事务隔离级别;

-- 事务隔离级别分类
read uncommitted (未解决所有问题)
read committed (解决了脏读问题)
repeatable Read (MySQL默认,解决了脏读,不可重复读问题)
serializable (解决了脏读,不可重复读,幻读问题)

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

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

相关文章

软件测试基础篇(完整版)

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 “尽早的介入测试,遇到问题的解决成本就越低” 随着软件测试技术的发展&#xff0c…

Flutter NestedScrollView 内嵌视图滚动行为一致

Flutter NestedScrollView 内嵌视图滚动行为一致 视频 https://youtu.be/_h7CkzXY3aM https://www.bilibili.com/video/BV1Gh4y1571p/ 前言 上一节讲了 CustomScrollView ,可以发现有的地方滚动并不是很连贯。 这时候就需要 NestedScrollView 来处理了。 今天会写…

Promise中的链式流

如果阅读有疑问的话,欢迎评论或私信!! 本人会很热心的阐述自己的想法!谢谢!!! 携手共进! 文章目录 前言深入Promise链式流 前言 在探索Promise链式流之前我们要知道两个Promise固有…

js设计模式:依赖注入模式

作用: 在对象外部完成两个对象的注入绑定等操作 这样可以将代码解耦,方便维护和扩展 vue中使用use注册其他插件就是在外部创建依赖关系的 示例: class App{constructor(appName,appFun){this.appName appNamethis.appFun appFun}}class Phone{constructor(app) {this.nam…

【鸿蒙 HarmonyOS 4.0】网络请求

一、介绍 资料来自官网:文档中心 网络管理模块主要提供以下功能: HTTP数据请求:通过HTTP发起一个数据请求。WebSocket连接:使用WebSocket建立服务器与客户端的双向连接。Socket连接:通过Socket进行数据传输。 日常…

车载测试,检测项目标准

检测项目: 二.GB/T 31486-2015电动汽车用动力蓄电池电性能要求及试验方法 说明:本标准规定了电动汽车用动力蓄电池(以下简称蓄电池)的 电性能要求、试验方法、检验规则。本标准适用于装载在电动汽车 上的锂离子蓄电池和金属氢化 物镍蓄电池单体和模块&a…

设计模式-创建型模式-抽象工厂模式

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,它是一种对象创建型模式。 由于工厂方法模式中的每个工厂只生产一类产品&…

JS基础之JSON对象

JS基础之JSON对象 目录 JS基础之JSON对象对象转JSON字符串JSON转JS对象 对象转JSON字符串 JSON.stringify(value,replacer,space) value:要转换的JS对象 replacer:(可选)用于过滤和转换结果的函数或数组 space:(可选)指定缩进量 // 创建JS对象 let date {name:"张三…

如何利用内网穿透工具在企业微信开发者中心实现本地接口服务回调

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

时序数据库TimescaleDB,实战部署全攻略

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

2024华北医院信息网络大会第二轮更新通知

大会背景 近年来,我国医疗行业信息化取得了飞跃式的发展,医疗信息化对医疗行业有着重要的支撑作用。2021年国家卫健委、中医药管理局联合印发《公立医院高质量发展促进行动(2021-2025年)》,提出重点建设“三位一体”智…

Linux定时任务调度

Linux定时任务调度 crond 任务调度 crontab 进行定时任务的设置 介绍 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类:系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等 个别用户工作:个别用户可能…

SpringBoot指定外部环境配置

nohup java -Xms256m -Xmx512m -Dfile.encodingUTF-8 -jar /usr/local/xxxx.jar --spring.profiles.activeprod > system.log 2>&1 & --spring.profiles.activeprod修改的是多环境配置中内部application.properties里的spring.profiles.active值 -Dspring.config…

SOC电源管理系统简介

1. 概况 随着SOC越来越复杂,包含的IP越来越多,单个SOC上实现了CPU, 射频模块,相机模块,DDR控制模块,外设等等功能。多种功能,多种IP也带来了多档电源的需求。同时为了满足低功耗的挑战,SOC通常被…

代码随想录算法训练营第二十五天|Leetcode216 组合总和III、Leetcode17 电话号码的字母组合

代码随想录算法训练营第二十五天|Leetcode216 组合总和III、Leetcode17 电话号码的字母组合 ● Leetcode216.组合总和III● 解题思路● 代码实现 ● Leetcode17 电话号码的字母组合● 解题思路● 代码实现 ● Leetcode216.组合总和III 题目链接:Leetcode216.组合总和…

计算机网络-局域网和城域网(二)

1.局域网互联设备: 2层网桥(生成树、源路由)、3层交换机、路由器。网桥要求3层以上协议相同,1、2层协议不同可互联。 2.生成树网桥: 又叫透明网桥,IEEE802.1d,生成树算法。基本思想是在网桥之…

2024.2.22

将互斥机制的代码实现 #include<myhead.h> int num7; pthread_mutex_t mutex;//创建互斥锁变量 void *task1(void *arg) {printf("task1:\n");//获取锁资源pthread_mutex_lock(&mutex);num77777;sleep(2); printf("task1:num%d\n",num); //释放…

分享WebGL物体三维建模

界面效果 代码结构 模型素材类似CT (Computed Tomography)&#xff0c;即电子计算机断层扫描&#xff0c;它是利用精确准直的X线束、γ射线、超声波等&#xff0c;与灵敏度极高的探测器一同围绕物体的某一部位作一个接一个的断面扫描。 坐标系统 渲染流程 渲染流程是个将之前准…

报表控件Stimulsoft 新版本2024.1中,功能区工具栏新功能

今天&#xff0c;我们将讨论Stimulsoft Reports、Dashboards 和 Forms 2024.1版本中的一项重要创新 - 在一行中使用功能区工具栏的能力。 Stimulsoft Ultimate &#xff08;原Stimulsoft Reports.Ultimate&#xff09;是用于创建报表和仪表板的通用工具集。该产品包括用于WinF…

game项目(梦开始的地方)

梦开始的地方 由于easyx只支持vis&#xff0c;所以这个项目的书写以后都是在vis上进行&#xff0c;希望自己能够把这个项目好好完成&#xff0c;相信自己&#xff0c;加油&#xff01; 我们需要一个头文件来包括作图工具 (这个头文件在easyx上面下载) #include<graphics.…