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

JavaWeb后端实战(MySql基础)

文章目录

  • 一、MySql概述
    • 1.1安装
      • 1.1.1 版本
      • 1.1.2 连接
      • 1.1.3 企业使用方式(了解)
    • 1.2 数据模型
      • 1.2.1 关系型数据库
      • 1.2.2 数据模型
    • 1.2 SQL简介
      • 1.2.1 分类
      • 1.2.2 通用语法
  • 二、SQL语句(DDL、DML、DQL)
    • 2.1 DDL(数据定义语言)
      • 2.1.1 创建表的语法
      • 2.1.2 数据类型
      • 2.1.3 设计表的流程
      • 2.1.4 查询
      • 2.1.5 修改
    • 2.2 DML(数据操作语言)
      • 2.2.1 insert(增)
      • 2.2.2 update(改)
      • 2.2.3 delete(删)
    • 2.3 DQL(数据查询语言)
      • 2.3.1 完整的DQL语句语法
      • 2.3.2 基本查询
      • 2.3.3 条件查询
      • 2.3.4 分组查询
        • 2.3.4.1 聚合函数
        • 2.3.4.2 分组查询语法
      • 2.3.5排序查询
      • 2.3.2 分页查询

一、MySql概述

1.1安装

1.1.1 版本

MySQL官方提供了两个版本:
商业版(MySQL Enterprise Edition):该版本是收费的,我们可以使用30天,官方会提供对应的技术支持
社区版本(MySQL Community Server):该版本是免费的,但是MySQL不回提供任何技术支持

1.1.2 连接

MySQL服务启动完毕后,然后在使用如下指令来连接MySQL服务器:

mysql -u用户名 -p密码 [-h数据库服务器的ip地址 -p端口号]

注意:
-h 参数不加,默认连接的是本地127.0.0.1的MySQL服务器
-p 参数不加,默认连接的端口号是3306
上述指令,可以有两种形式:
①密码直接在-p参数后直接指定(这种方式不安全,密码直接以明文形式出现在命令行)
②密码在-p回车之后,在命令行输入密码,然后回车

1.1.3 企业使用方式(了解)

通过MySQL客户端命令行,如何来连接服务器上部署的MySQL

mysql [-h数据库服务器的ip地址 -p端口号] -u用户名 -p密码

1.2 数据模型

1.2.1 关系型数据库

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库,所谓的二维表就是由行和列组成的
二维表的优点:
①使用表存储数据,格式统一,便于维护
②使用SQL语言操作,标准统一,使用方便,可用于复杂查询

1.2.2 数据模型

MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图如下:
在这里插入图片描述
①通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库
②使用MySQL客户端,向数据库管理系统发送一条SQL语句,由数据库管理系统根据SQL语句指令去操作数据库中的表结构及数据
③一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录
在MySQL数据库服务器当中存储数据,你需要:
①先创建数据库(可以创建多个数据库,之间是相互独立的)
②在数据库下再创建数据表(一个数据库下可以创建多张表)
③再将数据存放再数据表中(一张表可以存储多行数据)

1.2 SQL简介

SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准

1.2.1 分类

在这里插入图片描述

1.2.2 通用语法

①SQL语句可以单行或者多行书写,以分号结尾
②SQL语句可以使用空格/缩进来增强语句的可读性
③MySQL数据库的SQL语句不区分大小写
④注释:

Ⅰ单行注释:–注释内容 或 # 注释内容(MySQL特有);
Ⅱ多行注释:/* 注释内容 */

二、SQL语句(DDL、DML、DQL)

2.1 DDL(数据定义语言)

相关语法:

-- 查询所有数据库
show databases;-- 查询当前数据库
select database();-- 使用/切换数据库
use 数据库名;-- 创建数据库
create database [if exists] 数据库名 [default charset utf8mb4];-- 删除数据库
drop database [if exists] 数据库名;-- 数据库不存在,则创建该数据库;如果存在则不创建
create database if not extists 数据库名;

注意:
上述语法中的database,也可以替换成 schema。如create schema db01;MySQL版本中,默认字符集为utf8mb4

2.1.1 创建表的语法

create table 表名(字段1 字段类型 [约束] [comment 字段1注释],…………………………………………字段2 字段类型 [约束] [comment 字段1注释]
)[comment 标注释];

示例:

create table tb_user (id int comment 'ID,唯一标识', # id是一行数据的唯一标识(不能重复)username varchar(20) comment '用户名',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '性别'
) comment '用户表';

