1 学习目标
- 了解数据库相关的概念
- 了解并掌握MySQL产品的安装
- 了解并掌握MySQL服务的使用
- 重点掌握MySQL语法规范
- 重点掌握数据库的管理语法
- 重点掌握数据表的管理语法
2 数据库概述
2.1 数据库相关概念
2.1.1 什么是数据库
数据库的英文为DataBase,简称DB,是按照数据结构来组织、存储和管理数据的仓库。简而言之,数据库就是存储数据的仓库。
2.2.2 什么是数据库管理系统
用于管理DB中数据的系统,我们称为数据库管理系统,又称为数据库软件(产品),简称DBMS(Database Management System)。
2.2.3 什么是结构化查询语言
用于和DBMS通信的语言,叫做结构化查询语言,简称SQL。
2.2 什么是关系型数据库
- 数据库产品非常多,而目前最流行的数据库是MySQL。
- 查看数据库最新排名:https://db-engines.com/en/ranking
- 而MySQL是关系型数据库,关系型数据库的特点是具有特定的组织方式,其以行和列的形式存储数据,以便于用户理解。关系型数据库这一系列的行和列被称为表,一组表组成了数据库。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据集合。
2.3 常见的关系型数据库
- MySQL:是一款免费开源、小型、性能优秀、适用于中小型项目、可集群,在WEB应用方面是最好的数据库产品,而其SQL语言是最标准的。
- SQL Server:微软提供的收费数据库产品,Java中使用不多,但是胜在可以兼容微软的所有的平台和系统。
- Oracle:1983年由甲骨文公司开发一款商品化的关系型数据库,是一款收费产品,但是功能强大、性能优异,所以Java中使用者很多,主要是应用于银行、金融、保险等开发大型数据库项目。
- DB2:是一款收费产品,适用于中型/大型、银行/电信等企业、应用于大型应用系统等。
- SQLite:轻量级数据库 , 安装包只有几十K , 只有最基础的增删改查功能。
3 MySQL的安装
-
MySQL安装视频可参考:MySQL的安装—>Mariadb的安装(day21)-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/141678370
4 访问数据库
4.1 名称解释
4.1.1 数据库(database)
-
在一个MySQL服务器中,可以创建很多的数据库(database)。
-
通常情况下,一个WEB站点对应一个数据库。
4.1.2 数据表(table)
-
在数据库(database)中,可以创建很多张表(table),每个表都有一个表名,用来标识自己,表名具有唯一性。
-
通常情况下,一张表用于保存一类数据,例如网站中的所有用户信息会保存在一张表中,所有商品信息会保存在另一张表中。
4.1.3 表记录(record)
-
在数据表(table)中,可以插入很多条表记录。
-
数据表往往保存一类数据,类似于java中的一个“类”的设计。
-
而一条表记录往往对应java中的一个具体的实例。
4.2 访问MySQL服务器
4.2.1 打开服务器
- 选中我的电脑,右键→管理
- 服务与应用程序→服务→MySQL→启动
4.2.2 连接客户端
- 从开始菜单中找到MySQL/MariaDB
- MySQL Client 打开客户端 , 输入自己的密码显示Welcome ..... 说明建立好了连接
4.2.3 退出客户端
- 输入“exit”,即可退出客户端
5 idea连接数据库
5.1 创建java项目
- Project name : JSDSecondStage
5.2 准备数据
①下载文件hr_mysql.sql,将该文件存储到一个位置(建议:将该文件存储到项目下)
②打开MySQL Client,登录用户后,敲入以下命令,会自动执行该sql文件内容
source sql文件的磁盘路径
③输入以下指令,查看数据库
SHOW DATABASES;
5.3 idea连接数据库
①打开idea工具,在右边找到“database”选项,点击进入。
②点击“+”→Data Source→MySQL
③进入到连接数据库面板,填写对应信息,点击"OK",设置完成。其中该面板设计的填写内容如下,可参考进行设置。
- Name:设置当前连接的名字,可以自定义名字。
- Comment:设置本次连接的备注,一般根据自身情况填写即可,也可以不填写。
- Host:是填写要连接的数据库服务器主机的ip,而我们学习阶段连接的都是自己的电脑,所以使用本机ip即可连接数据库,但是本机ip书写不便,所以可以使用localhost域名来表示本机ip。
- Port:是填写要连接的数据库服务器主机的端口号,该值一般不需要修改。默认为3306。
- User:是填写登录数据库服务器的用户名,此处我们使用默认root即可,因为root用户是服务器中的超级管理员,具有超级权限,可以控制整个MySQL服务器。
- Password:是填写登录密码,根据实际情况填写,不过一般都是root。
④此时连接成功。
解决方案
- 手动导入数据库驱动jar包
①将提供的jar包下载下来
该网盘链接有效期为7天,如有需要评论区扣我就行
通过网盘分享的文件:mysql-connector-java-8.0.20.jar
链接: https://pan.baidu.com/s/1fllNM4Mdcccmuy-lTExRoA?pwd=icku 提取码: icku
②将压缩解压缩后,记住jar包的磁盘位置
③打开idea,在连接mysql的面板处,点击如下位置
④点击Go to Driver
⑤点击"+"号
⑥点击Custom JARs...
⑦定位到指定jar包位置,点击OK即可
⑧点击"OK",结束配置
6 SQL语言分类
SQL : 结构化查询语言,(Structure Query Language),专门用来操作/访问数据库的通用语言。
-
DDL(Data Define Languge):数据对象定义语言
CREATE、DROP、ALTER
-
DML(Data Manipulate Language):数据操作语言
INSERT、UPDATE、DELETE、SELECT
-
DQL(Data Query Language):数据查询语言
SELECT
-
-
TCL(Transaction Control Language):事务控制语言
COMMIT、ROLLBACK
7 MySQL语法规范
- 不区分大小写,但建议关键字大写,表名、列名小写。
- 多个关键字用空格分隔。
- 使用的符号一定是英文符号。
- 每条命令最好用(;)分号结尾。
- 每条命令根据需要,可以进行缩进或换行。
- 不要使用MySQL关键字作为列名或表名。
- 注释
- 单行注释:#注释文字 CTRL+/
- 单行注释:-- 注释文字
- 多行注释:/* 注释文字 */ CTRL+SHIFT+/
8 数据库DDL语言
8.1 数据库的管理
8.1.1 查看所有数据库
#查看所有数据库 SHOW DATABASES;
8.1.2 建库
8.1.2.1 格式
- 默认字符集格式 。
CREATE DATABASE [IF NOT EXISTS] 数据库名;
- 指定字符集格式 。
CREATE DATABASE [IF NOT EXISTS] 数据库名 CHARSET=utf8;
8.1.2.2 例子
①创建默认字符的数据库db1。
#创建数据库db1
CREATE DATABASE db1;
②创建字符集为GBK的数据库db2。
#创建数据库db2,并指定编码为GBK
CREATE DATABASE db2 CHARSET GBK;
③查看所有数据库。
#查看所有数据库
SHOW DATABASES;
④再次创建db2库,但是如果库存在,则不报错
#创建数据库db2,并指定编码为utf8
CREATE DATABASE IF NOT EXISTS db2 CHARSET GBK;
8.1.3 查询数据库信息
8.1.3.1 格式
SHOW CREATE DATABASE 数据库名;
8.1.3.2 例子
- 查询db1数据库信息。
#查询db1的数据库信息
SHOW CREATE DATABASE db1;
- 查询db2数据库信息。
#查询db2的数据库信息
SHOW CREATE DATABASE db2;
8.1.4 删库
8.1.4.1 格式
DROP DATABASE 数据库名;
8.1.4.2 例子
- 删除名称是db1的数据库。
#删除数据库db1
DROP DATABASE db1;
8.2 数据表的管理
8.2.1 使用数据库
- 执行表相关的SQL之前必须使用了某个数据库.
#进入db2数据库
USE db2;
8.2.2 查看所有表
#查看所有表
SHOW TABLES;
8.2.3 创建表
8.2.3.1 格式
- 如果建库时制定了编码,那么建表时,不指定编码就会使用数据库指定的编码
CREATE TABLE 表名(
字段1名 类型,
字段2名 类型,
.....
)[CHARSET=utf8/gbk];
8.2.3.2 例子
①创建person表,有name和age字段,编码为utf8
CREATE TABLE person(
name VARCHAR(32),
age INT
) CHARSET = utf8;
②创建student表,有name,chinese,math,english字段,编码为默认编码
CREATE TABLE student(
name VARCHAR(32),
chinese INT,
math INT,
english INT
);
③查询所有表
#查看所有表
SHOW TABLES;
8.2.4 查看表结构
8.2.4.1 格式
SHOW CREATE TABLE 表名;
8.2.4.2 例子
- 查看person表结构
#查看person表结构
SHOW CREATE TABLE person;
8.2.5 查询表字段
8.2.5.1 格式
DESC 表名;
8.2.5.2 例子
- 查询student表的字段
#查询student表的字段
DESC student;
8.2.6 删除表
8.2.6.1 格式
DROP TABLE 表名;
8.2.6.2 例子
- 删除名称是student的表
#删除student表
DROP TABLE student;
9 常见问题
9.1 安装数据库常见问题
①没有足够的权限
如果您没有足够的权限来安装MySQL,则可能会遇到此错误。请确保您具有管理员权限或root权限来安装MySQL。
解决方案:使用管理员或root权限启动安装程序,或者将您的帐户添加到具有适当权限的组中。
②端口已被占用
在安装MySQL时,您需要指定一个端口。如果此端口已经被另一个应用程序占用,则安装过程将失败。
解决方案:选择一个未被其他应用程序占用的端口,并在安装过程中进行设置。
③数据目录不可写
当您设置MySQL数据目录时,如果没有正确配置文件夹权限,则可能会出现此错误。
解决方案:确保您正在以管理员身份运行安装程序,并为数据目录设置了正确的文件夹权限。
④忘记设置root密码
在安装MySQL时,必须设置root密码。如果您忘记了密码,则无法访问MySQL服务。
解决方案:在安装期间,请确保您记住了root密码或保存它在安全的地方。
⑤防火墙阻止连接
如果您的防火墙阻止MySQL连接,则可能无法与MySQL服务器通信。
解决方案:请确保防火墙已配置以允许MySQL连接。
9.2 DDL操作常见问题
①语法错误
当您尝试创建表或执行其他DDL操作时,如果出现语法错误,则会收到此错误消息。
解决方案:仔细检查您的SQL语句,并确保它们符合MySQL语法。
②表已存在
当您尝试创建一个已经存在的表时,将出现此错误消息。
解决方案:请检查您的SQL语句,并确保您正在使用唯一的表名。
③主键约束冲突
如果您尝试将重复值插入主键列中,或者尝试更新一个具有重复主键值的行,则会发生主键约束冲突。
解决方案:删除重复的行或更改主键值以解决冲突问题。
④外键约束冲突
如果您尝试插入一个不匹配的外键值,或者尝试删除一个具有相关记录的行,则会发生外键约束冲突。
解决方案:确保您的外键值与主要表中的值匹配,并在删除行之前先删除相关记录。
⑤空间不足
如果您正在向表中添加大量数据,但磁盘空间不足,则可能会出现此错误。
解决方案:释放磁盘空间或增加可用空间。
10 总结
①数据库相关概念
数据库是一个组织数据的集合。它可以存储和管理大量数据,并提供数据检索、排序、更新等操作。常见的关系型数据库管理系统(RDBMS)包括MySQL、Oracle、SQL Server等。
②MySQL的安装
- MySQL是一种流行的开源关系型数据库管理系统。要安装MySQL,请按照以下步骤进行:
- 下载MySQL并安装;
- 启动MySQL服务;
- 在命令行或图形用户界面中连接到MySQL服务器;
- 创建数据库和表格;
- 开始使用MySQL。
③访问数据库服务器
要在MySQL中访问数据库服务器,您需要使用MySQL客户端工具(如MySQL Workbench、phpMyAdmin等)或命令行接口(如MySQL Shell)。在连接到数据库服务器之前,请确保您已经安装了MySQL,并知道MySQL服务器地址、用户名和密码。
④MySQL的语法规范
-
MySQL语法规范是一组定义了如何编写有效SQL查询的规则。以下是一些MySQL语法规范的基本要点:
-
SQL语句应以分号(;)结束;
-
所有关键字应该大写;
-
多个关键字之间应该用空格隔开;
-
为了增加可读性,请使用缩进和换行符;
-
不要使用MySQL保留字作为列名或表名;
-
在编写复杂查询时,请使用括号明确操作次序。
-
⑤DDL语言
-
DDL(Data Definition Language)是一种用于定义数据库结构的语言。DDL包括以下关键字:
-
CREATE:创建新表格、视图或其他数据库对象;
-
ALTER:修改已有的表格、视图或其他数据库对象;
-
DROP:删除表格、视图或其他数据库对象;
-
上篇文章:学习笔记 | 一文搞懂MySQL体系架构!!!(day22)-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/141679419下篇文章: SQL的高级查询练习知识点(day24)-CSDN博客https://blog.csdn.net/Z0412_J0103/article/details/141713435