2026/2/21 13:05:05
网站建设
项目流程
建网站英语怎么说,wordpress文章微信分享代码,新网域名注册官网,泾阳做网站本文总结#xff1a;MySQL是一种关系型数据库管理系统#xff0c;支持SQL语言操作数据。文章介绍了MySQL的基本概念、安装连接方法、数据库创建及数据模型。重点讲解了SQL语句分类#xff08;DDL、DML、DQL、DCL#xff09;及其常用操作语法#xff0c;包括表创建、约束设…本文总结MySQL是一种关系型数据库管理系统支持SQL语言操作数据。文章介绍了MySQL的基本概念、安装连接方法、数据库创建及数据模型。重点讲解了SQL语句分类DDL、DML、DQL、DCL及其常用操作语法包括表创建、约束设置、数据类型选择等。同时介绍了DataGrip等数据库管理工具的使用以及JDBC和MyBatis框架的基本原理和操作方式。文章还涉及数据库连接池、XML映射配置等内容介绍。MySQL简单介绍MySQL数据库DB存储和管理数据的仓库。数据库管理系统DBMS操纵和管理数据库的大型软件。SQL操作关系型数据库的编程语言定义了一套统一标准。MySQL安装根据官方文档安装。MySQL连接命令mysql -hxxx -Pxxx -uxxx -pxxxh数据库地址P端口号u数据库名字p数据库密码。创建MySQL数据库命令create database 名字关系型数据库建立在关系模型基础上由多张相互连接的二维表组成的数据库。注如果不是由二维表组成则不是关系型数据库。MySQL数据模型客户端连接MySQL数据库服务器再通过SQL语句操作数据。SQL语句分为四类DDL数据定义语言用来定义数据库表的对象数据库表字段DML数据操作语言用来对数据库表的数据进行增删改DQL数据查询语言用来查询数据库表的记录DCL数据控制语言用来创建数据库用户控制数据库的访问权限DDL对数据库、对表操作创建表、数据类型、查询修改删除数据库操作语法:show databases查询所有数据库select database()查询当前数据库use 数据库名使用/切换数据库create database [if no exists] 数据库名 [default charset utf8mb4]创建数据库drop database [if exists] 数据库名删除数据库注database可以替换成schema。default charset utf8mb4是创建字符集MySQL8默认字符utf8mb4DataGrip数据库管理工具管理和开发MySQL、Oracle、PostGreSQL用来和数据库连接和idea都是jetbrain旗下的所以idea也集成了这个工具。因为用cmd窗口太单调而且退出后没有记录的保存所以用这款图形化工具编写SQL。重点表操作语法1.创建表create table tablename字段1 字段类型 [约束] [‘字段1注释’]......字段2 字段类型 [约束] [‘字段2注释’]comment ‘表注释’约束作用于表中字段的规则用于限制存储在表中的数据保证数据库中数据的正确性有效性完整性有些需要唯一性例如id、用户名。要指定多个约束中间用空格隔开。数据库中常见的5种约束约束 描述 关键字1.非空约束 限制该字段值不能为null not null2.唯一约束 保证字段的所有数据都是唯一 unique3.主键约束 主键是一行数据的唯一标识非空且唯一 primary key4.默认约束 保存数据时如果未指定字段值则采用默认值 default ‘值’5.外键约束 让两张表的数据建立连接保证数据一致性和完整性 foreign key补充主键约束一张表只能有一个主键还可以在primary key后加auto_increment表示主键自增如给id添加主键约束则不需要手动输入123...会自动添加会从最大值开始往后自增避免主键值重复。2.数据类型MySQL中的数据类型主要分三类数值类型、字符串类型、日期时间类型。数值类型tinyint、smallint、mediumint、int、bigint、float单精度、double双精度、decimal精度更高小数型的写法例如float整个数字长度小数位个数数值类型的选取原则在满足业务需求的前提下尽可能选占据最小磁盘空间的。如年龄就可以选无符号的整型tinyint写法age tinyint unsigned字符串类型char定长字符串、varchar变长字符串、tinyblob、tinytext、blob、text、mediumblob、mediumtext、longblob、longtext例如char10为固定占用10个字符空间varchar10为最多占用10个字符空间如存入A则char型占10个空间varchar型占1个空间。日期类型date、time、year、datetime、timestamp3.查询修改删除show table; ---查询当前数据库的所有表desc table; ---查询表结构show create table 表名; ----查询建表语句alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]; ---添加字段alter table 表名 modify 字段名 新数据类型(长度); ---修改字段类型alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];---修改字段名与字段类型alter table 表名 drop column 字段名; ---删除字段alter table 表名 rename to 新表名; ---修改表名drop table [if exists] 表名; ---删除表DML对数据库中表的数据进行操作增删改增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,...);改updateupdate 表名 set 字段名1 值1,字段名2 值2,...[where 条件];[where 条件]意思是满足这个条件才更新可写可不写不过如果不写条件则会把整个数据表都更新修改。删deletedelete from 表名 [where 条件];删掉的是指定条件的那一整行的数据delete操作不能删除某个字段的值如果要删只能用update将这个字段设为NULL。DQL常用:对表中的数据进行查询操作关键字select完整的DQL语句语法select 字段列表from表名列表where条件列表group by分组字段列表having分组后条件列表order by排序字段列表limit 分页参数基本查询select...from...查询多个字段select 字段1,字段2,字段3 from 表名;查询所有字段2种select * from 表名; select 列所有字段 from表名;(推荐)为查询字段设置别名as可以省略select 字段1[as 别名1] from 表名;去除重复记录select distinct 字段列表 from 表名;条件查询whereselect 字段列表 from 表名 where 条件列表;条件涉及到比较运算符和逻辑运算符、、、、、!或、between...and...在某个范围内含最大最小值、in(...)满足在in中的值多选一类似or、like 占位符模糊匹配_匹配单个字符%匹配任意个字符、is null是null、is not null不是null、and或、or或||、not或分组查询group byselect 字段列表 from 表名 where 条件列表 group by 分组字段名 [having 分组后过滤条件];分组会涉及到聚合函数就是将一列数据作为一个整体进行纵向计算数据为null值的不参与所有聚合函数的计算。count函数有三种同样效果的方法优先推荐使用*然后常量再是字段count(字段)、count(*)、count(常量)、max(字段)、min(字段)、avg(字段)、sum(字段)。where和having之间的区别where是分组之前过滤的不满足where条件的不参与分组having是分组之后过滤的条件where不能对聚合函数进行判断而having可以。排序查询order byselect 字段列表 from 表名 where 条件列表 group by 分组字段名 [having 分组后过滤条件] order by 排序字段 排序方式;分为升序asc和降序desc默认为升序asc可以不写。分页查询limitselect 字段列表 from 表名 where 条件列表 group by 分组字段名 [having 分组后过滤条件] order by 排序字段 排序方式 limit 起始索引,查询记录数;起始索引为0为0时可以省略不写查询记录数是每页展示的个数。工作中前端传过来的是页码要转起始索引起始索引计算公式页码-1*查询记录数。分页查询是方言每个数据库都有自己的关键字MySQL是limit。JDBC了解即可用Java程序操作数据库就是用Java语言操作关系型数据库的一套APIJDBC是最底层的像Mybatis、MybatisPlus、Hibernate、SpringDataJPA都是操作数据库的它们底层都基于JDBC。使用步骤创建Maven项目引入依赖准备数据库表在idea编写JDBC程序1.//注册驱动Class.forname(className:”...”); 2.//获取数据库连接String url”jdbc:mysql://localhost:3306/数据库表的文件名:”; String username”root”; String password”123456”; Connection connectionDriverManager.getConnection(url,username,password); 1. //获取SQL语句执行对象 Statement statement connection.createStatement(); 2. //执行SQL statement.executeUpdate(sql:”写DML语句”); 3. //释放资源 statement.close(); connection.close();基础JDBC执行DQL语句将查询结果封装到表的对象中ResultSet结果集对象ResultSet rsstatement.executeQuery()。它的查询后解析方法有next()将光标从当前位置向前移动一行并判断当前行是否为有效行返回值为boolean。getXxx()获取数据可以根据列的编号获取也可以根据列名获取推荐Xxx为类型。通常用while循环来查询。预编译SQL推荐PreparedStatement ps conn.preparedStatement(“......where username? and password?”);优势一可以防止SQL注入更安全。SQL注入通过控制输入来修改预先设置好的SQL语句以达到执行代码对服务器攻击的方法。优势二性能更高Mybatis优秀的持久层dao框架用于简化JDBC的开发使用步骤创建springboot工程引入Mybatis相关依赖准备数据库表、实体类application.properties中配置数据库连接信息定义Mapper接口Mapper编写SQL在springboot的单元测试类上需要添加SpringBootTest。Mybatis的辅助配置配置SQL提示提高开发效率在idea中右击选择show context actions然后选择inject language or reference然后还要和数据库建立连接在idea中的database的source中选择MySQL。配置Mybatis的日志输出在application.properties中输入mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImplMybatis的优势解决了JDBC的硬编码配置、繁琐、资源浪费、性能降低。数据库连接池它是个容器用来分配、管理数据库连接类似于线程池。连接池作用允许应用程序重复使用一个现有的数据库连接而不是重新再建一个就是用完后不会关闭这个连接资源而是返回连接池下一个要连接再从连接池拿出来。还可以避免用户长久占用连接而没有归还连接池导致的数据库连接遗漏问题通过预设占用SQL连接而不执行的空闲时间时间到则归还。数据库连接池标准接口DataSource由第三方组织实现此接口获取连接Connection getConnection() throws SQLException常见数据库连接池产品Druid德鲁伊、Hikari追光者、C3P0、DBCP常用前两种连接池Hikari是springboot默认自带的不需要配置。切换数据库连接池步骤引入连接池的依赖然后再在application.properties中配置连接池spring.datasource.type连接池路径Mybatis中的增删改查操作在Mapper接口中书写删除操作Delete(“delete from user where id#{id}”) //#{}类似预编译 public void deleteById(Integer id);也可以有返回值把void替换掉返回的是DML语句执行影响的记录数。#{}推荐和${}的区别#{}是占位符会替换成生成预编译SQL通常用在动态修改数据。而${}是字符串拼接符将参数值直接拼在SQL中通常用于动态修改表名和字段名。新增操作Insert(“insert into user(name,age,password) values(#{name},#{age},#{password})”) public void insert(User user);由于可能新增的字段数据比较多如果在方法里一个一个写比较麻烦所以使用User对象来把字段封装进去那么字段就变成对象里的属性名来使用。更新操作Update(“update user set name#{name},age#{age} where id#{id}”) public void update(User user);查询操作Select(“select * from user where username#{username} and password#{password}”) public user findUserNameAndPassword(Param(“username”)username, Param(“password”) String password);因为Java执行后将它编译成字节码文件后例如username、password名字不会保留下来如果是多个形参那#{username}、#{password}就找不到对应的名字的值所以要用Param()来起对应别名。而如果是单个形参就不需要。基于官方骨架创建的springboot项目Param注解可以省略不写。XML映射配置在Mybatis中既可以通过注解来配置SQL语句也可以通过XML配置文件配置SQL语句。XML默认规则1.XML映射配置文件名与Mapper接口名称一致并且都放在相同包下相同包名。xml文件配置信息去Mybatis官网copy。2. XML文件中的namespace属性为Mapper接口全限名一致包名和接口名都要写。3. XML文件中sql语句的id与Mapper接口的方法名一致并保持返回类型一致。例mapper namespace”com.itheima.mapper.userMapper” select id”findAll” resultType”com.itheima.pojo.User” //resultType写封装的对象 select id,name,username,password,age from user /select /mapper开发中如果是简单的增删改查就用注解如果要实现复杂的SQL功能用XML。辅助配置XML映射文件位置如果没有按规则配置xml,可在application.properties中指定位置mybatis.mapper-locationsclasspath:目录下的文件名/*.xml辅助配置快速开发提高效率MybatisX是一款插件可以快速定位Mapper接口以及Mapper映射配置文件。