目录
- 数据库简介
- MySQL简介
- MySQL的操作
- 库操作
- 基本数据类型
- 字符串类型
- 日期类型
- 基础表操作
- 一些小结和建议
- 建表练习
- 参考代码
- 写在最后的话
数据库简介
我们都知道MySQL是数据库的一种, 那么数据库是什么呢? 数据库其实就是通过各种数据结构来组织和管理数据的软件, 和我们日常用的软件没啥区别, 学会使用规则就可以了,即SQL语句.
- SQL分类:DDL、DML、DCL.
- DDL数据定义语言,用来维护存储数据的结构 代表指令: create, drop, alter
- DML数据操纵语言,用来对数据进行操作 代表指令: insert,delete,update
- DML中又单独分了一个DQL,数据查询语言,代表指令: select
- DCL数据控制语言,主要负责权限管理和事务 代表指令:
grant,revoke,commit
数据库分为关系型数据库(RDBMS)和非关系型数据库两种
- 关系型数据库有: Oracle, MySQL, SQL Server , SQLite…
- 非关系型数据库有: memcached, redis, mongodb, hbase, neo4j…
关系型数据库 | 非关系型数据库 | |
使用SQL | 是 | 不强制要求,一般不基于SQL实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写操作 | 效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性比较高 |
使用场景 | 业务方面的OLTP系统 | 用于数据的缓存、或基于统计分析的OLAP系统 |
ps: OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line AnalyticalProcessing)是指联机分析处理.
ps: 百度百科对数据库的说明链接
MySQL简介
MySQL属于关系型数据库, 所谓的关系型数据库就和excel差不多, 都是以表格的形式组织数据, 那么为什么使用MySQL, 主要是因为它是免费的, 所谓一时白嫖一时爽, 一直白嫖一直爽.
MySQL分为客户端和服务器, 客户端发送网络请求给服务器, 然后客户端返回网络响应给客户端, 一台服务器可以同时连接多个客户端 , 并且是通过网络传输的, 所以服务器和客户端可以不在同一台主机上
MySQL目前主流使用5.7版本和8.0版本, 博主使用的是5.7版本 , 看博主文章跟着实操的,尽量保证大版本一致,使用5.7系列, 使用8.0系列难免会有所差异.
安装软件就不多赘述了, 百度一下有很多安装方式, 官方下载连接附上
其他的下载+安装很详细,懒得找的小伙伴们可以使用这个
MySQL的操作
我们直接在控制台进行SQL练习, 也就是这个黑框框, 我们先来见识一下库操作, 下面所有的 [描述] 都是一个暂时代替的东西, 不是实际敲的SQL语句, 分号是要的.
库操作
show databases; --显示所有数据库
create database [数据库名]; --创建一个数据库
use [数据库名];--使用/打开 这个数据库
drop database [数据库名]; --删除数据库
按照上面的语句套用,首先是显示目前所有的数据库, 显示的不一定完全一样, 能成功显示就没问题.
然后套用第二条语句, 建一个名字为abc 的数据库, 然后显示一下, 可以看到
然后use使用 abc 这个数据库,可以看到提示
最后我们删除刚刚创建的数据库abc, 再次显示就已经不存在数据库abc了
- 尽量不要使用删库操作,就算要删库,操作也一定要非常非常小心, 删错了就连夜跑路吧
基本数据类型
- 数据类型是用于建表时指定每一列的数据类型
- SQL中的关键字不区分大小写 ,加粗的类型是常用或者建议使用的类型
- 字符串可以使用单引号,也可以使用双引号,但是所有字符都必须是英文的
sql类型 | 说明 | 大小byte | 对应的Java类型 |
bit(指定位数,默认为1位) | 二进制数, M范围从1到64, 存储数值范围从0到2^M-1 | 1bit | 常用Boolean对应BIT,此时 默认是1位,即只能存0和1 |
tinyint | 1 | Byte | |
smallint | 2 | Short | |
int | 4 | Integer | |
bigint | 8 | Long | |
float(总长度,小数位数) | 单精度,M指定长度,D指定 小数位数。会发生精度丢失 | 4 | Float |
double(总长度,小数位数) | 8 | Double | |
decimal(总长度,小数位数) | 双精度,M指定长度,D表示 小数点位数。精确数值 | 长度和小数点位数较大者+2 | BigDecimal |
numeric(总长度,小数位数) | 双精度,M指定长度,D表示 小数点位数。精确数值 | 长度和小数点位数较大者+2 | BigDecimal |
字符串类型
sql类型 | 说明 | 大小byte | 对应的Java类型 |
varchar(字符串大小) | 可变长字符串 | 0-65535 | String |
text | 长文本数据 | 0-65535 | String |
mediumtext | 中等长度文本数据 | 0-16777215 | String |
blob | 二进制形式的长文本数据 | 0-65535 | byte[] |
日期类型
sql类型 | 说明 | 大小byte | 对应的Java类型 |
datetime | 1000-99999年,不会进行时区的检索和转换 | 8 | Java.util.Data、java.sql.Timestamp |
timestamp | 1970-2038自动检索当前时区,并进行转换 | 4 | java.util.Date、java.sql.Timestamp |
基础表操作
create table [表名]([列名,类型]);--创造一个表格
show tables;--显示当前数据库下的所有表格
desc [表名];--查看表的结构
drop table [表名];--删除表
在建表之前,需要选择一个数据库,如何将表结构放入其中.现在使用上面讲过的库操作建一个数据库,建好之后使用它, 博主建了一个名为test的数据库
是不可以建一个没有结构的空表的, 就是说一个表最少是需要一列的,所以我们就需要给表一定的结构
创建表格的模板如下, 可以写成一行,但是建议分行写,更加清晰
- SQL中 -- 表示注释
--创造一个表格
create table [表名] (
属性名称 类型,
属性名称 类型,
属性名称 类型,
...
属性名称 类型--最后面不加,
);--以分号结尾
如下我们创建了一个表名为student的表,表中有id ,name ,age ,score四个属性
然后我们来查看表的结构,往表中插入数据时一定要明确表中的数据类型,不然会造成插入失败,下篇博客介绍CRUD(增删改查)
最后是删除操作,由于只有一个表,删除之后就没有了,所以就返回了empty set
一些小结和建议
- SQL中的关键字是不区分大小写, 喜欢那种用那种
- 书写的SQL语句可以不在一行也可以在一行,建议不要全部写在一行
- 不建议在控制台直接书写SQL语句, 建议使用 vscode ,notepad++, sublime test 3等文本编辑器书写, Java程序员也可以直接使用idea编写,最差也可以拿记事本写,不熟练的情况下不要直接在控制台输入
- drop操作可以忘记, 因为删库删表是非常危险的, 可能会丢失大量数据
- 数据类型要合理选取,一般能够放下数据就行,尽量不要浪费空间
建表练习
- 商品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)
参考代码
--商品表
create table goods(
goods_id int,
goods_name varchar(20),
unitprice decimal(10,1),
category varchar(10),
provider varchar(20)
);
--客户信息表
create table customer(
customer_id int,
customer_name varchar(20),
address varchar(50),
email varchar(50),
sex varchar(5),
card_id varchar(18)
);
--购买清单
create table purchase(
order_id int,
customer_id int,
goods_id int,
nums int
);