【MySQL】MySQL数据库基础

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

数据库基本操作

查看数据库

创建数据库 

字符集

if not exists

选中数据库 

删除数据库

控制权限

对数据进行及时的备份

找个人盯着

数据类型

数值类型

字符串

时间日期

数据表操作

查看所有表

创建表

注释

查看表结构详细情况

删表

练习


数据库 是一类软件,能够把很多数据组织起来,方便我们进行 增删改查  -->具体的软件 ,数据库的底层实现过程中, 用到了很多的 数据结构

数据结构 是一类学科 ,讨论的是把很多数据组织起来 方便后续进行 增删改查 -->更抽象 , 方法论

MySQL是一个"客户端-服务器"结构的程序(客户端(发送请求方)和服务器(接收方)是两个独立的程序,它们通过"网络"进行通信),服务器是本体,负责组织 存储 管理 数据的

内存,存储空间小 ,访问速度快 ,成本更高 ,数据易失 (掉电之后,数据会消失)

硬盘,存储空间大 ,访问速度慢 ,成本更低 ,持久存储 (掉电之后,数据仍然存在)

数据库基本操作

查看数据库

show databases;  查看当前有哪些数据库

创建数据库 

create database 数据库名;  创建数据库

注意:

数据库名字不能和SQL中的"关键字"重复,不能和已有的数据库名字重复(除非 创建的时候在数据库名,加上"反引号"(键盘Esc键的下面) )

需要指定数据库的 "字符集" (charset)  (若不能正确指定字符集,后续想保存中文,可能会出现问题)

字符集

表示中文字符集的 有UTF-8(可以写成 UTF8 或者 utf8 或者 utf-8)和GBK 两种编码方案,在不同的编码方案里,一个中文使用的字节数可能不同

  • 在UTF-8(变长编码)中 表示符号 可能用1~4个字节表示,对中文来说 一般是3个字节表示,UTF-8是世界上最流行的编码方式,可以表示世界上任何一种语言文字.
  • 在GBK中,一个汉字使用两个字节表示,GBK只能表示简体字.

但在mysql上的utf8是个"残本" 有些标准的utf8字符 在mysql的utf8中可能不支持(如emoji表情)

mysql自己创造了utf8mb4(脱离mysql,别的程序都不认识这个字符集,只认识utf8)来表示utf8的完全体

if not exists

 if not exists表示在创建数据库时,指定的一个简单条件(若不存在,就创建,否则,就啥也不做)

目的是防止 在批量执行一组sql的过程中,任何一个sql出错,都会使后续的sql无法继续执行

选中数据库 

use 数据库名;  选中数据库 

数据库服务器中有 多个"数据库"(这里的数据库不是软件,是数据库软件上的"数据集合"),所以在使用某个数据库之前要选择该数据库

删除数据库

drop database 数据库名;    删除数据库

删库是一个极其危险的操作,有以下可以避免删库:

控制权限

如限制普通开发 只能进行对数据库的"读操作" ,不能"修改",只能由DBA(数据库管理员)操作

对数据进行及时的备份

数据备份,一二三原则(一份数据,至少要保存在两个机器上,至少有三个副本)

找个人盯着

数据类型

数值类型

 分为整型和浮点型:

整形推荐使用int和bigint,因为若使用tinyint或使用smallint用出bug了,得不偿失~

MySQL中的float和double类型也遵守IEEE754标准表示浮点数,重点使用double,日常开发中很少使用float.

decimal不再使用这套标准了,它设定的存储格式 相当于"变长的",付出更多空间,使存储的数据更精确.

decimal与double对比,付出了更多的 空间和时间  ,拿两个decimal与两个double分别进行运算,decimal的速度要慢的多.

上述谈到的类型都是有符号的类型(有正负号,能表示负数),mysql也有无符号类型,但是不建议使用,(最大的问题: 两个无符号类型 做减法的时候 容易溢出(得到一个很大的整数))

字符串

最常使用varchar(size)表示字符串大小,size表示的最大字符数,单位是:字符(utf8中 1字符=好几个字节)

如:用varchar(50)存储 数据为5或6个字符,实际申请的存储空间就是5或6个字符,不会有浪费.

text也是可变长的字符串,不用指定最大长度,它会根据表中数据自适应,

实际使用中 更倾向于使用varchar,因为varchar指定了最大长度,程序员很容易预估出表中的数据量~

blob存储的是二进制 的数据,可以存储图片 视频 音频.....但是一般不建议使用数据库直接存储图片 视频 音频等内容

时间日期

重点使用datetime表示时间戳,而timestamp不建议使用了,因为超过2038年就溢出了~ 

数据表操作

查看所有表

show tables;  查看数据库中有哪些表 

创建表

create table 表名(列名 类型,列名 类型,列名 类型,....);   创建表

注释

可以使用 -- 作为注释,也可以使用 # 表示

查看表结构详细情况

desc 表名;   查看表的结构(有哪些列,每列是什么情况),不能查看表里的内容

删表

drop table 表名;   删表

注意:删表往往比删库更可怕,因为删库操作一般会触发警报,让程序员第一时间能够发现问题,做出反馈(处理得越及时,损失越小), 而 删表就更隐蔽了,更难发现.

练习

有一个商店的数据,记录客户及购物情况,有以下三个表组成:

商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供 应商provider)

客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证 card_id)

购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

 这里的单价使用的是int更好 ,以"分"为单位,如:1.25元=125分,若用decimal虽然可以比较精确的表示 钱,但运算速度比较慢,空间开销更大.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值