MySQL 数据库基础
这将是一个全新的开始!!
文章目录
1. 数据库的操作
1.1 显示当前所有的数据库
SHOW DATABASES;
1.2 创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
说明:
- 大写的表示关键字
- [] 内的内容可以自行选择
- CHARACTER_SET: 指定数据库采用的字符集
示例:
-
创建名为blog_test的数据库
CREATE DATABASE blog_test;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ci
-
如果系统没有blog_test 的数据库,则创建一个名叫blog_test的数据库,如果有则不创建
CREATE DATABASE IF NOT EXISTS blog_test;
-
如果系统没有db_test的数据库,则创建一个使用utf8mb4字符集的db_test数据库,如果有则不创建
CREATE DATABASE IF NOT EXISTS db_test CHARSET SET utf8mb4;
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4(推荐使用)
创建后可以调用show databases;
查看:
1.3 使用数据库
use 数据库名
1.4 删除数据库
DROP DATABASE [IF EXISTS] db_name;
注:
-
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除
drop database if exists blog_test;
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 |
2.2 字符串类型
数据类型 | 大小 | 说明 | 对应java类型 |
---|---|---|---|
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
2.3 日期类型
数据类型 | 大 小 | 说明 | 对应java类型 |
---|---|---|---|
DATETIME | 8 字 节 | 范围从1000到9999年,不会进行时区的 检索及转换。 | java.util.Date、 java.sql.Timestamp |
TIMESTAMP | 4 字 节 | 范围从1970到2038年,自动检索当前时 区并进行转换。 | java.util.Date、 java.sql.Timestamp |
3. 表的操作
3.1 表的使用
需要操作数据库中的表时,需要先使用该数据库:
use blog_test;
出现Database changed
即使用成功
3.2 查看表的结构
desc 表名;
若该数据库中表不存在却强行调用的话会报错:
3.3 创建表
CREATE TABLE table_name (
field1 datatype;
field1 datatype;
field1 datatype;
);
可以使用comment
增加字段说明:
create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码'
);
3.4 删除表
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;
4. 实例测试
有一个商店的数据,记录客户及购物情况,由以下三个表组成:
- 商品goods(商品编号goods_id, 商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
- 商品customer(客户号customer_id, 姓名name, 住址address, 邮箱email, 性别gender, 身份证 card_id)
- 购买purchase(购买订单号order_id, 客户号customer_id, 商品号goods_id, 购买数量nums)
SQL代码:
-- 创建数据库
create database if not exists blog_test2 character set utf8mb4;
-- 使用数据库
use blog_test2;
-- 商品表
create table if not exists goods(
goods_id int,
goods_name varchar(5),
unitprice int,
category varchar(10),
prpvider varchar(10));
Query OK, 0 rows affected (0.01 sec)
-- 客户表
create table if not exists customer(
customer_id int,
customer_name varchar(10),
address varchar(20),
email varchar(20),
gender varchar(3),
card_id varchar(19));
-- 购买表
create table purchase(
order_id int,
customer_id varchar(20),
goods_id varchar(10),
nums int);
-
创建和使用数据库
-
商品表
-
客户表
-
购买表
-
表创建成功
题外话:在创作这篇文章时,我的生日也悄然而至,特在此文章结尾纪念一下,希望在未来的日子里能够收获更多的进步成长!!就同我在文章开头所说那般: 这将是一个全新的开始( •̀ ω •́ )✧( •̀ ω •́ )✧