当前位置: 首页 > news >正文

[从零开始学数据库] 基本SQL

注意我们的主机就是我们的Mysql数据库服务器 这里我们可以用多个库

SQL分类(核心是字段的CRUD)![](https://i-blog.csdnimg.cn/img_convert/0432d8db050082a49258ba8a606056c7.png)

![](https://i-blog.csdnimg.cn/img_convert/bdf5421c2b83e22beca12da8ca89b654.png)

重点是我们的对表中字段的crud(特别是我们的查询 注意多表查询 条件查询 分页查询(插件)等)

javase? mysql


DDL:库 表 字段管理

这里我们看的懂就可以

DDL-数据库操作

![](https://i-blog.csdnimg.cn/img_convert/c52f342254e2a7860df6b655774de054.png)

注意这里我们的[] 就代表是可写可不写

if not exists:存在则创建 不存在则不创建

字符集:utf8mb4 等(通常不写)

DDL-表操作-查询

![](https://i-blog.csdnimg.cn/img_convert/4ad84b96a1fdd490671abc1e4592e386.png)

使用表操作需要先使用use database(库–>表–>字段)

对应我们表的管理操作我们的图形化界面就可以了

DDL-表操作-创建

![](https://i-blog.csdnimg.cn/img_convert/425fe83ce52f932f5c14b018063a51b9.png)

这里就使用了我们的图形化界面可以一键创建对应的表结构(字段 字段类型 字段的约束等(如唯一 主键 自增等))

我们的表创建出来 怎么和表中的字段交互(SQL+mybatis 对应了我们的entity+vo等 看我们的ssm+项目)

DDL-表操作-数据类型

(看重点)

MySQL中的数据类型主要分为三类:数值类型字符串类型日期时间类型

数值类型

注意我们的unsigned

常用: tinyint int double decima (unsigned)

(现在一般使用图形化界面)这里我们的double数据类型 需要指定两个参数 xxx double(a,b)

a:小数总位数 b:小数的占用位数

(和我们java中对应 集合只能存包装类 integer Long Double)

字符串类型

char性能高,varchar性能较差(时间换空间)

char:定长 如果我们使用的长度没有达到我们定义的长度 会使用空格补充

varchar:变长 存储多少占用多少空间 但是超过了我们定义的长度会扩容再复制 然后使用的时候会先计算长度

eg:苍穹 定义性别就使用了我们的char存储sex

(这里我们的mybatis就对应了我们的Localdate 和Localdatetime 对应上了mysql中的date和datetime)

看date datetime

DDL-表操作-修改

![](https://i-blog.csdnimg.cn/img_convert/b14caf5a2d95776d6dd24ac75176e773.png)

这里是添加我们的字段

DDL-表操作-删除

![](https://i-blog.csdnimg.cn/img_convert/4f5f568699ebfefd62522147770a8fd2.png)

使用truncate后,数据库会删除原表并创建一张不含数据的空表

DML(核心 表数据CRUD)

(因为mysql的本质是二维表 这里我们就使用条件精确到单行)

DML全称是Data Manipulation Language(数据操作语言), 用来对数据库中表的数据记录进行增删改操作

idea图形化界面 来理解我们的查询!!!(去我们的苍穹来学) 我们就用idea内置的连接数据库的(和dategrip一样)

DML-添加数据

![](https://i-blog.csdnimg.cn/img_convert/b87eebd01aeb90ba65bdbacea5dcf32d.png)

注意这里我们的插入非批量就插入一个

分清楚这里批量和指定

DML-修改数据

![](https://i-blog.csdnimg.cn/img_convert/009a21f5a7678c5332864f2682b02009.png)

注意这里我们的动态SQL本质优化了 这里我们的项目表通常是怎么设计的

DQL(核心)

(注意mybatis有驼峰命名选项)

DQL全称是Data Query Language(数据查询语言),用来查询数据库中表的记录

列表:对应多个的意思 如条件列表就是多个条件

熟悉从基础的查询语句到各种细致的查询语句(查询语句的各个部分可以组成一个复杂仔细的查询语句)

DQL-基础查询(别名)

![](https://i-blog.csdnimg.cn/img_convert/af9135c5e57fe9e9c9c814463ac130a2.png)

as可省略(通常我们就直接省略 直接起表/字段的别名 然后用.判断对应的属性 这样我们控制台获得的就是别名对应的字段) 我们起别名本质是为了区分

我们给表起了别名就不能使用原先的表名 只能使用别名来访问对应的字段

并且我们配合mybatis是用别名返回封装(如两个表都有name这个字段 我们实体类只有一个name 则可以将一个字段起别名然后封装到实体类对应的同名属性)

不建议使用*****,因为会影响效率,并且不直观

这里我们的去重可以单独对一个字段处理

DQL-条件查询(核心是过滤我们查询的表 成一个符合条件的新表)

看我们的执行顺序理解 我们的查询几次

注意我们的条件有很多

这里我们的模糊查询就使用了like+concat %占位符 (%代表匹配任意字符

这里我们就使用了like模糊查询 concat函数是为了凭借我们的字符这里使用凭借是因为我们要使用#{} 来读我们的属性

between之后的是最小值

注意in()是在列表里面之一都可以

多个条件就用逻辑运算符组装起来

DQL-聚合函数

**聚合函数将一列函数作为一个整体,进行纵向计算(注意我们的聚合函数是作用于我们表中的某一列(字段/字段列表就是作用于我们的全部字段)的)**

注:null值不参与所有聚合函数的运算

DQL-分组查询

![](https://i-blog.csdnimg.cn/img_convert/ceb4a7d1c86b69209c556bdfd9e1768f.png)

注意我们先执行where 查询到的再group by 然后再having分组

聚合函数也得等where初步筛选

<font style="color:rgb(0, 0, 0);">GROUP BY</font> 子句会按照指定列的值对数据进行分组。也就是说,该列中值相同的行就会被归为同一组。

(这样就会出现同一组的其他字段值无规律 这样我们通常就还会查询 分组字段配合聚合函数)

这样我们就可以使用聚合函数去配合对应的组处理

注意这里我们查询无关字段 也是只会显示第一个字段值

注意我们的表设计是和我们的业务相关

DQL-排序查询

![](https://i-blog.csdnimg.cn/img_convert/bdcaac4645450b8ef54413b3d9fdd9a6.png)

asc为默认值,可省略

通常我们只依靠单字段排序我们的行

DQL-分页查询

![](https://i-blog.csdnimg.cn/img_convert/c4e2086ae758dd47ea1f00bff60dd0d4.png)

我们实际开发通常都是使用我们的pagehelper插件

DQL-执行顺序(*)

![](https://i-blog.csdnimg.cn/img_convert/5a613baeeb8758a7c668fcb0f0fc5f6a.png)

from -> where(>聚合) -> group by -> select -> order by(having) -> limit

(这解释了为什么我们给表起别名 我们select的时候就可以使用别名了 但是我们的字段别名不能在我们的where条件使用)

什么表–>什么条件–>怎么分组–>查什么字段–>怎么排序

DCL

DCL全称Data Control Language(数据控制语言), 用来管理数据库用户,控制数据库的访问权限

(我们不用关心)

DCL-用户管理

![](https://i-blog.csdnimg.cn/img_convert/49bd7f3de9be3d4322003763a6a77a27.png)

-- 创建用户 itcast ,只能够在当前主机localhost访问,密码123456
create user 'itcast'@'localhost' identified by '123456';
-- 创建用户 heima ,可以在任意主机访问该数据库,密码123456
create user 'heima'@'%'identified by'123456';
-- 修改用户 heima 的访问密码为 1234
alter user'heima'@'%' identified with mysql_native_password by '1234';

DCL-权限控制

![](https://i-blog.csdnimg.cn/img_convert/083e381d8e74714a4674de9b03f03207.png)

相关文章:

  • 谷歌发布大模型提示工程《Prompt Engineering》白皮书
  • STM32F4移植FATFS管理SD卡
  • AI测试引擎中CV和ML模型的技术架构
  • 【Linux】VIM 编辑器,编辑加速引擎
  • 赚钱的底层逻辑
  • 开关二极管热插拔保护方案
  • MySQL-存储引擎和索引
  • [dp11_最长子序列(不连续)] 最长数对链 | 最长定差子序列 最长的斐波那契子序列的长度
  • Nginx底层架构(非常清晰)
  • redis系列--1.redis是什么
  • qt(vs2010) 手动配置moc生成规则
  • 数据大屏只能撑撑场面?
  • Uniapp:本地存储
  • 卫星电话扬帆智慧海洋,构筑蓝海通信新生态
  • 48V/2kW储能电源纯正弦波逆变器详细设计方案-可量产
  • 【7】深入学习Buffer缓冲区-Nodejs开发入门
  • CS5346 - Annotation in Visualization (可视化中的注释)
  • 【Python爬虫】简单案例介绍3
  • 详细解读 box-sizing: border-box;
  • 大模型——Crawl4AI入门指南
  • 2025扬州“烟花三月”国际经贸旅游节开幕,37个重大项目现场签约
  • 女子报警称醉酒后疑似被性侵,长沙警方:嫌犯邱某某已被刑拘
  • 男子拍摄女性视频后在网上配发诱导他人违法犯罪文字,已被警方行拘
  • 董军与越南国防部长共同主持中越边境国防友好交流活动
  • 商务部:对原产于日本的进口电解电容器纸继续征收反倾销税
  • 武汉一超高层住宅顶楼违建成“不死小强”,相关部门回应