Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等

MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理。
Java数据库开发基础,介绍MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等内容,进行油画商城开发。

3.1.1 MySQL基础之数据类型

MySQL数据库的安装、数据类型。
MySQL数据库内容分两部分介绍:
在这里插入图片描述
在这里插入图片描述
MySQL安装:www.mysql.com。
在这里插入图片描述
MySQL属于关系型数据库,MySQL是按照数据结构来组织、存储和管理数据的仓库。
在这里插入图片描述
在这里插入图片描述
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘156354’;
在这里插入图片描述
数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。应用开发工具是使用数据库的软件,比如说用户管理系统,说是系统,其实是管理数据库的软件。数据库系统是由数据库和管理软件组成的系统以及数据管理员组成。
在help命令后的命令都是标准命令描述,需要大写,提示信息。
my.ini是mySQL的配置文件。登录: mysql -uroot -p或mysql -uroot -p加上密码。;退出:exit或quit或\q。获得版本号: mysql -V 或mysql --version。登陆的同时打开指定的数据库:mysql -uroot -p密码 -D db_name。显示现有的库:SHOW DATABASES/SCHEMAS。查看打开的数据库:SELECT DATABASE();。命令行结束符默认是;或\g,如SELECT DATABASE();。可以通过help或\h或?加上相关关键字来查看手册\c可以取消当前命令的执行
常用SQL语句:select user()得到登陆的用户。select version()得到mysql的版本信息。select now()得到当前的日期时间。select database()得到当前打开的数据库。查看上一步的错误、警告和通知信息:SHOW WARNINGS;。
SQL语句语法规范
常用MySQL的关键字需要大写,库名、表名、字段等使用小写SQL语句支持折行操作,拆分时不能把完整的单词拆开。数据库名称、表名称、字段名称不要使用MySQL的保留字,如果必须使用,需要使用反引号``将其括起来。
关闭严格模式:1.查看模式:select @@sql_mode; 2.关闭严格模式:set GLOBAL sql_mode=’ ‘;
数据库相关操作
创建数据库:CREATE DATABASE/SCHEMA db_name;(数据库名称最好有意义,名称不要包含特殊字符或MySQL关键字)。查看当前服务器下的全部数据库:SHOW DATABASES/SCHEMAS;。检测数据库名称是否存在,如果不存在则进行创建:CREATE DATABASE IF NOT EXISTS db_name;。创建数据库的同时制定编码方式:CREATE DATABASE IF NOT EXISTS test3 [DEFAULT] CHARACTER SET ‘UTF-8’;。修改指定数据库的编码方式:ALTER DATABASE db_name DEFAULT CHARACTER SET [=] charset;。打开指定数据库:USE db_name;。得到当前打开的数据库:SELECT DATABASE();。删除指定的数据库:DROP DATABASE db_name;。如果数据库存在则删除:DROP DATABASE IF EXISTS db_name;。查看指定数据库的详细信息:SHOW CREATE DATABASE db_name;。SHOW TABLES是显示当前数据库中所有表的名称。
mysql 注释: #注释 或者 --注释。-- 注释(–与注释内容之间必须加空格)。
每个数据表中至少有一列,行可以有零行或多行来组成。在表刚刚创建,表中还没有存储数据的时候,我们认为数据表是“零行”。而列则代表了字段,表中至少含有一个字段才可以创建。
数据表是数据库最重要的组成部分之一,数据保存在数据表中。数据表由行(row)和列(column)来组成。表名要求唯一,不要包含特殊字符,最好含义明确。
创建表:CRETAE TABLE IF NOT EXISTS tbl_name(字段名称 字段类型[完整性约束条件],字段名称 字段类型[完整性约束条件],. . . )ENGINE=存储引擎 CHARSET=编码方式;
MySQL中的数据类型
1、数值型:整数型、浮点数、定点数。2、字符串类型。3、日期时间类型。
USE 是选择数据库的命令,ALERT 是删除,添加或修改字段时使用的命令。查看user数据表结构的命令是 SHOW COLUMNS FROM user;
整数型
在这里插入图片描述
浮点数和定点数(decimal):
在 mysql中float、double是浮点数,decimal是定点数。decimal是严格按照指定的精度进行四舍五入的,而float和double则是系统自动进行了四舍五入,不可控。并且使用decimal这个类型在进行四舍五入时会产生警告,而float和double都不会产生警告。浮点数相对于定点数的优点:在长度一定的情况下,浮点数能够表示更大的数据范围。缺点:会引起精度问题,也就是存在误差。所以对货币(银行业务、买卖商品、工资)等对精度敏感的数据,应该用decimal定点数表示或存储。而对精度要求不高,数据范围要求更大的,可以使用浮点数float、double。DECIMAL和DOUBLE一样,内部以字符串形式存储数值。
在这里插入图片描述
字符串型
在这里插入图片描述
VARCHAR举例,如果存储 4个字节的数据,还需要一个字节用于记录存储的数据长度,所以实际长度为5,即L+1。实际占用的存储空间只可能是L+1个字节或者L+2个字节。
日期时间类型
在这里插入图片描述
定点数可以理解为数据以字符串的形式来存进数据库的,保证了精确性浮点的存储方式是采用:符号位+阶码+尾数的形式。区别如下:(1)浮点数存在表示误差,定点数采用字符串进行存储,精度高 。(2)对货币等精度敏感的数据,应该采用定点数进行存储 。
ENUM和SET都是比较特殊的字符串数据列类型。ENUM和SET的主要区别是:ENUM只能取单值,它的数据列表是一个枚举集合。SET可取多值。它的合法取值列表最多允许有64个成员。空字符串也是一个合法的SET值。
VARCHAR(M)是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,也就是说VARCHAR(M)中的M表示允许保存的字符串长度。比如 VARCHAR(20) 则表示最大允许存入的字符长度为20。
命令窗口点击右键,可粘贴。
int和UNSIGNED都是用来描述这个数据的类型的,不能分开。写约束的时候只要是描述同一个特征的关键字不要分开,就不会出错。默认值不是创建完表就有,是你插入一条数据时,如果某个字段没有赋值,它的值为默认值。
完整性约束条件
unsigned无符号,没有负数,从0开始。zerofill零填充,当数据显示长度不够的时候可以使用前补0的效果填充至指定长度。NOT NULL非空约束,插入值的时候这个字段必须要给值。
DEFAULT默认值,如果插入值的时候没有给字段赋值,则使用默认值。PRIMARY KEY主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空。UNIQUE KEY唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,但是NULL除外。AUTO_INCREMENT自动增长,只能用于数值列,而且配合索引所有。FOREIGN KEY外键约束。
表中插入值
INSERT INTO tb_name(id,username,…) VALUES(1,‘KING’,…);
查询表中所有记录:SELECT * FROM tb_name;是指所有的字段,使用这条sql语句可以把表格中的所有字段的数据都查询出来。
MySQL中自动编号的关键字是AUTO_INCREMENT。
在这里插入图片描述
查询当前 MySQL 的模式
select @@sql_mode;
取消严格模式
set global sql_mode=‘ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;
set session sql_mode=‘ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;
无符号unsigned约束不能为负数,零填充ZEROFILL 不足位数前面补0。零填充默认也是无符号。
DECIMAL(M,D)类型,M为数字的总位数,其范围为1~65位。D为小数点后面的位数,其范围是0~30,不得超过M。而Float类型,它最多保留7位小数。Double类型,它最多保留15位左右的小数。DECIMAL类型,它最多保留30位左右的小数,所以它的精度最高,如果后面保留的小数多,要求精度比较高,则选择DECIMAL类型。decimal[(M,D)]默认保存精度是整数。
TEXT在检索过程中是不区分大小写转换的,也就是检索过程中,大小写是不转换的,区分大小写的,和搜索内容的时候是区分大小写的表达的意思是一致的。TEXT列不能有默认值。
CHAR类型的检索速度比VARCHAR块,但VARCHAR比CHAR节省空间。CHAR默认存储数据的时候,后面会用空格填充到指定长度,只有手动在前面加空格,显示的时候才会看见前面有空格。而在检索的时候会去掉后面的空格;VARCHAR在保存的时候不进行填充,尾部的空格会留下;
SELECT CONCAT(’
’,‘a’,’’),CONCAT(’’,‘b’,’*’) FROM test_str 连接字符串。
set通过数字插入时,set的每个选项值对应一个数字,依次是1,2,4,8,16…,最多有64个选项
set如果想要添加多个字符,则可以使用逗号分隔,也可以使用多个选项的数字之和(比如:1+2+4=7),就会把索引值为1,2,4 的三个选项插入进去。
枚举和集合在插入数据时不区分大小写。因为ENUM的字段值不区分大小写,并且mysql字段的值默认也是不区分大小写的
ENUM和SET类型都是集合类型,不同的是ENUM类型最多可枚举65535个元素,而SET类型最多枚举64个元素。并且ENUM每次只能插入所列举的单个字符,在开发中可根据这些特性来决定具体的使用情况。比如 爱好的字段可以使用SET类型,性别的内容使用ENUM类型。
set集合类型插入时可以插入多个值,插入的值可以不用按照集合的顺序插入,但是集合会把他们按顺序保存。集合也可以根据序号插入。序号从1开始(1、2、4)。枚举也可以设置对应的序号,序号从1开始(1、2、3),超出长度则报错。枚举类型会自动过滤掉空格。
TIME
在这里插入图片描述
DATE:
在这里插入图片描述
YEAR:
在这里插入图片描述
打开严格模式:可以在cmd中使用如下sql设置mysql为严格模式:set session sql_mode = ‘ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;
或者修改my.ini配置文件,设置sql_mode为:sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,
TIME:HH:MM:SS 形式,占3字节。DATE:占3字节 YYYY-MM-DD形式,如果YYYY部分写的是7799,则自动转换成19701999,如果写的是0069,则自动转换成20002069,占3字节。DATETIME:YYYY-MM-DD HH:mm:DD形式,占8字节TIMESTAMP:占3字节插入CURRENT_TIMESTAMP或NULL或什么也不写,都会得到当前日期和时间。YEAR存储年份(范围19012155),占1字节,如果YYYY部分写的是7799,则自动转换成19701999,如果写的是0069,则自动转换成2000~2069。
PRIMARY KEY:
1.在这里插入图片描述
2.在这里插入图片描述

