目录
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 时间戳,范围小,舍弃这个类型即可。
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语句均可运行:
- \. 路径
- source 路径
\. D:\database\lesson3.sql
END