MySQL语法及IDEA使用MySQL大全

        在项目中我们时常需要写SQL语句,或简单的使用注解直接开发,或使用XML进行动态SQL之类的相对困难的SQL,并在IDEA中操控我们的SQL,但网上大都图方便或者觉得太简单了,完全没一个涵盖两个方面的讲解。

单表:

        DDL(表操作):

创表语句:

 约束:


常见的数据类型:

for example(例子):

create table address_book
(id            bigint auto_increment comment '主键'primary key,user_id       bigint                       not null comment '用户id',consignee     varchar(50)                  null comment '收货人',sex           varchar(2)                   null comment '性别',phone         varchar(11)                  not null comment '手机号',province_code varchar(12) charset utf8mb4  null comment '省级区划编号',province_name varchar(32) charset utf8mb4  null comment '省级名称',city_code     varchar(12) charset utf8mb4  null comment '市级区划编号',city_name     varchar(32) charset utf8mb4  null comment '市级名称',district_code varchar(12) charset utf8mb4  null comment '区级区划编号',district_name varchar(32) charset utf8mb4  null comment '区级名称',detail        varchar(200) charset utf8mb4 null comment '详细地址',label         varchar(100) charset utf8mb4 null comment '标签',is_default    tinyint(1) default 0         not null comment '默认 0 否 1是'
)comment '地址簿' collate = utf8mb3_bin;

          

查询语句:

修改语句:

                                                                               那么IDEA中是如何操作DDL语句的呢?                                                需要特别说的是,IDEA中想执行哪部分代码,就左键选中代码块变色,再点击绿色的执行按钮 

DML  :             

insert