3.在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单列主键和复合主键都是用来标识数据库中某条数据的唯一性。复合主键通常用在关系表中。比如权限表。具体是否要使用和实际的业务场景结合的。一个表中使用什么主键,是很灵活的,具体还是要和业务结合的。
主键:主键的作用就是唯一标识表中的某一行数据。索引:索引的作用就是提高数据的检索速度。他们的关系是:主键一定是索引,但是索引不一定是主键。一个表只能有一个主键或联合主键,但是可以有多个索引
在数据库中,索引是对数据库表中一列或多列的值进行排序的一种存储结构,相当于图书的目录,使用索引可以提高检索速度。
复合主键:PRIMARY KEY(id,courseId)。他们两个共同定位到一条记录,两个必须同时相同才代表重复记录。
AUTO_INCREMENT 自增标志。* 默认起始值为1,每次增长1。* 一个表中只有一个自增的列。* 自增必须是索引列。* 已有的最大值 + 1。
自增:1、必须要配合主键索引使用。2、key可以放前面可以放后面,UNSIGNED不能放后面。3、自增默认从1开始,每次加1,AUTO_INCREMENT约束的字段设置为NULL或者DEFAULT都是默认加一, ''会报错。
字段a,字段b都约束了唯一性。但是它们是独立的。只是a字段的值不能重复,b字段的值也不能重复。他们没有关系。
NOT NULL非空约束,插入值的时候值不能为空值。DEFAULT设置默认值 若没用指定值,则使用默认值。UNIQUE KEY:唯一索引,值不能重复,NULL除外。
COMMENT关键字是给字段添加注释。格式如下:
在这里插入图片描述
注意:使用命令的形式只在当前窗口生效。
为了区分MySQL的保留字与普通字符而引入的符号。一般建表时都会将表名,库名都加上反引号来保证语句的执行度

