【MySQL】数据库基础

文章介绍了数据库的基本概念,包括数据库的定义、MySQL客户端与服务器的角色,以及SQL操作数据库的流程。详细讲解了数值、字符串和日期等常用数据类型,强调了数据类型的差异和用途。接着,文章展示了如何创建、查看、选择和删除数据库,以及创建、查询、描述和删除数据表。最后,提供了一个商店数据的例子,讨论了商品、客户和购买表的设计,以及数据类型的选择问题。
摘要由CSDN通过智能技术生成

目录

1.初识数据库

2.常用数据类型

2.1数值类型

2.2字符串类型

2.3日期类型

3.数据库基本操作 

3.1创建数据库

//字符集

3.2查看所有数据库

3.3选中指定数据库

3.4删除数据库

4.数据表基本操作

4.1创建表

//注释

4.2查看当前数据库中的所有表

4.3查看指定表的结构

4.4删除表

5.练习题


1.初识数据库

定义:安装完数据库服务器后,这个数据库服务器可以在逻辑上划分出多个不同的数据集合,每个数据集合就称为一个数据库。

MySQL客户端:与客户直接打交道;

命令行客户端 / 其他的图形化客户端

MySQL服务器:数据库的本体,用于存储和管理数据;

操作机理

1.用户在客户端输入SQL;

2.客户端把SQL通过网络发送给服务器;

3.服务期执行这个SQL,并把结果返回给客户端;

4.客户端收到结果,并显示到界面上。

2.常用数据类型

下列表格中高光类型需重点掌握!

2.1数值类型

数据类型大小说明对应Java类型
BIT [(M)]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节Long
FLOAT (M, D)4字节单精度,M指定有效数字长度,D指定小数点后的位数Float
DOUBLE (M, D)8字节Double
DECIMAL (M, D)M/D最大值+2双精度,M指定有效数字长度,D指定小数点后的位数BigDecimal
NUMERIC (M, D)M/D最大值+2

D同ECIMAL

BigDecimal

注意:1> DECIMAL能够精确表示小数,float和double不能精确表示小数;

           2> DECIMAL虽然能够精确存储和计算,但是存储空间占用更多,计算速度更慢。

2.2字符串类型

数据类型大小说明对应Java类型
VARCHAR(SIZE)0-65,535字节可变长度字符串String
TEXT0-65,535字节长文本数据String
MEDIUMTEXT0-16,777,215字节中等长度文本数据String
BLOB0-65,535字节二进制形式的长文本数据byte[ ]

注意:VARCHAR属于可变长的字符串,SIZE表示最大长度,单位是字符(不是字节!!)
          例:varchar(10) --> 最多十个字,不论是汉字还是啥文字,都是十个。

2.3日期类型

数据类型大小说明对应Java类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换

java.util.Date

java.sql.Timestamp

TIMESTAMP4字节范围从1970到2038年,自动检索当前时区并进行转换

java.util.Date

java.sql.Timestamp

注意:此为时间戳,是计算机表示时间的方式,之前在C语言中也见过了。其中TIMESTAMP是以1970年1月1日0时0分0秒为基准,计算当前时刻和基准时刻的秒数/毫秒数之差,因为只有4个字节,太短了,只能表示到2038年,建议使用范围更广的DATETIME。

3.数据库基本操作 

3.1创建数据库

格式:create database 数据库名;

注意:1> create,database……相当于“关键字”;

           2> SQL的关键字不区分大小写

           3> 创建的数据库名不能重复

           4> 单词之间至少有一个空格;

           5> 输入的命令必须以分号进行结尾

           6> 可使用 if not exists 来避免重复建库的问题。

此处0.00 sec 是指时间小于 10ms 

//字符集

分类:gbk,utf8……

gbk:使用两个字节表示一个汉字;

uft8:使用三个字节表示一个汉字;

说明:

1> 之前在C语言中学习的是两个字节表示一个汉字,因为VS使用的编码方式是跟随系统,而windows简体中文版系统编码就是gbk;

2> 目前更主流的是utf8,因为除了汉字外,其他国家的语言文字符号utf8都能表示;

3> Java的字符集是在编译运行的时候,通过命令行参数显式指定的,一般默认是utf8;

4> 手动设定一个字符集十分关键,后续如果要插入一些中文,不是utf8/gbk之类的话中文就会乱码;

5> MySQL的utf8是残缺的,残缺了一些emoji表情,utf8mb4是完整版;

6> MySQL默认字符集是拉丁文,无法表示中文。

创建数据库同时指定数据库的字符集: character set / charset 均可

3.2查看所有数据库

格式:show databases;

注意:1> 可能有多个数据库,所以使用databases

           2> 系统会自带几个数据库,不要乱改!!

3.3选中指定数据库

格式:use 数据库名;

注意:一旦选中某个指定的数据库,后续操作就都是针对该数据库展开。

3.4删除数据库

格式:drop database 数据库名;

注意:这个操作十分危险!一旦删掉数据库,数据库中所有数据就没有了,且很难恢复;

若删掉的是系统自带数据库,重装MySQL服务器即可;但删掉自定义数据库就寄了!!

 

 

4.数据表基本操作

关系数据库中,数据是以“表”的方式来进行组织的,类似于Excel

每个数据库中可以有很多数据表,每个表可以有很多行,每一行又可以有很多列(字段)。

4.1创建表

格式:create table 表名 ( 列名 类型 , 列名 类型 , ……);

注意:1> 创建表之前要确定表的类型,后续插入数据也要遵循当前表的类型;

           2> 所有和表相关的操作,都要先选中数据库

           3> 和数据库相似,可加上 if exists 或 if not exists

//注释

comment:创建表时的专属注释。

但不建议使用comment进行注释,建议使用 -- 或 # 

 

  

4.2查看当前数据库中的所有表

格式:show tables;

注意:和数据库类似,要使用tables

4.3查看指定表的结构

格式:desc 表名;

注意:下列表中: 

Filed:字段,表中一行里有几列;

Type:每一列的类型;

           其中int (11) 中 11 表示的是该列在打印显示时最多占11个字符这么宽,与存储无关;

Null:该列是否允许为空;

Default:默认值;

Extra:额外补充信息。

4.4删除表

格式:drop table 表名;

注意:会删除整个表中的所有数据,和删除数据库差不多,都是非常危险的操作!

 

5.练习题

有一个商店的数据,记录客户及购物情况,由以下三个表组成:
1> 商品goods (商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
2> 客户customer (客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证
card_id)
3> 购买purchase (购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

思考

价格使用什么类型表示?

double 精度不行有误差,decimal 精度够了但是慢,int 精度和速度都有,单位使用“分”,如9.99元,记成999分。 

mysql> use javasql;
Database changed
mysql> create table goods (goodsId int,
    -> goodsName varchar(20),
    -> unitPrice int,
    -> category varchar(50),
    -> provider varchar(50)
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> create table customer (customerId int,
    -> name varchar(20),
    -> address varchar(50),
    -> email varchar(20),
    -> sex varchar(10),
    -> cardId int
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> create table purchase (orderId int,
    -> customerId int,
    -> goodsId int,
    -> nums int
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+-------------------+
| Tables_in_javasql |
+-------------------+
| customer          |
| goods             |
| purchase          |
| test              |
+-------------------+
4 rows in set (0.00 sec)

总的来说,数据库基础还是很简单的,只是一些命令的输入,路漫漫其修远兮,吾将上下而求索,Keep going ~ ~ !!

(六一快乐呀!!谁还不是个宝宝呢 ~~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值