MySQL:数据类型&表的基础操作

目录

1、数据类型

1.1 数值类型

 1.2 字符串类型

1.3 时间类型

2、表的基础操作

2.1 选择数据库

 2.2 建表

2.3 查看库中所有表

2.4 查看某一表结构

 2.5 删表

3、可视化编辑工具

3.1 运行


1、数据类型

1.1 数值类型

  • bit类型可指定长度(如果不写,默认为1位),最多指定长度为64,也就是说最多可表示64个二进制位。
  • tinyint类型也可指定长度,指定长度为1时,就认为是bool类型,也就是说 bool = tinyint(1)
  • bigint定义的整型范围比int类型更大,在建表定义编号字段时,通常使用bigint类型定义
  • float、double表示小数,但会造成精度丢失。 
  • decimal类型,M为指定的总长度,D为指定的小数位数,不会造成精度丢失,故使用小数时就用decimal定义(常用于金额)。

注意:decimal中的指定的M长度,不包括负号和小数点;若指定的D为0,则不保存小数点和小数部分(decimal表示的为整数) 。 

上述常用类型为:tinyint、int、bigint、decimal(表示小数)


 1.2 字符串类型

  •  varchar类型是最常用的字符串类型,可指定字符数量,注意,是指定字符的数量,而不是字节数。
  • text为文本数据类型,保存文章帖子等等
  • mediumtext也为文本数据类型,保存数量更大
  • blob 用来存储文件的二进制形式。但在数据库中,不建议存文件,我们通常将文件存在磁盘上,而在数据库相应的字段中存储该文件路径。

注:对于utf8mb4编码集,其中每个字符大小为:1-4字节。简单字符为1个字节,而复杂的字符最多为4个字节,如emj表情。

也就是说1个varchar类型的字段最多可存放的字符数量为: 65535/4=16383(要考虑极端情况)

拓展: 

  • 文本文件:我们能直接看懂的文件,如:记事本写的日记、Java源代码...等等
  • 二进制文件: 只有机器或程序才能读懂,以文本形式打开为乱码,以二进制形式打开为01二进制编码

1.3 时间类型

  • datetime 为新的时间类型,当跨世纪时为避免千年虫问题,避免数据的时间混乱,加大了之前timestamp的范围,datetime 为最新的时间类型。
  • timestamp 时间戳,范围小,舍弃这个类型即可。

DATETIME数据类型用于存储日期和时间,其默认格式为YYYY-MM-DD HH:MM:SS,其中HH代表小时。其中可以不指定HH:MM:SS(小时、分钟和秒),即不包含时分秒的信息,HH:MM:SS就为默认值00:00:00。因此,在查询时,可以通过不指定小时部分来限制查询范围到某一天,而不包括该天内的具体时间。 

在MySQL中,要进行DATETIME类型的范围查询,可以使用BETWEEN操作符,或者>​​<以及 =操作符来组合查询条件。

例如:以下是一个查询示例,假设我们有一个表 events,它有一个DATETIME类型的列event_date,我们想要查询在特定时间范围内的记录:

-- 使用BETWEEN操作符
SELECT * FROM events
WHERE event_date BETWEEN '2023-01-01 00:00:00' AND '2023-01-31 23:59:59';
 
-- 使用>和<操作符
SELECT * FROM events
WHERE event_date > '2023-01-01 00:00:00' AND event_date < '2023-01-31 23:59:59'; 

确保查询中的日期时间格式与数据库中的格式相匹配。如果需要包含时间范围的端点,则使用BETWEEN;如果不包含端点,则使用><。 

若只想查询年份,需要用到YEAR()函数:

-- 通过设置查询条件来仅包含年份信息
-- 例如,想要查询2024年的所有记录
SELECT * FROM your_table WHERE YEAR(datetime_column) = 2024;

2、表的基础操作

已知,数据库中有多个表,每个表中存储着多条记录,而每条记录又由多个列构成。

所以,我们要先选择相关数据库,然后再对这个数据库中的表进行相关操作。

2.1 选择数据库

  • 选择数据库:use 数据库名;(若没有库,要先建库) 
  • 查看所选择数据库:select database();

因为database()是MySQL内置的一个方法。

 2.2 建表

其中每个字段后,可用comment进行字段注解。

创建表也可加if not exists校验create table if not exists 表名(....);和建库时一样的写法。

注:每个表中,都强烈建议设计一个编号字段,类型设为bigint;若有varchar类型,则一定要指定长度。

-- 创建数据库
drop database if exists bit_mall;
create database if not exists bit_mall character set utf8mb4 collate utf8mb4_0900_ai_ci;

-- 选中数据库
use bit_mall;

-- 建表

-- 商品表
drop table if exists goods;
create table if not exists goods(
goods_id bigint comment'商品编号',
goods_name varchar(20) comment'商品名',
unitprice decimal(10,2) comment'商品单价',
category varchar(10) comment'商品类别',
provider varchar(50) comment'供应商'
);
-- 客户表
drop table if exists customer;
create table if not exists customer (
customer_id bigint comment'客户号',
name varchar(20) comment'客户姓名',
address varchar(20) comment'客户住址',
email varchar(50) comment'客户邮箱',
gender bool comment'客户性别',
card_id varchar(18) comment'客户身份证'
);
-- 购买表
drop table if exists purchase;
create table if not exists purchase (
order_id bigint comment'购买订单号',
customer_id bigint comment'客户号',
good_id bigint comment'商品号',
nums int comment'购买数量'
);

2.3 查看库中所有表

查看所选择数据库中的所有表show tables;(所有表,所以为复数)

-- 查看库中的所有表
show tables;

2.4 查看某一表结构

查看所选择数据库中的某一个表的结构:desc 表名;

-- 查看表结构 
-- purchase为表名
desc purchase;

 2.5 删表

删除表:drop if exists 表名;

一个drop语句可以删除多个表,表名之间用逗号隔开。

还是那句话:使用drop语句非常危险,要慎之又慎!!!

-- 删表
-- goods为表名
drop table if exists goods;

3、可视化编辑工具

命令行客户端工具,只执行一些简单的查询或是指令,如果一两句SQL可以搞定就在这里面去执行。

但如果说要编写复杂的SQL,比如表设计,复杂查询等操作,建议大家还是去可视化工具中编写。

3.1 运行

当我们在可视化工具中编写好SQL语句后,如何在命令行工具中运行呢?

在编辑器中编写好后,保存为一个sql文件,在命令行工具中使用以下SQL语句均可运行:

  1. \. 路径  
  2. source 路径

\. D:\database\lesson3.sql

 END

  • 48
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值