3.1.2 MySQL基础之表的管理

介绍MySQL数据库的表的管理及常用存储引擎。
SELECT:是用来查询数据库中数据条目的,ALTER:修改数据表名或者修改数据表字段。
add,alter,drop是DDL语句,DDL语句是对表结构的修改,比如:给表添加一个字段,修改表字段的类型,删除表等。insert,update,delete是DML语句,DML语句是对表数据的修改,比如:向表中插入一条数据,修改表中的数据,删除一条数据等。
表结构相关操作
1、添加字段:ALTER TABLE tb_name ADD 字段名称 字段属性[完整性约束条件][FIRST(将某个字段加到起始位置)|AFTER字段名称];添加多个字段用”,”分隔。2、删除字段:ALTER TABLE tb_name DROP 字段名称;可以同时进行添加删除字段操作.
删除数据表中列的操作语句为ALTER TABLE tbl_name DROP col_name 和 ALTER TABLE tbl_name DROP COLUMN col_name。
添加多列的语句为 ALTER TABLE tbl_name ADD [COLUMN] (col_name col_definition,…)。
SQL语句不区分大小写,所以大写也是可以的
添加与删除默认值
添加:ALTER TABLE tdl_name ALTER 字段名称 SET DEFAULT默认值;
删除:ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT。
字段属性varchar的字段需指定长度。
分布式系统可以理解成将一个大的系统拆分成很多子系统,每个系统都可以独立开发和运行。使用分布式系统的好处之一是可以进行负载均衡。
字段属性与完整性约束条件是一样的。只是说法不一样。如果要修改索引,需要先删除原来的,然后重新创建
修改字段类型、字段属性:ALTER TABLE tb_name MODIFY 字段名称 字段类型[字段属性][FIRST|AFTER 字段名称]。修改字段名称、字段类型、字段属性:ALTER TABLE tb_name CHANGE 原字段名称 新字段名称 字段类型[字段属性][FIRST|AFTER 字段名称]。
如果原字段的字段属性/完整性约束条件的是否为空是NOT NULL则修改字段的字段属性一定要加上NOT NULL,不加会使原字段的是否为空变成NULL。
column_definition是字段类型的意思。[FIRST|AFTER col_name]表示字段的位置。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值