Java Web开发_数据库_MySQL(Day6)

目录

系列文章

前言

一、数据库

二、MySQL

三、SQL

小结


系列文章

Java Web开发(Day1)

Java Web开发(Day2)

Java Web开发_异步处理以及前端中Vue框架的简单使用(Day3)

Java Web开发_Maven以及SpringBootWeb入门(Day4)

Java Web开发_请求响应与分层解耦(Day5)

前言

此博客主要记录在学习黑马程序员2023版JavaWeb开发课程的一些笔记,方便总结以及复习。

一、数据库

在上一节内容里面讲到的三层架构里面,dao层访问的数据是直接写上去的,但是实际应用开发当中呢是会去数据库中把数据提取出来展示。获得数据后再返回给前端页面。

数据库:DataBaseDB),是存储和管理数据的仓库。

那我们如何去操作管理数据库呢,就需要引入一个管理系统,我们一般称为数据库管理系统。而一般使用的编程语言就是SQL。

数据库管理系统:DataBase Management System  (DBMS),操纵和管理数据库的大型软件。

SQLStructured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

 

 常用的数据库管理系统一般是Oracle(收费的大型数据库,Oracle公司的产品)、MySQL(开源免费的中小型数据库。Sun公司收购了MySQLOracle收购Sun公司,所以算起来也是Oracle公司的产品)、Microsoft SQL Server(MicroSoft公司收费的中型的数据库,C#.net等语言常使用)、PostgreSQL(开源免费中小型的数据库)。一般大型公司会更常使用Oracle,性能会比较好。不过我们通常使用的话还是以MySQL偏多,但是学习上来说区别是不会太大的,因为大家都是以SQL语言为统一标准。

二、MySQL

MySQL官方提供了两种不同的版本:一种是商业版本:收费,可以试用30天,官方提供技术支持;另外一种是社区版本:免费,但不提供技术支持,在学习阶段社区版本基本可以满足需求。

官网下载地址:MySQL :: Download MySQL Community Server

MySQL的数据模型是关系型数据库(RDBMS: 建立在关系模型基础上,由多张相互连接的二维表组成的数据库。之后会提到的redis的话就是非关系型数据库。

在使用MySQL管理数据库的时候,客户端工具如果单纯的使用cmd来操作的话就太繁琐了,通常我们会用到一些图形化工具,比较常见的有:MySQL Workbench、Navicat、DataGrip等。MySQL Workbench通常会在学习过程当中使用到,平时比较常用的更多是Navicat、DataGrip,而DataGripJetBrains旗下的一款数据库管理工具,是管理和开发MySQLOraclePostgreSQL的理想解决方案。官网: https://www.jetbrains.com/zh-cn/datagrip/,这是其实也就是IDEA同源的产品,目前的话DataGrip已经内置在IDEA编辑器当中了,我们可以不用再去下载安装,直接在IDEA中就可以使用。

连接数据库方法:

打开项目->在右侧点击Database->点击"+"->选择Data Source->选择MySQL->输入数据库的ip信息,以及数据库名字密码->点击下方Test Connection->连接成功的话即可。

注意:第一次连接需要点击下载数据库连接驱动。

三、SQL

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

通用语法:

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL语句可以使用空格/缩进来增强语句的可读性。
  • MySQL数据库的SQL语句不区分大小写。
  • 注释:
    • 1.单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
    • 2.多行注释: /* 注释内容 */

SQL语句通常被分为四大类:

分类

全称

说明

DDL

Data Definition Language

数据定义语言,用来定义数据库对象(数据库,表,字段)

DML

Data Manipulation Language

数据操作语言,用来对数据库表中的数据进行增删改

DQL

Data Query Language

数据查询语言,用来查询数据库中表的记录

DCL

Data Control Language

数据控制语言,用来创建数据库用户、控制数据库的访问权限

create table  表名(

  字段字段类型  [ 约束 ]  [ comment  字段1注释 ] ,

  ......

  字段字段类型  [ 约束 ]  [ comment  字段n注释 ]

) [ comment  表注释 ] ;

约束:作用于表中字段上的规则,用于限制存储在表中的数据。目的是为了保证数据库中数据的正确性、有效性和完整性。

约束

描述

关键字

非空约束

限制该字段值不能为null

not  null

唯一约束

保证字段的所有数据都是唯一、不重复的

unique

主键约束

主键是一行数据的唯一标识,要求非空且唯一

primary  key

默认约束

保存数据时,如果未指定该字段值,则采用默认值

default

外键约束

两张表的数据建立连接,保证数据的一致性和完整性

foreign  key

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

数值类型:

分类类型大小(byte)有符号(SIGNED)范围无符号(UNSIGNED)范围描述备注
数值类型tinyint1(-128127)(0255)小整数值 
smallint2(-3276832767)(065535)大整数值 
mediumint3(-83886088388607)(016777215)大整数值 
int4(-21474836482147483647)(04294967295)大整数值 
bigint8(-2^632^63-1)(02^64-1)极大整数值 
float4(-3.402823466 E+383.402823466351 E+38)0 (1.175494351 E-383.402823466 E+38)单精度浮点数值float(5,2):5表示整个数字长度,2 表示小数位个数
double8(-1.7976931348623157 E+3081.7976931348623157 E+308)0 (2.2250738585072014 E-3081.7976931348623157 E+308)双精度浮点数值double(5,2):5表示整个数字长度,2 表示小数位个数
decimal   小数值(精度更高)decimal(5,2):5表示整个数字长度,2 表示小数位个数

其中,tinyint和int算是比较常用的类型,比如说年龄或者一个数字代表一个含义,简单的一个数字存储在数据库中我们是不希望说占用太多的内存的,那tinyint使用起来就更加合适。

字符串类型:

分类类型大小描述
字符串类型char0-255 bytes定长字符串
varchar0-65535 bytes变长字符串
tinyblob0-255 bytes不超过255个字符的二进制数据
tinytext0-255 bytes短文本字符串
blob0-65 535 bytes二进制形式的长文本数据
text0-65 535 bytes长文本数据
mediumblob0-16 777 215 bytes二进制形式的中等长度文本数据
mediumtext0-16 777 215 bytes中等长度文本数据
longblob0-4 294 967 295 bytes二进制形式的极大文本数据
longtext0-4 294 967 295 bytes极大文本数据

其中char和varchar算是应用最多的字符串类型,char和varchar的区别主要就是会不会自动根据字符串长度来规定字节。char是设定一个值固定字节大小,如果字符串太长,就报错,如果字符串没有填充满的话会添加空字符来填满,varchar的话就是设定一个上限值,如果字符串太长,就报错,如果字符串太短,就会根据字符串的长度重新适配相应的字节大小。

char(10): 最多只能存10个字符,不足10个字符,占用10个字符空间AB性能高浪费空间
varchar(10): 最多只能存10个字符,不足10个字符, 按照实际长度存储ABC性能低节省空间

日期时间类型:

分类类型大小(byte)范围格式描述
日期类型date31000-01-01 9999-12-31YYYY-MM-DD日期值
time3-838:59:59 838:59:59HH:MM:SS时间值或持续时间
year11901 2155YYYY年份值
datetime81000-01-01 00:00:00 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp41970-01-01 00:00:01 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

常用的就是date以及datetime,date是指代表的日期,我们可以用在入职时间、生产日期等方面,datetime是指精确到每分每秒,像我们常用的log记录,便通常都是记录确切的时间。

目前来说对SQL语句主要是能看懂能理解便可,因为有图形化工具的存在,我们可以更简便地创建表格添加数据。以下是一些常见的SQL语句:

-- 查询所有数据库
show databases;

-- 创建数据库
create database da02;

-- 使用数据库
use `1`;

-- 删除表格
drop table IF exists tb_user;
-- 创建表格
create table tb_user(
    id int primary key auto_increment comment 'ID,唯一标识',
    username varchar(20) not null unique comment '用户名',
    name varchar(10) not null comment '姓名',
    age int comment '年龄',
    gender char(1) default '男' comment '性别'
) comment '用户表';

-- 查看数据库建表语句
show create table tb_emp

-- 插入数据
insert into tb_emp (username, name, gender, create_time, update_time)
values ('wuji','张无忌',1,now(),now());

# insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time)
#             VALUES(null,'zhiruo','123','芷若',2,'1.jpg',1,'2020-10-10',now(),now());
insert into tb_emp VALUES(null,'zhiruo2','123','芷若',2,'1.jpg',1,'2020-10-10',now(),now());

-- 批量插入
insert into tb_emp (username, name, gender, create_time, update_time)
values ('wuji','张无忌',1,now(),now()),('xiexun','谢逊',1,now(),now());

-- 更新数据
update tb_emp set name = '张三' , update_time = now() where id = 1;

-- 全部更新
update tb_emp
set entrydate = '2010-01-01', update_time = now();

-- 删除数据
delete from tb_emp where id = 1;

-- 删除所有数据
delete from tb_emp;

需要注意的是,如果数据库名字是数字的话,使用该数据库是用use `数字` ,而不是use '数字'

另外,在更改和删除表结构的时候,如果没有选择where值也就是说没有选择更改和删除的具体行,他会更改和删除表中所有对应的数据。当然,在做这种操作的时候,IDEA编辑器还会提示你是否要继续,需要无误的话点击Execute(执行)即可。

小结

这节内容主要讲的是关于数据库的作用以及实际操作的指导,同时也了解了MySQL中的数据类型和SQL中的DDL和DML通用语法。其中数据库的使用当中目前还是以图像化工具为主,DDL、DML语法语句还是了解基本就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值