MySQL笔记--SQL语句
目录
1--SQL的通用语法
2--SQL语句的分类
3--DDL语句
3-1--数据库操作
3-2--表操作
3-3--数据类型
3-4--修改和删除
4--DML语句
4-1--插入数据
4-2--修改数据
4-3--删除数据
5--DQL语句
5-1--基本查询
5-2--条件查询
5-3--聚合函数
5-4--分组查询
5-5--排序查询
5-6--分页查询
5-7--执行顺序
6--DCL语句
6-1--用户管理
6-2--权限控制
1--SQL的通用语法
2--SQL语句的分类
3--DDL语句
3-1--数据库操作
# 查询所有数据库
show databases;# 查询当前使用数据库
select database();# 创建数据库
create database 数据库名
create database if not exists 数据库名; # 不存在时创建,存在则不创建
create database 数据库名 default charset 字符集; # 使用特定字符集# 删除数据库
drop database if exists 数据库名;# 使用特定数据库
use 数据库名;
3-2--表操作
# 查询当前数据库所有表
show tables;# 查询表结构
desc 表名;# 查询指定表的建表语句
show create table 表名;# 创建表
create table 表名(字段1 字段1类型[COMMENT 字段1注释],字段2 字段1类型[COMMENT 字段2注释],字段3 字段1类型[COMMENT 字段3注释],......字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];# example:
create table tb_user(-> id int comment '编号',-> name varchar(50) comment '姓名',-> age int comment '年龄',-> gender varchar(1) comment '性别'-> ) comment '用户表';
3-3--数据类型
MySQL中数据类型包括三类:数值类型、字符串类型和日期时间类型;
数值类型:通过增加 unsigned 来指明使用无符号;
字符串类型:char 的性能会比 varchar 的性能要好。
日期时间类型:
案例:
create table emp(-> id int comment '编号',-> workno varchar(10) comment '工号',-> name varchar(10) comment '姓名',-> gender char(1) comment '性别',-> age tinyint unsigned comment '年龄',-> idcard char(18) comment '身份证号',-> entrydate date comment '入职时间'-> ) comment '员工表';
3-4--修改和删除
# 添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释];
# 为 emp 表增加一个新的字段"昵称",字段名为nickname,类型为varchar(20);
alter table emp add nickname varchar(20) comment "昵称";# 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);# 修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释];
# 将 emp 表的 nickname 字段修改为 username,类型为varchar(30)
alter table emp change nickname username varchar(30) comment "用户名";# 修改表名
alter table 表名 rename to 新表名;
# 将 emp 表的表名修改为employee
alter table tmp rename to employee;# 删除字段
alter table 表名 drop 字段名;
# 将 emp 表的字段 username 删除;
alter table tmp drop username;# 删除表
drop table [if exists] 表名;# 删除指定表,并重新创建该表
truncate table 表名; # 重新创建的是一个空表
4--DML语句
4-1--插入数据
# 给指定字段添加数据
insert into 表名(字段名, 字段名2, ...) values(值1, 值2, ...);
# example
insert into emp(id, workno, name, gender, age, idcard, entrydate) values(1, '001', 'zhangsan', '男', 18, '123123123123123123', '2023-10-31');
# 展示插入后表的结果
select * from 表名;
# example
select * from emp;# 给全部字段添加数据
insert into 表名 values(值1, 值2, ...);# 一次插入多条记录,使用,来分隔两条记录
insert into 表名 values(...), (...);
4-2--修改数据
# 指定条件来修改指定数据
update 表名 set 字段1=值1, z字段2=值2, ..., where 条件;
# example
update emp set name = 'lisi', age = 19 where id = 1;# 不指定条件来修改所有数据
update 表名 set 字段1=值1, z字段2=值2, ...;
# update emp set age = 20;
4-3--删除数据
# 删除指定数据
delete from 表名 where 条件;# 删除全部数据
delete from 表名;
5--DQL语句
5-1--基本查询
# 查询多个字段
select 字段1, 字段2, 字段3, ... from 表名;
select * from 表名;# 设置别名
select 字段1 as 别名1, 字段2 as 别名2, ... from 表名;# 去除重复记录
select distinct 字段列表 from 表名;
5-2--条件查询
常用条件如下:
# 基本语法
select 字段列表 from 表名 where 条件列表;# 基本实例
# 1. 查询年龄等于 88 的员工
select * from emp where age = 88; # 2. 查询年龄小于 20 的员工
select * from emp where age < 20;# 3. 查询年龄小于等于 20 的员工
select * from emp where age <= 20;# 4. 查询没有身份证号的员工
select * from emp where idcard is null;# 5. 查询由身份证号的员工
select * from emp where idcard is not null;# 6. 查询年龄不等于 88 的员工
select * from emp where age != 88;
select * from emp where age <> 88;# 7. 查询年龄在15岁到20岁之间的员工(闭区间)
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;# 8. 查询性别为女 且年龄小于 25 岁的员工
select * from emp where gender = '女' and age < 25;# 9. 查询年龄等于 18 或 20 或 40 的员工
select * from emp where age = 18 or age = 20 or age = 40;
select * from emp where age in (18, 20, 40);# 10. 查询姓名为两个字的员工
select * from emp where name like '__';# 11. 查询身份证号最后一位是X的员工
select * from emp where idcard like '%X';
5-3--聚合函数
聚合函数用于将数据作为整体,进行纵向计算;
常见聚合函数:
# 基本语法:
select 聚合函数(字段列表) from 表名; # null 值不参与聚合函数的计算# 代码实例
# 1. 统计员工数量
select count(*) from emp;# 2. 统计员工平均年龄
select avg(age) from emp;# 3. 统计员工最大年龄
select max(age) from emp;# 4. 统计员工最小年龄
select min(age) from emp;# 5. 统计深圳地区员工的年龄总和
select sum(age) from emp where workaddress = '深圳';
5-4--分组查询
基本语法
select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;where 和 having 的区别:
1. 执行时机不同,where是分组之前进行过滤,不满足where条件的不会参与分组,having是对分组之后的结果进行过滤
2. 判断条件不同,where不能对聚合函数进行判断,而having可以
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
# 代码实例:
1. 根据性别分组,统计男性员工和女性员工的数量
select gender, count(*) from emp group by gender;2. 根据性别分组,统计男性员工和女性员工的平均年龄
select gender, avg(age) from emp group by gender;3. 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress, count(*) from emp where age < 45 group by workaddress having count(*) > 3;
5-5--排序查询
基本语法:
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;排序方式:
asc 表示升序(默认值)
desc 表示降序
使用多字段排序时,当第一个字段值相同时,会根据第二个字段进行排序
代码实例:# 1. 根据年龄对员工进行升序排序
select * from emp order by age asc;# 2. 根据入职时间对员工进行降序排序
select * from emp order by entrydate desc;# 3. 根据年龄对员工进行升序排序,当年龄相同时按照入职时间进行降序排序
select * from emp order by age asc, entrydate desc;
5-6--分页查询
基本语法:
select 字段列表 from 表名 limit 起始索引, 查询记录数;注意事项:
起始索引从 0 开始,起始索引 = (查询页码 - 1) * 每页显示记录数;
不同数据库对于分页查询有不同的实现, MySql中是limit;
如果查询的是第一页数据,则起始索引可以省略;
代码实例:
# 1. 查询第1页员工数据,每页显示10条记录
select * from emp limit 0, 10;
select * from emp limit 10; # 第一页可以省略查询页码# 2. 查询第二页员工数据
select * from emp limit 10 10; # (2 - 1) * 10 = 10
5-7--执行顺序
6--DCL语句
6-1--用户管理
# 1. 查询用户
use mysql;
selece * from user;# 2. 创建用户
create user '用户名'@'主机名' identified by '密码';# 3. 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';# 4. 删除用户
drop user '用户名'@'主机名';主机名可以使用 % 通配,表示可以从任何主机登录数据库;
6-2--权限控制
常见权限:
基本语句
# 1. 查询权限
show grants for '用户名'@'主机名';# 2. 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';# 3. 撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';多个权限之间使用逗号分隔,授权时数据库名和表名可以使用 * 进行通配,表示所有
相关文章:

