Mysql(二)---数据库基础


前言

上一篇博客我们学习Mysql数据库的安装与配置,今天我们学习
Mysql数据库基础


1.常用的可视化工具

常用的可视化工具有:Mysql Workbench:Mysql自带的可视化软件,Navicat 以及 Datagrip
因为涉及到了版权原因,在这里就不做演示了。
在这里我使用命令行来进行演示


2.SQL分类

SQL语言是数据库编程的语言,可能在具体的数据库中SQL语言有些许的差别,但是大同小异。

  • DDL数据定义语言,用来维护存储数据的结构
    代表指令:create drop alter
  • DML数据操作语言,用来对数据进行操作
    代表指令: insert delete update
    • DML中有单独分了一个DQL,数据查询语言,代表指令:select
  • DCL数据库控制操作,主要负责权限管理和和事务
    代表指令:grant,revoke,commit

3.数据库的操作(DDL)

3.1.查看数据库

show databases;

在这里插入图片描述

在操作中,难免会有些会发生错误,例如:
在这里插入图片描述
遇到此类情况,不要着急,可以直接进行拿出翻译软件进行翻译,然后解决错误;在这里插入图片描述
如果提前发现有错误的话,直接输入Ctrl+C,另起一行
在这里插入图片描述

3.2.创造数据库

语法:

REATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] …]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
其中
charset_name(字符集):
8.0中默认的是utf8mb4
5.7中默认的是latin1(不能存储中文)
collation_name(排序规则)
8.0默认的是utf8mb4_0900_ai_ci
5.7默认的是utf8mb4_general_ci

说明:

  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

例如:
创造一个名为test的数据库

create database test;

在这里插入图片描述

如果系统没有 test2 的数据库,则创建一个名叫 test2 的数据库,如果有则不创建

create database if not exists test2;

在这里插入图片描述
我们在运行一次上述的代码,会发现如下情况:
在这里插入图片描述
我们在创建完test2完后,如果再一次执行创建test2数据库(不加入if not exists)会发生什么事情呢?
在这里插入图片描述
因此,在现实工作中,执行sql语句,并不是手动一条一条执行的,而是批量执行的,为了不让某一条语句的错误而影响整个执行流程,都会加上一些类似于if not exists 的校验,防止因为某条sql出错
导致整个SQL中断执行。

创建test3数据库,并且指定字符集和排序规则

create database if not exists test3 character set utf8mb4 collate utf8mb4_0900_ai_ci;

在这里插入图片描述
创建一个名为database的数据库
因为database属于关键字,如果非要创建这个数据库的话,要用
这个符号引住(``),这个符号位于键盘Tab键的上面,Esc的下面,反引号

create database `database`;	

在这里插入图片描述

3.3.使用数据库

语法:

use 数据库;

例如:使用数据库test2;

use test2;

在这里插入图片描述
使用完这个操作,就可以在test2的数据库中创建表,进行一系列操作。

3.4.删除数据库

语句:

DROP DATABASE [IF EXISTS] db_name

例如删除数据库test2;

drop database if exists test2;

在这里插入图片描述
数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除.
为了以后操作的方便,我只留下test这一个数据库,剩余无关紧要的我都删了。


4.常用的数据类型

4.1.数值类型

分为整数型和浮点型:

数据类型大小说明对应Java类型
BIT(M)M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,只能存0和1
TinyInt1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节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

在这里插入图片描述

4.2.字符串类型

数据类型大小说明对应的Java类型
VARCHAR(SIZE)0~65535字节可变长度字符串String
TEXT0~65535字节长文本数据String
MEDIUMTEXT0~16777215字节中等长度文本数据String
BLOB0~65535字节二进制形式的长文本数据byte[]

在这里插入图片描述

4.3.日期型

数据类型大小说明对应的Java类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索以及转化java.util.Date、java.sql.Timestamp
TIMESTAMP4字节范围从1970到2038年,自动检索当前时区并进行转换java.util.Date、java.sql.Timestamp

5.表的操作

需要操作数据库中的表时,需要先使用该数据库:
例如使用test数据库

use test;

在这里插入图片描述

5.1.创建表

语法:

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
);

可以使用comment增加字段说明
在这里插入图片描述
例如:
创建一个名字为student的学生表,表中包含两个字段,id表示编号,name表示姓名,长度为50

create table student (
id bigint comment "编号",
name varchar(50)comment "姓名"
);

查看数据库中有哪些表

show tables;

在这里插入图片描述

5.2.查看表结构

desc 表名;

在这里插入图片描述

5.3.删除表

语法:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] …

在这里插入图片描述
实例:
删除test中的student表

drop table student;

在这里插入图片描述


6.练习

有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品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)

use test;
-- 商品
create table goods(
    good_id bigint,
    goods_name varchar(50),
    unitprice decimal(10,2),
    category varchar(20),
    provider varchar(50)
);
-- 客户
create table customer(
    customer_id bigint,
    name varchar(50),
    address varchar(255),
    email varchar(255),
    gender bool,
    card_id varchar(50)
);
-- 购买
create table purchase(
    order_id bigint,
    customer_id binary,
    good_id bigint,
    nums int
);
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值