
MySql学习
文章平均质量分 64
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
自由与束缚JavaJavaScript
这个作者很懒,什么都没留下…
展开
-
035_jdbc-mysql-dbutils的使用
1. 新建一个名叫dbutils的java项目, 使用c3p0的配置2. 添加dbutils的相关jar3. 使用c3p0的JDBCUtil.javapackage com.lywgames.util;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.sql.DataSource;i原创 2021-01-30 17:31:19 · 139 阅读 · 2 评论 -
034_jdbc-mysql-C3P0
1. 创建一个名称为JDBC_C3P0的Java工程2. 添加c3p0的jar3. 代码中设置连接数据库的信息4. 在配置文件c3p0-config.xml(必须叫这个名字, 并且放置在src目录下, 因为这样可以自动加载)中设置连接数据库的信息5. c3p0-config.xml配置详情<?xml version="1.0" encoding="UTF-8"?><c3p0-config> <!-- default-config 默认原创 2021-01-30 17:20:40 · 263 阅读 · 0 评论 -
033_jdbc-mysql数据库连接池
1. 数据库连接实际上是客户端和远程数据库服务器建立了一个socket连接, 创建过程比较耗性能和时间, 因此出现了数据库连接池技术。2. 数据库连接池负责分配、管理和释放数据库连接, 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。这项技术能明显提高对数据库操作的性能。3. 连接池基本的思想是在系统初始化的时候, 将数据库连接作为对象存储在内存中, 当用户需要访问数据库时, 并非建立一个新的连接, 而是从连接池中取出一个已建立的空闲连接对象。使用完毕后, 用户也并非将连接关闭,原创 2021-01-30 17:01:43 · 158 阅读 · 0 评论 -
032_jdbc-mysql批量操作
二位亲热原创 2021-01-30 00:00:25 · 168 阅读 · 0 评论 -
031_mysql事务的安全隐患
一. 事务的安全隐患1. 读的安全隐患1.1. 脏读: 一个事务读到另外一个事务还未提交的数据。事务A读取了事务B更新的数据, 然后B回滚操作, 那么A读取到的数据是脏数据。1.2. 不可重复读: 一个事务读到了另外一个事务提交的数据, 造成了前后两次查询结果不一致。事务A多次读取同一数据, 事务B在事务A多次读取的过程中,对数据作了更新并提交, 导致事务A多次读取同一数据时, 结果不一致。1.3. 幻读: 一个事务读到了另一个事务insert的数据, 造成前后查询结果不一致。系统管理员A将原创 2021-05-22 18:30:30 · 246 阅读 · 0 评论 -
030_jdbc-mysql事务
1. 事务概念1.1. 事务(Transaction)其实指的是一组操作, 里面包含许多个单一的逻辑。只要有一个逻辑没有执行成功, 那么都算失败。所有的数据都回归到最初的状态。2. 为什么要有事务?2.1. 为了确保逻辑的成功。例子: 银行的转账。3. 事务的特性3.1. 原子性(Atomicity): 指的是事务是一个不可分割的工作单位, 事务中的多个操作要么都发生, 要么都不发生。3.2. 一致性(Consistency): 指的是事务执行前后, 数据的完整性没有被破环。比如A向原创 2021-01-30 12:53:59 · 129 阅读 · 0 评论 -
029_jdbc-mysql二进制数据
1. MySQL支持的二进制数据类型:tinyblob, blob, mediumblob和longblob。2. JDBC中我们用PrepareStatement的SetBlob和GetBlob获取和设置二进制数据。3. 创建BlobDaoImpl.java来对二进制数据进行存储和获取原创 2021-01-29 23:59:39 · 177 阅读 · 0 评论 -
028_jdbc-mysql大文本
1. 例如我们存储一篇文章、大量文字, 就需要用到大文本。2. MySQL的大文本类型有: tinytext, text, mediumtext, longtext。3. JDBC中我们用PrepareStatement的SetClob和SetNClob来设置大文本存储;使用GetClob和GetNClob获取大文本数据。4. 新建一个JDBC_CLOB工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件, 同时在Resources目录下存放一个文本文件原创 2021-01-29 23:58:15 · 713 阅读 · 0 评论 -
027_jdbc-mysql几个常用的日期类型
1. 表示年月日类型:java.sql.Date, 对应MySQL的date类型。2. 表示时分秒类型:java.sql.Time, 对应MySQL的time类型。3. 表示年月日时分秒类型:java.sql.Timestamp, 对应MySQL的timestamp类型。4. 新建一个JDBCRiQi工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件5. 编写SqlTime.java, 打印java.sql的几个日期类型, java.sql.Time原创 2021-01-29 23:46:34 · 408 阅读 · 0 评论 -
026_jdbc-mysql-PrepareStatement解决sql注入
1. 新建一个JDBCPrepareStatement工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件2. PreparedStatement对象相比较以前的Statement对象, 预先处理给定的sql语句, 对其执行语法检查。 在sql语句里面使用?占位符来替代后续要传递进来的变量。后面不管传递什么进来, 都把它看成是字符串, 不会产生任何的关键字。3. 使用PreparedStatement对象编写程序4. 输入任意用户名和密码, 并且sql原创 2021-01-29 23:34:42 · 243 阅读 · 0 评论 -
025_jdbc-mysql-Statement的sql注入问题
1. 新建一个JDBCStatementProblem工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件, 以及UserDao2. 修改UserDaoImpl.javapackage com.lywgames.dao.impl;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;im原创 2021-01-29 23:21:59 · 118 阅读 · 1 评论 -
024_jdbc-mysql的Dao模式
1. 新建一个JDBCDao工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件2. Dao模式: Data Access Object数据访问对象。3. 新建一个UserDao.java接口, 添加login方法4. 新建一个UserDaoImpl.java类, 实现UserDao.java接口, 并实现login方法5. 在MyJDBC.java的main方法里, 使用UserDao调用登录方法6. 运行程序, 查看结果...原创 2021-01-29 23:11:37 · 114 阅读 · 0 评论 -
023_jdbc-mysql的CRUD操作
1. 新建一个JDBC_CRUD的Java工程, 使用JDBCUtil.java和jdbc.properties属性配置文件2. JDBC的R(read读取数据)操作3. JDBC的C(create添加数据)操作3.1. 插入数据3.2. 运行程序, 查看结果4. JDBC的U(update修改数据)操作4.1. 更新数据4.2. 运行程序, 查看结果5. JDBC的D(delete删除数据)操作5.1. 删除数据5.2. 运行程序, 查看原创 2021-01-29 22:56:23 · 196 阅读 · 0 评论 -
022_jdbc-mysql封装JDBCUtil和抽取数据库配置参数文件
1. 新建一个JDBCProperties工程2. 编写JDBCUtil.javapackage com.lywgames.util;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import j原创 2021-01-29 22:36:44 · 127 阅读 · 0 评论 -
021_jdbc-mysql入门
一. jdbc简介1. jdbc: Java Database Connectivity, java数据库连接。2. 为什么出现jdbc: Sun公司提供的一种数据库访问规则、规范, 由于数据库种类较多, 并且java语言使用比较广泛, sun公司就提供了一种规范, 让其他的数据库提供商去实现底层的访问规则。我们的java程序只要使用sun公司提供的jdbc驱动即可。二. jdbc访问数据库1. 创建studyjdbc数据2. 创建user表3. 插入几条数据4. 新原创 2021-01-29 22:32:15 · 136 阅读 · 0 评论 -
020_MySQL运算符
1. MySQL主要有以下几种运算符1.1. 算术运算符。1.2. 比较运算符。1.3. 逻辑运算符。1.4. 位运算符。2. 算术运算符2.1. MySQL支持的算术运算符包括2.2. 在除法运算和模运算中, 如果除数为0, 将是非法除数, 返回结果为NULL。2.3. 给学生身高都加10公分2.4. 给学生身高都减10公分2.5. 给学生参加篮球赛的次数都乘以22.6. 给学生参加篮球赛的次数都除以22.7. 给学生的年龄给10取余。.原创 2021-05-20 14:51:19 · 173 阅读 · 0 评论 -
019_MySQL正则表达式
1. 我们已经了解到MySQL可以通过like ...%来进行模糊匹配。MySQL同样也支持其他正则表达式的匹配, MySQL中使用regexp操作符来进行正则表达式匹配。2. 下表中的正则模式可应用于regexp操作符中。3. 所匹配的字符串("fonfo")以后面的字符串("fo")开头4. 所匹配的字符串("fono")以后面的字符串("no")结尾5. 所匹配的字符串("fonfo")包含后面的字符串("nf")6. 匹配除了回车和换行之外的任意字符。7.原创 2021-05-20 11:30:30 · 137 阅读 · 0 评论 -
018_日期函数
1. 日期函数2. 查询当前日期时间和日期和时间3. date()函数3.1.date()函数提取日期或日期/时间表达式的日期部分。3.2.查询学生的出生日期4. extract()函数4.1. extract()函数用于返回日期/时间的单独部分, 比如年、月、日、小时、分钟等等。4.2. 语法extract(unit from date)4.3. date参数是合法的日期表达式。unit参数可以是下列的值:4.4. 查询学生出生的年、月、日、时、..原创 2021-05-19 21:35:20 · 138 阅读 · 1 评论 -
017_标量函数
1. 标量函数1.1. ucase()/upper(): 将某个字段转换为大写。1.2. lcase()/lower(): 将某个字段转换为小写。1.3. mid(column_name,start,[length]): 从某个文本字段提取字符。1.4. substring(column_name,start,[length]): 从某个文本字段提取字符。1.5. length(): 返回某个文本字段的长度。1.6. round(): 对某个数值字段进行指定小数位数的四舍五入。1原创 2021-05-19 20:50:21 · 639 阅读 · 0 评论 -
016_聚合函数
1. 聚合函数1.1. avg(): 返回平均值。1.2. count(): 返回行数。1.3. max(): 返回最大值。1.4. min(): 返回最小值。1.5. sum(): 返回总和。2. 参照表2.1. 学生表数据3. max()函数3.1. max()函数返回指定列的最大值。3.2. max()语法select max(`column_name`) from `table_name`;3.3. 查询最高的学生4. min()函数.原创 2021-05-19 19:07:35 · 191 阅读 · 0 评论 -
015_视图(Views)
1. 视图是可视化的表。2. 视图的作用2.1. 视图隐藏了底层的表结构, 简化了数据访问操作, 客户端不再需要知道底层表的结构及其之间的关系。2.2. 视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制, 而不授予用户直接访问底层表的权限)。2.3. 从而加强了安全性, 使用户只能看到视图所显示的数据。2.4. 视图还可以被嵌套, 一个视图中可以嵌套另一个视图。3. 创建视图3.1. 创建视图语法create view `view_name` as原创 2021-05-19 16:59:47 · 110 阅读 · 0 评论 -
014_insert into select语句
1. insert into select语句从一个表复制数据, 然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。2. 从一个表中复制所有的列插入到另一个已存在的表中insert into table2 select * from table1;3. 只复制希望的列插入到另一个已存在的表中insert into table2 (column_name(s)) select column_name(s) from table1;4. 复制app表的数据到website原创 2021-05-18 21:08:06 · 282 阅读 · 0 评论 -
013_索引
1. 索引介绍1.1. 您可以在表中创建索引, 以便更加快速高效地查询数据。1.2. 打个比方, 如果合理的设计且使用索引的MySQL是一辆兰博基尼的话, 那么没有设计和使用索引的MySQL就是一个人力三轮车。1.3. 用户无法看到索引, 它们只能被用来加速搜索/查询。1.4. 索引分单列索引和组合索引。单列索引, 即一个索引只包含单个列。组合索引, 即一个索引包含多个列。1.5. 创建索引时, 你需要确保该索引是应用在SQL查询语句的条件(一般作为where子句的条件)。1.6.原创 2021-05-18 19:26:21 · 112 阅读 · 0 评论 -
012_union操作符
1. union操作符用于连接两个以上的select语句的结果组合到一个结果集合中。多个select语句会删除重复的数据。2. 请注意, union内部的每个select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时, 每个select语句中的列的顺序必须相同。3. 语法select expression1, expression2, ... expression_nfrom tables[where conditions]union [all]select express原创 2021-05-18 17:16:05 · 144 阅读 · 0 评论 -
011_多表查询
1. 查询product表的数据2. 查询category表的数据3. 笛卡尔积, 查询出两张表的乘积, 查出来的结果没有什么实际意义4. 隐式内连接, 添加where条件, 过滤出产品表的cno等于分类表的cid的数据。5. 显示内连接6. 隐式内连接和显示内连接的区别6.1. 隐式内连接:在查询出结果的基础上去做where过滤;6.2. 显示内连接:带着条件去查询结果, 执行效率高。7. 左外连接7.1. 左外连接, 会将左表中的所有数据都查询出来原创 2021-05-13 08:39:58 · 173 阅读 · 1 评论 -
010_多表的表关系
一. 一对多表关系1. 用户表user1.1. 用户的id: uid1.2. 用户名: username1.3. 密码: password1.4. 手机: phone2. 创建用户表create table user( uid int primary key auto_increment, username varchar(31), password varchar(31), phone varchar(11));3. 插...原创 2021-05-12 16:01:59 · 341 阅读 · 0 评论 -
009_查询表内容
1. 查询表内容: select [distinct] [*] [列名1, 列名2,...] from 表名 [where 条件];2. distinct: 去除重复的数据。3. select: 选择显示哪些列。4. 查询所有列: select * from 表名;5. 查询部分列: select [列名1, 列名2] from 表名;6. 去重查询: select distinct 列名 form 表名;7. 使用as关键字, 进行别名查询7.1. 表别名查询, 主原创 2021-05-12 15:00:17 · 236 阅读 · 0 评论 -
008_表内容的插入删除修改
一. 插入表数据1. 插入表数据: insert into 表名 (列名1,列名2,列名3,...) values (值1,值2,值3,...);2. 插入表数据简单写法, 但是是插入所有列: insert into 表名 values (值1,值2,值3,...);3. 插入部分列表数据: insert into 表名 (列名1,列名2) values (值1,值2);4. 批量插入表数据: insert into 表名 values (值1,值2,值3,...), (值1,值原创 2021-05-12 14:50:20 · 110 阅读 · 0 评论 -
007_SQL约束
1. 数据库表的七大约束: null/not null, default, comment, zerofill, primary key, auto_increment, unique。2. 空属性null/not null2.1. 空属性有两个取值: null和not null。2.2. null空, 数据库默认字段基本都是字段为空, 但是实际开发时, 尽可能保证字段不为空, 因为数据为空没办法参与运算。null一般配合default使用: default null。2.3. not nu原创 2021-05-12 14:47:13 · 322 阅读 · 0 评论 -
006_表的CRUD的操作
1. 创建表1.1. create table 表名(列名1 列的类型(长度) 约束,列名2 列的类型(长度) 约束,...);1.2. 创建一个学生表--学生id--姓名name--姓别sex--年龄age--住址address--身高height--体重weight--说明introduce2. 查看表2.1. 查看所有表: show tables;2.2. 查看表结构: desc 表名;2.3. 查看创建表过程: sh原创 2021-05-12 14:34:11 · 169 阅读 · 0 评论 -
005_MySQL数据类型
1. MySQL中定义数据字段的类型对你数据库的优化是非常重要的。2. MySQL支持多种类型, 大致可以分为三类: 数值、日期/时间和字符串(字符)类型。3. 日期类型 类型 字节数 取值范围 tinyint(迷你整型) 1byte (-128,127) smallint(小整型) 2bytes (-32768,...原创 2021-05-12 13:03:17 · 3148 阅读 · 0 评论 -
004_Mysql数据库的CRUD的操作
1. 登录数据库: mysql -u root -p 没有分号直接回车在显示了Enter password: 后输入数据库密码2. 创建数据库2.1. create database数据库名称;2.2. create database数据库名称character set字符集;3. 查看数据库3.1. 查看数据的创建信息: show create database 数据库名称;3.2. 查看所有的数据库: show databases;4. 修改数据库4.原创 2021-05-11 22:07:03 · 108 阅读 · 0 评论 -
003_SQL语言简介
1. SQL: Structure Query Language结构化查询语言, 是一种特殊目的的编程语言, 是一种数据库查询和程序设计语言, 用于存取数据以及查询、更新和管理关系数据库系统。2. 结构化查询语言是高级的非过程化编程语言, 允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法, 也不需要用户了解具体的数据存放方式, 所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套, 这使它具有极大的灵活性和强大的功能。原创 2021-05-07 14:23:18 · 207 阅读 · 0 评论 -
002_centos7上安装mysql8
一. 卸载CentOS7 自带的MariaDB和Mysql1. 一定要将mariaDB包和自带mysql包卸载干净, 否则安装时出现各种奇妙错误, 导致失败。2. 卸载MariaDB(CentOS7 默认自带)2.1. 使用命令: rpm -qa | grep -i mariadb, 查看mariadb软件包, 没有就不做删除操作。2.2. 使用命令: rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps, 强制删除mariadb的所有相关原创 2021-05-06 21:04:57 · 121 阅读 · 0 评论 -
001_数据库介绍
一. 什么是数据库1. 数据库是存放数据的仓库。它的存储空间很大, 可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放, 是有一定的规则的, 否则查询的效率会很低。互联网世界充斥着大量的数据, 即这个互联网世界就是数据世界。数据的来源有很多, 比如: 出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据, 图像、音乐、声音都是数据。2. 数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:2.1. 数据库是一个能够存储数据的"原创 2021-02-26 23:42:16 · 379 阅读 · 0 评论