MySQL笔记--SQL语句
目录 1--SQL的通用语法 2--SQL语句的分类 3--DDL语句 3-1--数据库操作 3-2--表操作 3-3--数据类型 3-4--修改和删除 4--DML语句 4-1--插入数据 4-2--修改数据 4-3--删除数据 5--DQL语句 5-1--基本查询 5-2--条件查询 5-3--聚合函数 5-4--分组查询 5-5--排序查…...

线扫相机DALSA-相机平场矫正详细步骤
在相机视野下铺放白色亚克力板或纯白纸,采集图像。打开曲线图。 选择 Line Profile 模式。调节好相应所需的曝光时间、光源、增益和镜头光圈,让白平衡纸显示出来的灰度值大概在 150-200 左右。 在Calibration Algorithm 中将显示的数值设置好。 先暗场…...

求购供应发布农业副业产品市场行情小程序开发
农业副业产品求购供应发布市场行情小程序H5开源版开发 后台同步:一键获取全国近200家农产品批发市场的商品价格,包括蔬菜、水果、水产、粮油和农副产品等。 实时更新和同步市场价格动态,保障信息的准确性和时效性。 前端VIP权益功能&…...

框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现
目录 服务攻防-框架安全&CVE 复现&Spring&Struts&Laravel&ThinkPHP概述PHP-开发框架安全-Thinkphp&Laravel漏洞复现Thinkphp-3.X RCEThinkphp-5.X RCELaravel框架安全问题- CVE-2021-3129 RCE JAVAWEB-开发框架安全-Spring&Struts2Struts2框架安全…...