约束:约束是作用于标种字段上的规则,用于限制存储在表中的数据
目的:保证数据库的正确性,有效性和完整性
在这里插入图片描述

create table tb_user (id int primary key comment 'ID,唯一标识',username varchar(20) not null unique comment '用户名',name varchar(10) not null comment '姓名',age int comment '年龄',gender char(1) default '男' comment '性别'
) comment '用户表';
主键自增:auto_increment每次插入新的行记录时,数据库自动生成id字段(主键)下的值具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

2.1.2 数据类型

MySQL中的数据类型有很多种,主要分为三类:数值型、字符串类型、日期时间类型

①数值类型
数值类型
示例:

 年龄字段 ---不会出现负数, 而且人的年龄不会太大age tinyint unsigned分数 ---总分100, 最多出现一位小数score double(4,1)

问:数值类型在定义的时候,后面加了unsigned关键字是什么意思?
Ⅰunsigned表示无符号类型,表示只能取0及正数
Ⅱ不加默认是signed,表示可以取负数

②字符串类型
字符串类型
注意:
char于varchar都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段的长度无关。而varchar是边长字符串,指定的长度为最大占用长度,相对来说,char的性能会更好一些

示例:

 用户名 username ---长度不定, 最长不会超过50username varchar(50)手机号 phone ---固定长度为11phone char(11)

③日期时间类型
日期时间类型
示例:

生日字段 birthday ---生日只需要年月日birthday date创建时间 createtime --- 需要精确到时分秒createtime datetime

2.1.3 设计表的流程

①阅读页面原型及需求文档
②基于页面原型和需求文档,确定原型字段(类型、长度限制、,约束)
③再增加表设计所需要的业务基础字段(id、create_time、update_time)

2.1.4 查询

关于表结构的查询操作,一般都是直接基于图形化界面操作。

-- 查询当前数据库的所有表
show tables;-- 查看指定表结构
desc 表名 ; #可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息-- 查询指定表的建表语句
show create table 表名 ; 

2.1.5 修改

关于表结构的修改操作,一般都是直接基于图形化界面操作。

-- 添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
示例:alter table tb_emp add qq varchar(11) comment 'QQ号码';-- 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
示例:alter table tb_emp modify qq varchar(13) comment 'QQ号码';-- 删除字段
alter table 表名 drop 字段名;
示例:alter table tb_emp drop qq_num;-- 修改表名
rename table 表名 to 新表名;
示例:rename table emp to tb_emp;-- 删除表语法
drop table [ if exists ] 表名;
-- if exists :只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。
示例:drop table if exists tb_emp; -- 在删除表时,表中的全部数据也会被删除。

2.2 DML(数据操作语言)

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

2.2.1 insert(增)

-- 向指定字段添加数据
insert into 表名 (字段名1, 字段名2) values (1,2);-- 全部字段添加数据
insert into 表名 values (1,2, ...);-- 批量添加数据(指定字段)
insert into 表名 (字段名1, 字段名2) values (1,2), (1,2);-- 批量添加数据(全部字段)
insert into 表名 values (1,2, ...), (1,2, ...);

注意:
①插入数据时,指定的字段顺序需要与值的顺序是一一对应的
②字符串和日期数据应该包含在引号中
③插入的数据大小,应该在字段的规定范围内

2.2.2 update(改)

update 表名 set 字段名1 =1 , 字段名2 =2 , .... [where 条件] ;
示例:update emp set entry_date='2010-01-01', update_time=now();

注意:
①修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据
②在修改数据时,一般需要同时修改公共字段update_time,将其修改为当前操作时间。

2.2.3 delete(删)

delete from 表名 [where 条件] ;
示例:delete from emp where id = 1;

注意:
①DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
②DELETE语句不能删除某一个字段的值(可以使用UPDATE,将该字段设置为NULL即可)
③当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点Execute即可。

2.3 DQL(数据查询语言)

2.3.1 完整的DQL语句语法

select字段列表
from表名列表
where条件列表
group by分组字段列表
having分组后条件列表
order by排序字段列表
limit分页参数

①基本查询(select……from……)
②条件查询(where)
③分组查询(group by)
④排序查询(order by)
⑤分页查询(limit)

2.3.2 基本查询

-- 查询多个字段
select 字段1, 字段2, 字段3 from 表名;-- 查询所有字段(通配符)
select * from 表名;-- 为查询字段设置别名
select 字段1 [as 别名1], 字段2 [as 别名2] from 表名;-- 去除重复记录
select distinct 字段列表 from 表名;

