当前位置:网站首页>数据库概论-MySQL的数据表的基本操作
数据库概论-MySQL的数据表的基本操作
2022-08-02 06:01:00 【加勒比海涛】
数据表的操作
大家好,这次给大家带来的是我的新的专栏:数据库,数据库相对来说难度不是那么高,大家只要勤加练习、熟记语法,我相信学好数据库不是什么问题,博主会从0剖析,逐步讲解数据库的知识点,并且会举很多实例。最重要的是,博主不会采用软件,使用最原始的方式 -> 命令行来讲解,这样讲解的好处是逐个语句进行书写,不会造成读者思路跟不上的问题!
QQ:162196770
微信:PRIDE_Xu_
Gitee:https://gitee.com/jialebihaitao
上一篇博客传送门:
下一篇博客传送门:
文章专栏:
B站:建设中,以后会考虑在B站上讲解一些知识点等等
数据表的操作
2.1 MySQL管理数据的方式
我们其实已经介绍过一遍了 , 再重新给大家介绍一下
注意:
不是所有的数据,都是按照表格的方式来组织数据的
像
Oracle、MySQL、SQL Server
都是按照表格的形式来组织数据的,称为关系型数据库像
Redis、HBase、MongoDB
这种的都不是按照表格方式组织的(类似于 文档/键值对),称为非关系型数据库
2.2 MySQL当中的数据类型
有了数据库之后,要想真的去存储、组织数据,还需要数据表。创建表的时候就需要指定表结构,表结构中就涵盖了有哪些字段,以及每个字段的类型是什么?
数据类型一方面能够方便我们对数据进行处理 , 一方面也能够针对数据进行校验和检查 .
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字节 | 双精度,m指定长度,d指定小数点后面的位数,会发生精度丢失 | Double |
decimal(m,d) | m/d最大值+2 | 双精度,m指定长度,d表示小数点位数.精确数值 | BigDecimal |
numeric(m,d) | m/d最大值+2 | 双精度,m指定长度,d表示小数点位数.精确数值 | BigDecimal |
这里面的 (m,d) 实际上表示的就是总共有 m 位 , 小数点后面有 d 位
比如 : decimal(3,1) ,满足这个条件的数字 比如 : 98.3 , 54.9
decimal 比 double / float 更能精确的保存浮点数 , 因为它是通过字符串的方式来进行存储的 . 不过就是计算的时候消耗的时间更多 , 存储空间消耗的越多 . 平常用 double 就足够了 . 特别需要的时候再考虑 decimal
2.2 字符串类型
数据类型 | 说明 | 对应Java类型 |
---|---|---|
varchar(size) | 可变长度字符串 | String |
text | 长文本数据 | String |
mediumtext | 中等长度文本数据 | String |
BLOB | 二进制形式的长文本数据 | byte[] |
说明:
varchar
可以根据实际需要,来指定要占用多大内存空间(size
的单位是字符,不是字节,一个字符可能有多个字节构成)比如 : varchar(25) 代表的就是这个字段最多可以存储25个字符 , 动态的根据存储的数据长度来去自动适应空间
BLOB
用于表示二进制的数据MP3
文件、jpg
文件、.class
文件都属于二进制文件txt
、.java
、.c
都属于文本文件在 C 语言阶段 , 我们学习过文件操作
fopen()
rb 读方式打开二进制文件
rt 读方式打开文本文件
一个需要记下来的小知识点
一个字节可以表示的整数 : -128 ~ + 127
无符号 : 0 ~ +255
两个字节可以表示的整数 : -32768 ~ + 32767
无符号 : 0 ~ + 65535
四个字节可以表示的整数 : -21亿 ~ +21亿
无符号 : 0 ~ +42亿九千万
2.3 日期类型
数据类型 | 大小 | 说明 | 对应Java规则 |
---|---|---|---|
datetime | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换。 | java.util.Date、java.sql.Timestamp |
timestamp | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换。 | java.util.Date、java.sql.Timestamp |
那么有一个小问题:日期在数据库当中能不能用varchar
进行存储?
当然可以,不过不太好(有现成的还用啥
varchar
)如果使用
varchar
,就失去了对于日期正确性的校验功能了使用
datetime
如果插入的数据格式不符合要求,就会直接提示咱们推荐输入格式:2022-04-29 21:37:00
这两个数据类型,都可以存储年月日时分秒
小故事:
timestamp:意思是时间戳(以1970年1月1日0时0分0秒作为基准时刻,来计算当前时刻和基准时刻的秒数/毫秒之差~)
我们目前
timestamp
是4个字节,到2038年,4个字节就不够用了之前有个千年虫事件:以前计算机表示年份只有2位,即90、91、92…年,到了2000年就完蛋了,不够存了,程序员连续加班终于把这个问题给解决掉了!这样才没出现问题。
2.3 创建表
语法:
create table 表名(列名 类型,列名 类名...);
在进行表的操作之前,要先选中数据库(use
操作)
和常见的其它编程语言不同 , SQL 中的变量是定义在名字后面的 , 我们要区分清楚 .
现在也有很多语言是这样的定义方式 , 比如 Go 语言 , Python 语言 .
创建表的时候 , 我们要明确表的结构 . 也就是需要有哪些列 每一列的数据类型 每一列叫啥名 以及相关约束等等
注意 : 在同一个数据库当中 , 不能有重名的情况 .
2.4 查看表
语法:
show tables;//与 show databases 类似
查看表之前,也需要先选中数据库
2.5 查看表结构
查看某个表里面有几列,每一列都是啥类型,每一列是啥名字,以及每一列的补充信息
语法:
desc 表名;
这里面的desc
其实就是describe
(描述)
当然我们也可以写成这样
describe 表名;
2.6 删除表
语法:
drop table 表名;
注意:
删除表也是一个高危操作!!!跟数据库被删了都一样可怕!
甚至删表操作比删库操作还要可怕 !
表面上来看,删除数据库直接就玩完 . 但是我们删除了表的话 , 短时间内或者一直都不会报错 . 但是因为缺失了这个表 , 到时计算出来的数据都是错误的 , 而且排查起来也很困难 . 当前的状态其实就是 “带伤作战”
2.7 SQL当中的注释
两种方式:(推荐方式二)
方式一:创建表的时候,可以使用
comment
来给某个列后面加上注释
方式二:–空格
这个是更普遍的注释方式
-- 注释
接下来,我们来做一个小练习熬~ 很简单~~~
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
- 商品
goods
(商品编号goods_id
,商品名goods_name
, 单价unitprice
, 商品类别category
, 供应商provider
)- 客户
customer
(客户号customer_id
,姓名name
,住址address
,邮箱sex
,身份证card_id
)- 购买
purchase
(购买订单号order_id
,客户号customer_id
,商品号goods_id
,购买数量nums
)
首先,我们要知道:
在SQL
当中,"钱"有两种表示方式
使用
decimal
使用
int
!这个更常用一些!而且效率也比decimal
高很多用 int 代替小数 , 这时候单位是 分 , 就相当于把小数转化成整数了
然后,我推荐大家在敲一个比如这样的容易出错的语句的时候,使用记事本敲完再复制进去,这样错误率会大大降低,而且会好更改。我个人用的是Sublime Text3
。要清楚的是 , 在cmd
当中,复制不再是ctrl+c
,选中你想复制的内容,回车就已经复制了,ctrl+c
是当你输错了不想在输入的时候,输入ctrl+c
就可以了 , 终端输入也可以输入 \c
。
具体操作如下:
那么我有个小问题:
这里面的数字为啥是50或者10?
其实现在我们自己日常学习的时候随便写,别太离谱就行。
等到上班的时候,这个数就是产品经理指定的了 .
产品经理的工作就是分析老板 / 用户的需求 , 调查清楚了把它交给程序员 , 程序员按照给定的标准进行设计
工作时候 , 大家都叫 产品经理 “产品”
下面我把代码贴过来~
create table goods (
goods_id int,
goods_name varchar(50),
unitprice int,
categoory varchar(50),
provider varchar(50)
);
create table customer (
customer_id int,
name varchar(50),
address varchar(50),
email varchar(50),
sex varchar(10),
card varchar(50)
);
create table purchase (
order_id int,
customer_id int,
goods_id int,
nums int
);
最后最后,再给大家推荐一个命令行工具,我也是刚开始使用,初步体验不错。(下载不了的话去微软商店搜索windows terminal
即可)
windows terminal
在windows terminal
中操作数据库的命令:
mysql -u root -p
边栏推荐
猜你喜欢
有人开源全凭“为爱发电”,有人却用开源“搞到了钱”
MySql统计函数COUNT详解
Vscode连接远程服务器出现‘Acquiring lock on/home/~’问题
Write implicit join on view with jOOQ 3.14 synthetic foreign key
About the local server problem after ue4.27 pixel streaming package
HCIP BGP Comprehensive Experiment Establishing peers, route reflectors, federation, route announcement and aggregation
Kind of weird!Access the destination URL, the host can container but not
zabbix email alarm and WeChat alarm
The installation of NPM, CNPM
Leading the demand and justifying the HR value - the successful launch of the "Human Resource Leading Model HRLM"
随机推荐
Understand C operators in one article
ue先视频教程后深入
The stock price has repeatedly hit new lows, and the real estate SaaS giant is in trouble. How should Mingyuan Cloud transform and save itself?
Technology empowers Lhasa's "lungs", Huawei helps Lalu Wetland Smart Management to protect lucid waters and lush mountains
nacos源码启动找不到istio包
typescript 'props' is declared but its value is never read solution
Vscode连接远程服务器出现‘Acquiring lock on/home/~’问题
Analysis of port 9848 error at startup of Nacos client (non-version upgrade problem)
HCIP 第三天实验
MySQL高级-MVCC(超详细整理)
MySql 5.7.38 download and installation tutorial, and realize the operation of MySql in Navicat
MySQL 23 classic interviews hang the interviewer
MySQL高阶---存储引擎、索引、锁
Nacos installation detailed process
MySQL union query (multi-table query)
MySQL Advanced Statements (1)
MySQL Advanced SQL Statements
npm 和 yarn的区别
两篇不错的php debug教程
振兴农村循环经济 和数链串起农业“生态链”