目录
前言
MySQL数据库简介
MySQL是一个关系型数据库
关系型数据库是指采用了关系模型来组织数据的数据库,简而言之,关系模型就是一个二维表格模型。
关系型数据库就是由二维表格以及他们之间的联系所组成的一个数据组织。(如下图)
如何操作数据库
数据库是用来保存数据的,而操作数据库需要用到SQL
SQL本身就是针对数据库操作的语言,和数据库是两个概念,切勿混淆。
SQL的分类
DDL 数据定义语言,用来维护存储数据的结构。
代表指令:create , drop , alter
DML 数据操纵语言,用来对数据(数据行)进行操作。
代表指令:insert , delete , update
DML又单独分出一个DQL,数据查询语言,代表指令:select
DCL 数据控制语言,主要负责权限管理和事务。
代表指令:grant , revoke , commit
1. 数据库的操作
注意:我们要操作的数据库一定是我们自己创建的数据库,MySQL自带的数据库千万不要随意改动,更不能删除!否则可能导致MySQL无法启动。
1.1 显示当前的数据库
show databases;
其中:
红色标记出来的是MySQL自带的数据库,记录的是一些关于MySQL自身的配置等信息。
蓝色标记出来的是系统自带的用于练习的数据库,示例数据库。
绿色标记出来的是我自己创建的数据库。
使用数据库一定只使用自己的数据库,其他的不要随意乱动!
1.2 创建数据库
语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_option]create_option:[default] {character set [=] charset_name| collate [=] collation_name| encryption [=] {'Y' | 'N'}}其中:方括号[]内的是选填项,花括号{}内的是必填项。
如果去除所有选填项,最简单的语句应该是:create database db_name;
创建一个名为test_2的数据库:
Query OK,1 row affected(0.02 sec)的意思是执行成功,一行代码受影响(执行花费0.02秒)
然后我们再执行一次show databases;检查一下数据库是否被成功创建:
可以看到名为test_2的数据库已经成功创建了。
如果此时我们再创建一个名为test_2的数据库会怎么样呢?
事实证明:如果已经存在一个数据库,再创建一个同名的数据库会直接报错。
如果我们加上一个if not exists :
就会显示执行成功,但是会产生一条警告!
我们再使用show warnings;查看产生的警告:
警告意为:已经存在同名的数据库test_2,故无法创建。
if not exists的作用:
让语句成功执行,从而保证整个执行流程的运行。
如果不加if not exists就会报错,导致整个执行流程终止。
1.3 使用数据库
语法:
USE db_name; db_name为数据库名
使用示例:
-选择数据库
指令:select database();
这是MySQL提供的一个内置方法。
可以查看当前操作的是哪个数据库。
如果当前没有选择数据库:
如果选择了数据库:
1.4 删除数据库
语法:DROP DATABASE [IF EXISTS] db_name;
![](https://i-blog.csdnimg.cn/direct/cdb1a55e92db4b16b17b6f7e9583c597.png)
![](https://i-blog.csdnimg.cn/direct/526f99c20d5b4feb9418cfe9dada7d0a.png)
2. 常用数据类型
2.1 数值类型:
数据类型 | 大小 | 说明 | 对应java类型 |
BIT[(M)] | M指定位数,默认为1 | 二进制数,M范围从1到64,存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时默认是1位,即只能存0和1 |
TINYINT | 1字节 | - | Byte |
SMALLINT | 2字节 | - | Short |
INT | 4字节 | - | Integer |
BIGINT | 8字节 | - | Long |
FLOAT(M,D) | 4字节 | 单精度,M指定长度(有效数字), D表示小数点位数,精确数值 | Float |
DOUBLE(M,D) | 8字节 | Double | |
DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数,精确数值 | BigDecimal |
NUMERIC(M,D) | M/D最大值+2 | 和DECIMAL一样 | BigDecimal |
其中,float和double类型,在表示小数的时候都不是特别精准,所以用decimal类型去表示小数。
2.2 字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
VARCHAR(SIZE) | 0-65535字节 | 可变长度字符串 | String |
TEXT | 0-65535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16777215字节 | 中等长度文本数据 | String |
BLOB | 0-65535字节 | 二进制形式的长文本数据 | byte[] |
其中:
varchar(size)是最常用的一种字符串类型。size可以指定字符串长度(多少个字符,不是字节)
utf8mb4编码集,一个符最多四个字节,根据字符情况用1-4个字节来表示一个字符。
文本文件:人能直接看得懂的文件,比如记事本里面写的文字。
二进制文件:直接打开的话里面都是一堆乱码,这些文件只有机器读得懂,一般称之为二进制文件
2.3 日期类型
数据类型 | 大小 | 说明 | 对应java类型 |
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换 | java.util.Date java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 | java.util.Date java.sql.Timestamp |
一般使用datetime而不用timestamp。因为timestamp范围太小了。
3. 表的操作
表是什么
一般来说,创建完数据库之后,就要在数据库中创建表,表中存储数据记录(行),
一条记录由不同的列组成。
3.1 创建表
创建表之前,需要先选择要操作的数据库,否则会报错。
语法:
CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype);
可以使用comment增加字段说明。
示例:创建一个学生表student,表中包含两个字段,id表示编号,name表示姓名,长度为50
3.2查看表结构
语法:
desc 表名 ;
使用示例:
解释:
创建表中加校验:
create table if not exists 表名(
字段 数据类型,
);
效果跟上面创建数据库是一样的。
3.3 删除表
语法:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
使用示例:
删除表也可加校验: drop table if exists table_name;
示例:
完
如果哪里有疑问的话欢迎来评论区指出和讨论,如果觉得文章有价值的话就请给我点个关注还有免费的收藏和赞吧,谢谢大家!