JAVA进阶 MySQL数据库编程技术(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: JAVA进阶 MySQL数据库编程技术

一、创建删除数据库

1.1创建数据库

CREATE DATABASE  数据库名 DEFAULT CHARACTER SET  字符编码;

1.2查看数据库

show databases;

1.3 删除数据库

DROP DATABASE  数据库名称;

1.4 选择数据库

USE 数据库名;

二、MySQL中的数据类型

2.1 整数类型

MySQL数据类型 含义(有符号)
tinyint(m) 1个字节 范围(-128~127);常用来表示性别、状态
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)

数值类型中的长度 m 是指显示长度,并不表示存储长度,只有字段指定 zerofill 时有用

例如: int(3) ,如果实际值是 2 ,如果列指定了 zerofill ,查询结果就是 002 ,左边用 0 来 填充

2.2浮点类型

MySQL数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

2.3字符类型

MySQL数据类型 含义
char(n) 固定长度,最多255个字符(必须给定n)
tinytext 可变长度,最多255个字符
varchar(n) 可变长度,最多65535个字符(必须给定n)
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符

char和varchar:


  1. char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定长。
  2. varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
  3. text不设置长度, 当不知道属性的最大长度时,适合用text。例如:描述和简介等

按照查询速度: char最快, varchar次之,text最慢。

字符串型使用建议:


  1. 经常变化的字段用varchar
  2. 知道固定长度的用char
  3. 尽量用varchar
  4. 超过255字符的只能用varchar或者text
  5. 能用varchar的地方不用text

2.4日期类型

MySQL数据类型 含义
date 日期 YYYY-MM-DD
time 时间 HH:MM:SS
datetime 日期时间 YYYY-MM-DD HH:MM:SS
timestamp 时间戳YYYYMMDD HHMMSS

timestamp时间戳在存储日期时,是不考虑时区的。只要项目不涉及到跨时区的用datetime2.5二进制数据(BLOB)

2.5二进制数据

  1. BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。
  2. BLOB存储的数据只能整体读出。
  3. TEXT可以指定字符集,BLOB不用指定字符集。

三、对表的操作

3.1 创建表

CREATE TABLE 表名(列名 类型,列名 类型......);

3.2删除表

DROP TABLE 表名;

3.3修改表

3.3.1修改表名

ALTER TABLE  旧表名 RENAME  新表名;

3.3.2修改列名

ALTER TABLE  表名 CHANGE COLUMN  旧列名 新列名 类型;

3.3.3修改列类型

ALTER TABLE  表名 MODIFY  列名 新类型;

3.3.4添加新列

ALTER TABLE  表名 ADD COLUMN  新列名 类型;

3.3.5删除指定列

ALTER TABLE  表名 DROP COLUMN  列名;

四、MySQL中的约束

约束概述

数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

  1. 主键约束(Primary Key) PK

主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。 主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。

  1. 外键约束(Foreign Key) FK

外键约束经常和主键约束一起使用,用来确保数据的一致性。外键约束可以是空,但是不能添加参照表中不存在的数据。

  1. 唯一性约束(Unique)

唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。

  1. 非空约束(Not Null)

非空约束用来约束表中的字段不能为空。

  1. 检查约束(Check)

检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前 MySQL 数据库不支持检查约束。

4.1添加主键约束(Primary Key)

  1. 单一主键
    使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。
  2. 联合主键
    使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。
ALTER TABLE  表名 ADD PRIMARY KEY(列名)

4.2主键自增长

MySQL 中的自动增长类型要求:

  • 一个表中只能有一个列为自动增长。
  • 自动增长的列的类型必须是整数类型。
  • 自动增长只能添加到具备主键约束与唯一性约束的列上。
  • 设置主键自增之后,往数据库添加数据时不需要我们手动添加主键了。
alter table 表名 modify 主键 类型 auto_increment;

4.3 删除主键

注意:

删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除 主键。


alter table 表名 modify 主键列 类型;
ALTER TABLE  表名 DROP PRIMARY KEY;

4.4添加外键约束(Foreign Key)