注意:
“*” 代表拆线呢所有字段,在实际开发中尽力少用(不直观、影响效率)

2.3.3 条件查询

select 字段列表 from 表名 where 条件列表;

在这里插入图片描述
在这里插入图片描述
①如何进行null值的判断:is null ; is not null
②模糊匹配中的通配符 %(任意个字符);_(一个字符)
③如何组装多个查询条件:and / or

2.3.4 分组查询

分组:就是按列进行分类(指定列下相同的数据归为一类),然后可以对分类的数据进行合并计算
分组拆线呢通常会使用聚合函数进行计算

2.3.4.1 聚合函数

聚合函数:将一列数据作为一个整体,进行纵向计算
聚合函数
①count :按照列去统计有多少行数据。在根据指定的列统计的时候,如果这一列中有null的行,该行不会被统计在其中。
②sum :计算指定列的数值和,如果不是数值类型,那么计算结果为0
③max :计算指定列的最大值
④min :计算指定列的最小值
⑤avg :计算指定列的平均值
注意:
①null值不参与计算所有的聚合函数
②统计数量可以使用:count(*);count(字段);count(常量);推荐使用count(*)

2.3.4.2 分组查询语法
-- 条件查询
select 字段列表 from 表名 [where 条件列表] group by 分组字段名 [having 分组后过滤条件];

where与having的区别:
①执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后会结果进行过滤
②判断调价不同:where不能对聚合函数进行判断,而having可以
注意:
①分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
②执行顺序:where > 聚合函数 > having

2.3.5排序查询

select 字段列表 from 表名 [where 条件列表] [group by 分组字段名 having 分组后过滤条件] order by 排序字段 排序方法;

排序方法:升序(asc)降序(desc);默认为升序,是可以不写的
注意:
如果是多字段排序,当地一个字段值相同时,才会根据第二个字段进行排序

2.3.2 分页查询

select 字段 from 表名 [where 条件] [group by 分组字段 having 过滤条件] [order by 排序字段 排序函数] limit 起始索引, 查询记录数;

说明:
①起始索引从0开始 起始索引 = (查询页码 - 1)* 每页显示记录数
②分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
③如果查询的是第一页的数据,起始索引可以省略,直接简写为 limit 10

http://www.dtcms.com/a/461407.html

相关文章:

  • 网站设计 三把火科技家装商城系统网站建设
  • 新书速览|AI摄影与创意设计:Stable Diffusion-ComfyUI
  • 网站源码是啥wordpress 移植
  • NLP-注意力机制
  • 从比特流到可靠帧——【深入理解计算机网络05】数据链路层:组帧,差错控制,流量控制与可靠传输的工程级落地
  • React + Ant Design + Tailwind CSS 打造「无痕」垂直滚动区域:功能全上,滚动条隐身
  • 设计模式篇之 模式总览(分类)
  • Kubernetes 入门指南
  • SuperMap iClient3D for WebGL 调用GPA服务实现地质体模型裁剪封边
  • HarmonyOS布局利器:RelativeContainer实现灵活相对定位
  • 钦州房产网站建设wordpress完全卸载教程
  • 【ARM 嵌入式 编译系列 10.9.1 -- llvm-size -B 与 llvm-readelf -S 区别】
  • 必应搜索引擎网站最快新闻资讯在哪看
  • 企业可以在哪些网站做免费宣传沈阳市网站制作
  • 技术解析:TENGJUN JA05-BPD035-A防水耳机插座——IPX7防护与高可靠性的音频连接标杆
  • 红队APT组织利用泄露的IAM密钥劫持AWS账户实施数据窃取
  • 做汽车团购网站聊城网站建设包括哪些
  • java 开发常用框架的高级注解使用汇总及对应demo演示
  • 盲盒小程序抽赏玩法拆解:六大核心模式 + 从获客到变现的增长路径
  • 支付网站开发怎么做账网站被墙了怎么办
  • ip获取城市省份信息
  • 基于pth模型文件,使用flask库将服务端部署到开发者电脑
  • 【调度器】DolphinScheduler任务钉钉告警
  • 软考-系统架构设计师 软件架构风格详细讲解
  • zookeeper:架构原理和使用场景
  • 东莞网站建设的方案网站的建设及发布步骤
  • mac下Docker安装nacos
  • Spring Boot事务详解与实战应用
  • 【Spring Boot JAR 解压修改配置后重新打包全流程(避坑指南)】
  • 聚焦生活照护能力培育:老年生活照护实训室建设清单的模块设计与资源整合