mySQL数据库基础

数据库的操作

显示当前的数据库

show databases;

创建数据库

create database '数据库名';

示例:创建名为 db_test1 的数据库

create database db_test1;

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

create database if not exists db_test2;

如果系统没有 db_test 的数据库,则创建一个使用utf8mb4字符集的 db_test 数据库,如果有则不创建

create database if not exists db_test character set utf8mb4;

使用数据库

use '数据库名';

删除数据库

drop database '数据库名';

要注意,删除操作是非常危险的,数据库一旦被删除.内部存储的数据很可能就无法恢复.尤其是对于公司中的一些重要的数据(生产环境的数据)

那么,有没有什么办法,可以避免上产环境的数据被删除呢?
1.权限控制: 对数据库操作的权限进行控制,只要个别的管理员才可以执行删除操作
2.备份,在每次要执行删除操作的时候,对数据进行备份,这样即使是误删以后,也可以短时间内恢复以前的状态

数据库管理数据表

mysql管理数据的方式:
在这里插入图片描述

一个数据库中,可以有多个数据表,
每个数据表有很多行,每一行称为一条’记录’
每一行又有很多列,每一列称为是一个’字段’
且mysql严格要求表的每一行都是固定的列数. 所以为了描述这个数据表中的列的信息,自创建数据表时,就需要指定表头
(ps:不是所有的数据,都是按照表格 的方式来组织数据的)
像MySQL,Oracle,SQLSever都是按照表格来组织数据的,被称为"关系型数据库"
像redis,HBase,MongoDB不要求按照表格方式来组织(类似于文档/键值对)成为"非关系型数据库"

常用数据类型

数值类型

分为整形和浮点型:

数据类型大小说明对应java类型
BIT[ (M) ]M指定位数二进制数,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

注意:数值类型可以指定为无符号(unsigned),表示不取负数
1字节(bytes)= 8bit。
对于整型类型的范围:

  1. 有符号范围:-2(类型字节数*8-1)到2(类型字节数*8-1)-1,如int是4字节,就是-231到231-1
  2. 无符号范围:0到2(类型字节数*8)-1,如int就是232-1

平时提到的浮点数(float,double)都是基于IEEE 754标准来进行使用的,
最大的问题是有时候这两个类型表示的数字不能精确的表示一个小数
float/double 不能直接用"=="来比较 如果通过作差的方式 得到的数字有可能会超出预期的误差范围

尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。

字符串类型

数据类型大小说明对应java类型
VARCHAR (SIZE)0-65,535字节可变长度字符串String
TEXT0-65,535字节长文本数据String
MEDIUMTEXT0-16 777 215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[]

日期类型

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

有人可能会想到:日期还可以用varchar来表示.但这么做的效果并不能对日期进行校验

表的操作

查看表结构

前提是要选中该表所在的数据库:

use database 数据库名;
//显示该数据库中所有表
show sho wtables;
//查看表结构
desc 表名;
//查看整个表
select * from 表名;

创建表

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

可以使用comment增加字段说明。
示例:

create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码',
age int,
sex varchar(1),
birthday timestamp,
amout decimal(13,2),
resume text
);

删除表

drop table表名;

示例:

-- 删除 stu_test 表
drop table stu_test;
-- 如果存在 stu_test 表,则删除 stu_test 表
drop table if exists stu_test;

常用总结

操作数据库:

-- 显示
show databases;
-- 创建
create database xxx;
-- 使用
use xxx;
-- 删除
drop database xxx;

常用数据类型:

INT:整型
DECIMAL(M, D):浮点数类型
VARCHAR(SIZE):字符串类型
TIMESTAMP:日期类型

操作表:

-- 查看
show;
-- 创建
create table 表名(
字段1 类型1,
字段2 类型2,
...
);
-- 删除
drop talbe 表名;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值