【腾讯云 HAI域探秘】宝妈也能快速入门AI绘画
活动背景 本次活动是由腾讯云和CSDN联合推出的开发者技术实践活动。我通过技术交流直播、动手实验、征文等形式,深入沉浸式体验腾讯云高性能应用服务 HAI。从活动中汲取到技术上的精华。在本次活动中,只要完成各个环节任务,不仅可以参与 AIGC…...
归并排序,自顶向下
归并排序主要两步,一步是划分区间,另一步是合并两个区间 这个算法的稳定性更好,对比快排这种,如果整体是倒序的话,快排的复杂度会达到o(n^2),归并会更稳定。 划分区间主要是递归去实现,下面给…...

【案例】3D地球(vue+three.js)
需要下载插件 <template><div class"demo"><div id"container" ref"content"></div></div> </template> <script> import * as THREE from three; // import mapJSON from ../map.json; import { Or…...
C语言中float byte char uint_8 转换方法
1.float转Byte[] #include <stdio.h>int main() {float floatValue 3.141592; // 浮点数值// 存储到字节数组unsigned char *byteArr (unsigned char *)&floatValue;// 打印字节数组for (int i 0; i < sizeof(float); i) {printf("Byte %d: 0x%02X\n&q…...

瑞明达:脚踏实地,为实体经济贡献“瑞明达”力量
实体经济是指以实际物质生产和经营为主要特征的经济形态,是经济发展的基础和主体。瑞明达团队一直关注着实体经济的发展,也在不断探索如何运用科技手段和管理经验助力实体经济的发展。团队将从几个方面介绍瑞明达团队的看法和实践经验。 实体经济在国家经…...
ChatGPT-自然语言处理模型
前言 GPT(Generative Pre-trained Transformer)是一种自然语言处理模型,具有强大的文本生成和理解能力。 使用场景 它可以用于各种场景,包括但不限于: 1. 自动文本生成:GPT可以生成连贯、流畅的文章、故…...

Apache Dolphinscheduler如何不重启解决Master服务死循环
个人建议 Apache Dolphinscheduler作为一个开源的调度平台,目前已经更新到了3.X版本,4.0版本也已经呼之欲出。3.0版本作为尝鲜版本,新添加了许多的功能,同时也存在非常多的隐患,本人使用3.0版本作为生产调度也踩了很多…...

绝对好用!一个浏览器插件解决跨设备同步问题,吊打文件传输助手!
在数字化的时代,我们所接触的信息呈现指数级的增长。无论是办公资料、学习资源,还是各种生活中的点滴,所有这些信息以各种形式——文本、图片、视频、音乐等——出现在我们面前,如何有效地同步和管理这些内容成为一个挑战。 就跨…...

阿昌教你如何优雅的数据脱敏
阿昌教你如何优雅的数据脱敏 Hi,我是阿昌,最近有一个数据脱敏的需求,要求用户可自定义配置数据权限,并对某种类型数据进行脱敏返回给前端 一、涉及知识点 SpringMVCJava反射Java自定义注解Java枚举 二、方案选择 1、需求要求…...
力扣每日一题80:删除有序数组中的重复项||
题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的…...
SQL——插入已经存在的数据
现在有一套ID为9003的高难度SQL试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info(其表结构如下图),不管该ID试卷是否存在,都要插入成功,请尝试…...