@Insert("insert into category(type, name, sort, status, create_time, update_time, create_user, update_user)" +" VALUES" +" (#{type}, #{name}, #{sort}, #{status}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser})")
<insert id="insertBacth">insert into dish_flavor (dish_id, name, value)value<foreach collection="flavors" item="df" separator=",">(#{df.dishId},#{df.name},#{df.value})</foreach></insert>

Update

 <update id="update">
# yml中配置文件加的开启驼峰命名,只是java中Employee 类的 成员变量的驼峰命名 可以对应 数据库中的 参数名update employee<set><if test="name != null ">name = #{name},</if><if test="username != null ">username = #{username},</if><if test="password != null ">password = #{password},</if><if test="phone != null">phone =#{phone},</if><if test="sex != null ">sex = #{sex},</if><if test="idNumber != null ">id_Number = #{idNumber},</if><if test="status != null ">status = #{status},</if><if test="updateTime != null">update_Time = #{updateTime},</if><if test="updateUser != null ">update_User = #{updateUser},</if></set>where id = #{id}</update>

项目里一般都是动态SQL编辑数据,简单的update直接使用MP,根本没必要写

Delete

 @Delete("delete from dish_flavor where dish_id = #{dishid}")void deleteByDishId(Long dishid);
<delete id="deleteByIds">delete from dish_flavor where dish_id in<foreach collection="dishIds" item="dishId" open="(" close=")" separator=",">#{dishId}</foreach></delete>

DQL:

基本查询:

注意:代码中*是通配符,即查询所有

条件查询:

聚合函数:

分组查询:

排序查询:

分页查询:

但分页查询,不同于其他的DQL查询方式,它是项目较为重要的部分,我们一般会使用PageHelper这个插件,来简化我们的代码,以下是

分页查询的三点重要的步骤:

First:

       先pom.xml导入maven对应依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId></dependency>

Second:

        在impl中写模板式代码

 public PageResult pageQuery( EmployeePageQueryDTO employeePageQueryDTO) {
//        select * from employee limit 0,10
//        开始分页查询PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
//      这个是强制要求名字叫”page“,不能改,所以这需要创建对象Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);//        long total1 = employeeMapper.pageQuery(employeePageQueryDTO).getTotal();
//        List<Employee> records1 = employeeMapper.pageQuery(employeePageQueryDTO).getResult();long total = page.getTotal();List<Employee> records = page.getResult();return new PageResult(total,records);}

Third:

<select id="pageQuery" resultType="com.sky.entity.Employee">select * from employee<where><if test="name != null and name != ''">and name like concat('%',#{name},'%')</if></where>order by create_time desc</select>

多表:

分为逻辑外键和物理外键,见名知意,前者并没有物理层面的约束,后者则是有着物理层面的约束

以上是一份逻辑关联的SQL语句,这应该是企业最常用的方式

但,此方法也有缺点,若你没考虑周全,可能会误操作,所以物理外键可能更利于你保持数据完整性和同一性。

IDEA修改方法:

根据名称,进行添加,修改外键

多表查询:

先简单介绍一下笛卡尔积,两个集合一个集合数据量为2,另一个数据量为4,两个相乘则为8条,这就是笛卡尔积,

而我们肯定不需要冗余数据,所以需要消除冗余项

分类:

内连接就是取并集,外连接就是取AorB,子查询则是查询蓝色or橘色部分

内连接:

外连接:

 

子查询:

总结代码:
<select id="pageQuery" resultType="com.sky.vo.DishVO">select  d.* , c.name as category_name  from dish d left outer join category c on d.category_id = c.id<where><if test = "name!=null">and d.name like concat('%',#{name},'%')</if><if test = "categoryId != null">and d.category_id = #{categoryId}</if><if test = "status != null">and d.status = #{status}</if></where>order by d.create_time desc</select>

事务:

注意:
● 默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句, MySQL会 立即隐式的提交事务。

索引:

当数据库的表中数据量很大时,DML等SQL语句会有很长的时耗。

索引(index)是帮助数据库高效获取数据的数据结构


..

语法:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C#]winform部署PaddleDetection的yolo印章检测模型

【官方框架地址】 https://github.com/PaddlePaddle/PaddleDetection.git 【算法介绍】 PaddleDetection 是一个基于 PaddlePaddle&#xff08;飞桨&#xff09;深度学习框架的开源目标检测工具库。它提供了一系列先进的目标检测算法&#xff0c;包括但不限于 Faster R-CNN, …

音量控制软件sound control mac功能亮点

sound control mac可以帮助用户控制某个独立应用程序的音量&#xff0c;通过每应用音量&#xff0c;均衡器&#xff0c;平衡和音频路由独立控制每个应用的音频&#xff0c;还有整个系统的音量。 sound control mac功能亮点 每个应用程序的音量控制 独立控制应用的数量。 键盘音…

接口功能测试策略

由于平台服务器是通过接口来与客户端交互数据提供各种服务&#xff0c;因此服务器测试工作首先需要进行的是接口测试工作。测试人员需要通过服务器接口功能测试来确保接口功能实现正确&#xff0c;那么其他测试人员进行客户端与服务器结合的系统测试过程中&#xff0c;就能够排…

【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》

【现代密码学】笔记3.4-3.7--构造安全加密方案、CPA安全、CCA安全 《introduction to modern cryphtography》 写在最前面私钥加密与伪随机性 第二部分流加密与CPA多重加密 CPA安全加密方案CPA安全实验、预言机访问&#xff08;oracle access&#xff09; 操作模式伪随机函数PR…

ChatGPT知名开源项目有哪些

ChatGPT-Next-Web&#xff1a;基于ChatGPT API的私有化部署网页聊天系统 主要功能&#xff1a; 只需在 1 分钟内即可在 Vercel 上一键免费部署&#xff0c;支持私有服务器快速部署&#xff0c;支持使用私有域名支持ChatGPT3.5、4等常见模型Linux/Windows/MacOS 上的紧凑型客户…

数据库开发工具Navicat Premium 15 mac软件特色

Navicat Premium 15 mac版是一款数据库开发工具&#xff0c;Navicat Premium 15 Mac版可以让你以单一程序同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。 Navicat Premium mac软件特色 无缝数据迁移 数据传输&#xff0c;数据同步和结构同步…

Mysql InnoDB行锁深入理解

Record Lock记录锁 Record Lock 称为记录锁&#xff0c;锁住的是一条记录。而且记录锁是有 S 锁和 X 锁之分的&#xff1a; 当一个事务对一条记录加了 S 型记录锁后&#xff0c;其他事务也可以继续对该记录加 S 型记录锁&#xff08;S 型与 S 锁兼容&#xff09;&#xff0c;…

唠一唠Java线程池

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊Java线程池&#xff0c;如果没有线程池&#xff0c;每个线程都需要手动创建和销毁线程&#xff0c;那将是多么低效和耗资源啊&#xff01; 线程池的核心作用就是复用已创建的线程&#xff0c;减少…

固乔快递查询助手:批量、快速、全面的快递信息查询软件

在快递行业飞速发展的今天&#xff0c;如何高效、准确地掌握快递信息成为了很多人的需求。而固乔快递查询助手正是解决这一难题的利器。 固乔快递查询助手是一款专注于快递信息查询的软件&#xff0c;支持多家主流快递公司查询。用户只需输入单号&#xff0c;即可快速查询到实时…

对root用户的理解

1.什么是root用户&#xff1f; Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;超级管理员&#xff09; root用户拥有最大的系统操作权限&#xff0c;而普通用户在许多地方的权限是受…

75应急响应-数据库漏洞口令检索应急取证箱

必要知识点 第三方应用是选择性的安装的&#xff0c;比如mysql&#xff0c;如何做好信息收集&#xff0c;有没有爆过它的漏洞&#xff0c;和漏洞探针也是获取攻击者思路的重要操作&#xff0c;除去本身漏洞外&#xff0c;提前预知或口令相关攻击也要进行筛选。 排除三方应用…

力扣刷题-二叉树-合并二叉树

617.合并二叉树&#xff08;经典&#xff09; 合并二叉树是操作两棵树的题目里面很经典的&#xff0c;如何对两棵树遍历以及处理&#xff1f; 给定两个二叉树&#xff0c;想象当你将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一些节点便会重叠。 你需要将他们合并…

LabVIEW在微生物检测中的应用

随着对食品安全关注的增加&#xff0c;食品检测的准确性变得越来越重要。其中&#xff0c;微生物计数作为食品合格的关键指标&#xff0c;对其检测技术的准确性和实时性要求极高。传统的微生物检测面临着菌落识别困难、设备实时性差和自动化程度不高等问题&#xff0c;尤其在疫…

华清远见作业第二十五天——IO(第八天)

思维导图&#xff1a; 使用信号灯集完成三个进程的同步&#xff0c;A进程输出字符A&#xff0c;B进程输出字符B&#xff0c;C进程输出字符C&#xff0c;要求输出结果为ABCABCABCABCABC 代码&#xff1a; #include<stdio.h> #include<string.h> #include<stdli…

基于 IP 多播的网络会议程序(2024)

1.题目描述 局域网 IP 多播程序&#xff0c;设计一个图形界面的网络会议程序&#xff08;实现文本多播方式即可&#xff09;。 2.演示Demo 3.参考代码 广播发送代码 //服务端 #include <winsock2.h> #include <iostream> #include <list>#pragma comment(l…

test fuzz-05-模糊测试 kelinci AFL-based fuzzing for Java

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) test fuzz-01-模糊测试&#xff08;Fuzz Testing&#xff09; test fuzz-…

YOLOv8-Seg改进:轻量化改进 | 华为Ghostnetv2,端侧小模型性能新SOTA | NeurIPS22 Spotlight

🚀🚀🚀本文改进:GhostNetV2 是 GhostNet 的增强版本,GhostBottleneckV2与YOLOV8建立轻量C2f_GhostBottleneckV2 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg…

微信小程序使用mqtt开发可以,真机不行

以下可以解决我的问题&#xff0c;请一步一步跟着做&#xff0c;有可能版本不一样就失败了 一、下载mqtt.js 前往蓝奏云 https://wwue.lanzouo.com/iQPdc1k50hpe 下载好后将.txt改为.js 然后放入项目里 二、连接mqtt const mqtt require(../../utils/mqtt.min); let cli…

Windows BAT脚本 | 定时关机程序

使用说明&#xff1a;输入数字&#xff0c;实现一定时间后自动关机。 单位小时&#xff0c;用后缀 h 或 H。示例 1h 单位分钟&#xff0c;用后缀 m 或 M 或 min。示例 30min 单位秒。用后缀 s 或不用后缀。示例 100s 源码 及 配置方法 桌面新建文本文件&#xff0c;输入下面…

WPF自定义漂亮顶部工具栏 WPF自定义精致最大化关闭工具栏 wpf导航栏自定义 WPF快速开发工具栏

在WPF应用程序开发中&#xff0c;自定义一个漂亮的顶部工具栏具有多重关键作用&#xff0c;它不仅增强了用户体验&#xff0c;还提升了整体应用的专业性和易用性。以下是对这一功能的详细介绍&#xff1a; 首先&#xff0c;自定义顶部工具栏是用户界面设计的重要组成部分&…