目录

  • 数据库简介
  • 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分为客户端和服务器, 客户端发送网络请求给服务器, 然后客户端返回网络响应给客户端, 一台服务器可以同时连接多个客户端 , 并且是通过网络传输的, 所以服务器和客户端可以不在同一台主机上

tdsql和mysql有什么区别吗 mysqld和mysql的区别_tdsql和mysql有什么区别吗


MySQL目前主流使用5.7版本和8.0版本, 博主使用的是5.7版本 , 看博主文章跟着实操的,尽量保证大版本一致,使用5.7系列, 使用8.0系列难免会有所差异.

安装软件就不多赘述了, 百度一下有很多安装方式, 官方下载连接附上

其他的下载+安装很详细,懒得找的小伙伴们可以使用这个

MySQL的操作

我们直接在控制台进行SQL练习, 也就是这个黑框框, 我们先来见识一下库操作, 下面所有的 [描述] 都是一个暂时代替的东西, 不是实际敲的SQL语句, 分号是要的.

tdsql和mysql有什么区别吗 mysqld和mysql的区别_mysql_02

库操作

show databases; --显示所有数据库
create database [数据库名]; --创建一个数据库
use [数据库名];--使用/打开 这个数据库 
drop database [数据库名]; --删除数据库

按照上面的语句套用,首先是显示目前所有的数据库, 显示的不一定完全一样, 能成功显示就没问题.

tdsql和mysql有什么区别吗 mysqld和mysql的区别_sql_03


然后套用第二条语句, 建一个名字为abc 的数据库, 然后显示一下, 可以看到

tdsql和mysql有什么区别吗 mysqld和mysql的区别_mysql_04


然后use使用 abc 这个数据库,可以看到提示

tdsql和mysql有什么区别吗 mysqld和mysql的区别_sql_05


最后我们删除刚刚创建的数据库abc, 再次显示就已经不存在数据库abc了

tdsql和mysql有什么区别吗 mysqld和mysql的区别_tdsql和mysql有什么区别吗_06

  • 尽量不要使用删库操作,就算要删库,操作也一定要非常非常小心, 删错了就连夜跑路吧

基本数据类型

  • 数据类型是用于建表时指定每一列的数据类型
  • 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的数据库

tdsql和mysql有什么区别吗 mysqld和mysql的区别_数据库_07


是不可以建一个没有结构的空表的, 就是说一个表最少是需要一列的,所以我们就需要给表一定的结构

tdsql和mysql有什么区别吗 mysqld和mysql的区别_sql_08


创建表格的模板如下, 可以写成一行,但是建议分行写,更加清晰

  • SQL中 -- 表示注释
--创造一个表格
create table [表名] (
    属性名称 类型,
    属性名称 类型,
    属性名称 类型,
    ...
    属性名称 类型--最后面不加,
);--以分号结尾

如下我们创建了一个表名为student的表,表中有id ,name ,age ,score四个属性

tdsql和mysql有什么区别吗 mysqld和mysql的区别_tdsql和mysql有什么区别吗_09


然后我们来查看表的结构,往表中插入数据时一定要明确表中的数据类型,不然会造成插入失败,下篇博客介绍CRUD(增删改查)

tdsql和mysql有什么区别吗 mysqld和mysql的区别_sql_10


最后是删除操作,由于只有一个表,删除之后就没有了,所以就返回了empty set

tdsql和mysql有什么区别吗 mysqld和mysql的区别_mysql_11

一些小结和建议

  • 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
);