【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧
一,工具资源下载 百度网盘资源下载链接地址: 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…...

阿里云2核2G3M云服务器99元/年,新老同享,续费不涨价!
2023年阿里云双11活动正在火热进行中,推出了一款面向个人开发者、学生、小微企业的年度爆款套餐,2核2G3M云服务器99元/年,新老同享,续费不涨价! 一、活动入口 活动地址:传送门>>> 二、活动详情 …...

UWB 技术在机器人和移动领域的应用题】
多年来,机器人生态系统不断增长,不同的应用程序也在不断增长。如今,机器人出现在许多不同的领域,例如私人家庭、商业场所、仓库和医疗场所。他们要么自主工作,要么与我们并肩工作,帮助我们完成任务。 根据…...
11.1 知识总结(JavaScript)
一、 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 EC…...

【Java 进阶篇】Java Web开发:实现验证码功能
在Web应用程序中,验证码(CAPTCHA)是一种常见的安全工具,用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现,要求用户在登录或注册时输入正确的字符。在这篇文章中,我们将详细介绍如何在Java Web…...

【AI News | 20250609】每日AI进展
AI Repos 1、OpenHands-Versa OpenHands-Versa 是一个通用型 AI 智能体,通过结合代码编辑与执行、网络搜索、多模态网络浏览和文件访问等通用工具,在软件工程、网络导航和工作流自动化等多个领域展现出卓越性能。它在 SWE-Bench Multimodal、GAIA 和 Th…...
codeforces C. Cool Partition
目录 题目简述: 思路: 总代码: https://codeforces.com/contest/2117/problem/C 题目简述: 给定一个整数数组,现要求你对数组进行分割,但需满足条件:前一个子数组中的值必须在后一个子数组中…...

Vue.js教学第二十一章:vue实战项目二,个人博客搭建
基于 Vue 的个人博客网站搭建 摘要: 随着前端技术的不断发展,Vue 作为一种轻量级、高效的前端框架,为个人博客网站的搭建提供了极大的便利。本文详细介绍了基于 Vue 搭建个人博客网站的全过程,包括项目背景、技术选型、项目架构设计、功能模块实现、性能优化与测试等方面。…...

实现p2p的webrtc-srs版本
1. 基本知识 1.1 webrtc 一、WebRTC的本质:实时通信的“网络协议栈”类比 将WebRTC类比为Linux网络协议栈极具洞察力,二者在架构设计和功能定位上高度相似: 分层协议栈架构 Linux网络协议栈:从底层物理层到应用层(如…...

分布式光纤声振传感技术原理与瑞利散射机制解析
分布式光纤传感技术(Distributed Fiber Optic Sensing,简称DFOS)作为近年来迅速发展的新型感知手段,已广泛应用于边界安防、油气管道监测、结构健康诊断、地震探测等领域。其子类技术——分布式光纤声振传感(Distribut…...

CSS(2)
文章目录 Emmet语法快速生成HTML结构语法 Snipaste快速生成CSS样式语法快速格式化代码 快捷键(VScode)CSS 的复合选择器什么是复合选择器交集选择器后代选择器(重要)子选择器(重要)并集选择器(重要)**链接伪类选择器**focus伪类选…...

Android Camera Hal中通过Neon指令优化数据拷贝
背景描述: Camera apk普通相机模式录像操作时,一般是同时请求两个流,即预览流和录像流。对于两个流输出图像格式和分辨率相同的情况下,是不是可以通过一个流拷贝得到另一个流的数据,进而节省掉一个Sensor输出处理两次…...
AcWing 3417:砝码称重——位集合
【题目来源】 3417. 砝码称重 - AcWing题库 【题目描述】 你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1,W2,⋅⋅⋅,WN。 请你计算一共可以称出多少种不同的正整数重量? 注意砝码可以放在天平两边。 【输入格式】 输入的第一行包含一个整数 N。 …...
如何通过外网访问内网服务器?怎么让互联网上连接本地局域网的网址
服务器作为一个数据终端,是很多企事业单位不可获缺的重要设备,多数公司本地都会有部署服务器供测试或部署一些网络项目使用。有人说服务器就是计算机,其实这种说法不是很准确。准确的说服务器算是计算机的一种,它的作用是管理计算…...

javaweb -html -CSS
HTML是一种超文本标记语言 超文本:超过了文本的限制,比普通文本更强大,除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签"<标签名>"构成的语言。 CSS:层叠样式表,用于…...