ALTER TABLE  表名 ADD CONSTRAINT  约束名 FOREIGN KEY( 列 名 ) REFERENCES  参照的表名(参照的列名);

约束名是随便取的一般使用  表名_FK

例如:向 emp 表中的 dept_id 列添加外键约束。

alter table emp add constraint emp_fk foreign key(dept_id) references departments(department_id);

4.5删除外键约束

ALTER TABLE  表名 DROP FOREIGN KEY  约束名;
ALTER TABLE  表名 ADD CONSTRAINT  约束名 UNIQUE(列名);

约束名一般使用 :表名_UK

4.7删除唯一性约束

ALTER TABLE  表名 DROP KEY  约束名;

4.8添加非空约束

ALTER TABLE  表名 MODIFY  列名 类型 NOT NULL;

4.9删除非空约束

ALTER TABLE  表名 MODIFY  列名 类型 NULL;

4.10在创建表时添加约束

查看表的约束信息

SHOW KEYS FROM  表名;

示例:

创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不 允许重复,location_id 列不允含有空值。

create table depts(department_id int primary key auto_increment,department_name varchar(30) unique,location_id int not null);

五、 MySQL中DML操作

5.1添加数据(INSERT)

5.1.1选择插入

根据需求向指定列插入数据。如果存在非空约束,则必须将该列插入数据。

INSERT INTO  表名(列名 1 ,列名 2 ,列名 3.....) VALUES(值 1 ,值 2 ,值 3......);

5.1.2完全插入

INSERT INTO  表名 VALUES(值 1 ,值 2 ,值 3......);

注意:


如果主键是自动增长,需要使用 default 或者 null 或者 0 占位。

例如:向 departments 表中添加一条数据,部门名称为 teaching ,工作地点 ID 为 4 。使用 0 占 位。

insert into departments values(0,"teaching",4);

5.2默认值处理(DEFAULT)

在 MySQL 中可以使用 DEFAULT 为列设定一个默认值。如果在插入数据时并未指定该列的值,那么 MySQL 会将默认值添加到该列中。

5.2.1创建表时指定列的默认值

CREATE TABLE 表名(列名 类型 default 默认值,......);

示例:

创建 emp3 表,该表包含 emp_id 主键且自动增长,包含 name ,包含 address 该列默认 值为”未知”。

create table emp3(emp_id int primary key auto_increment,name varchar(10),address varchar(50) default 'Unknown');

5.2.2添加新列并指定默认值

ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT 默认值;

示例:

修改 emp3 表,添加job_id 该列默认值为 0。

alter table emp3 add column job_id int default 0;
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
386 1
|
3月前
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
276 0
|
3月前
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
386 44
|
3月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
140 13
|
4月前
|
Java 测试技术 API
2025 年 Java 开发者必知的最新技术实操指南全览
本指南涵盖Java 21+核心实操,详解虚拟线程、Spring Boot 3.3+GraalVM、Jakarta EE 10+MicroProfile 6微服务开发,并提供现代Java开发最佳实践,助力开发者高效构建高性能应用。
718 4
|
4月前
|
安全 Java 编译器
new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
逃逸分析是一种静态程序分析技术,用于判断对象的可见性与生命周期。它帮助即时编译器优化内存使用、降低同步开销。根据对象是否逃逸出方法或线程,分析结果分为未逃逸、方法逃逸和线程逃逸三种。基于分析结果,编译器可进行同步锁消除、标量替换和栈上分配等优化,从而提升程序性能。尽管逃逸分析计算复杂度较高,但其在热点代码中的应用为Java虚拟机带来了显著的优化效果。
151 4
|
4月前
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
861 1
|
4月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
248 3
|
网络协议 Java API
Java新人必学课程,Java进阶学习全路线(内涵Java超级干货推送及专家社群福利)
自从拉了java社群之后,发现经常有一些新手java开发在吐槽,吐槽java不知道从何学起,感觉路很迷惘。其实小编想说,沉下心,你会发现要走的路并不是很难。为了帮助新人更好的成长,小编特意邀请了最课程的陆敏技老师来给大家进行java基础课程直播分享。
19258 0
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
178 1

热门文章

最新文章

推荐镜像

更多