目录
- 数据库的操作:创建数据库、删除数据库
- 常用数据类型
- 表的操作:创建表、删除表
数据库操作
创建数据库
语法:
CREATE DATABASE [IF NOT EXISTS]db_name [create_specification [,create_specification]...]create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT]COLLATE collation_name
说明:
- 大写的表示关键字
- []是可选项
- CHARAVTER SET:指定数据库采用的字符集
- COLLATE:指定数据库字符集的校验规则
示例:
创建名为db_test1的数据库
CREATE DATABASE db_test1;
MySQL介绍
服务器:本体,真正存储和管理数据的
客户端:用户和服务器之间沟通的桥梁
一个MySQL服务器上可能管理着多个“数据集合”,“数据库”
每一张表就好像一个excel表格一样,包含了很多行,每一行就成为是一条记录
每一行又包含了很多列,每一列也称为是一个字段
用来操作数据库的SQL
- 创建数据库
create database [数据库名字];(数据库名不可以重复) - 查看数据库
show databases; - 选中(使用)数据库
use [数据库名字];(必须先选中数据库才能进行后续操作) - 删除数据库
drop database [数据库名];(非常危险,进了公司千万不能执行)MySQL 和 SQL 的区别
- MySQL是一个软件,可以用于执行SQL
- SQL是编程语言(与java,c等并列)
数据库和数据结构的区别
- 数据库是一类软件,实现数据库依赖很多数据结构
- 数据结构是一门学科,更加的抽象
数据类型
两大类:
- 基本(内置)类型:byte,short,int,long;float.double;char;loolean
- 引用类型:数组,类,字符串
MySQL中存储数据也是按照一定的类型来进行存储的
每一列,都需要明确的标注出该列的类型
常用数据类型
| 数据类型 | 大萧 | 说明 | 对应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字节 | Double | |
| DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D指定小数点位数,精确数值 | BigDecimal |
| NUMERIC(M,D) | M/D最大值+2 | 同上 | BigDecimal |
注意:
FLOAT和DOUBLE都是遵守IEEE754(I triple E)标准 此处保存的数据都是不精确的 不适用场合: 尤其是算钱的时候(公司很多都是用分作为单位,这样就避免了小数的参与)
因之DECIMAL应运而生,不适用IEEE754标准表示 就能比较精确的表示浮点数字,付出的代价就是计算的效率更低
字符串类型
| 数据类型 | 大小 | 说明 | 对应Java类型 | 对应C类型 |
|---|---|---|---|---|
| VARCHAR(SIZE) | 0~65535(64K)字节 | 可变长度字符串 | String | char[] |
| TEXT | 0~65535字节 | 长文本数据 | String | |
| MEDIUMTEXT | 0~16777215字节 | 中等长度文本数据 | String | |
| BLOB | 0~65535字节 | 二进制形式的长文本数据 | byte[] |
文本
.txt:文件/数据中,只包含字符 二进制.jpg:可能还包含其他的内容 区分方式: 用记事本打开 是人类语言就是文本文件(Word) 非人类语言就是二进制文件 特例:excel表格可能是文本也可能是二进制
日期类型
| 数据类型 | 大小 | 说明 | 对应Java类型 |
|---|---|---|---|
| DATETIME | 8字节 | 范围从1000到9999年,不会进行失去的检索及转换 | java.util.Date java.sql.Timestamp |
| TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前失去并进行转换 | java.util.Date java.sql.Timestamp |
timestamp时间戳: 时间戳是计算机里存储和表示时间的基本方式
以1970年1月1日0时0分0秒作为基准时刻 计算当前时刻和这个基准时刻的秒数/毫秒/微妙之差 得到的数字就叫时间戳 现在已经走到16亿多了,2038年时间戳就要爆炸了 int——>4个字节 有符号 -21亿—>21亿 无符号0—>42亿9千万
使用时间戳的意义:
- 占用空间小
- 方便计算
时间戳的使用场所
- 记录日志(log)的时候特别需要时间戳——>println(打印出来的)
通过日志来反映出程序的工作状态 如果日志比较多就需要记录当前这个日志对应的时间 就可以通过这个时间很好的知道整个程序在各个时间段中的运行情况了 打印日志是以后调试程序最主要的手段
表的操作
要操作表先要使用该数据库use db_test;
查看表结构
desc 表名;desc是decription的缩写
Field—>字段
创建表
语法
CREATE TABLE table_name(field1 datatype,field2 datatype,field3 datatype);

注意:
- 不要了
CTRL+C直接取消本次操作(缺点,写了一半的正确的都没了)

- 写复杂SQL的时候,最好不要直接在mysql客户端写,建议先写记事本上,再粘贴

- 可以使用上流记事本来完成,例如:IDEA(创建一个file,
文件名.sql)
VSCODE(也是新建一个文件名.sql)

可以使用comment增加字段说明
create table stu_test(id int;name varchar(20) comment'姓名',password varchar(50) comment'密码',age int,sex varchar(1),birthday timestamp,amout decimal(13,2),resume text);
删除表
语法DROP [TEMPORARY] TABLE [IF EXISTS] tb1_name [, tb1_name] ...
示例
-- 删除 stu_test 表drop table stu_test;-- 如果存在 stu_test 表,则删除 stu_test 表drop table if exists stu_test;
注意:
- 同删除数据库一样,非常危险的操作
- 可怕的是丢失一部分数据
避免上述问题
- 监控报警
- 备份
- 权限
总结
操作数据库
-- 显示show databases;-- 创建create database xxx;-- 使用use xxx;-- 删除drop database xxx;
常用数据类型
INT:整型
DECIMAL(M,D):浮点数类型
VARCHAR(SIZE):字符串类型
TIMESTAMP:日期类型
操作表
-- 查看show 表;-- 创建create table 表名(字段1 类型1,字段2 类型2,...);-- 删除drop talbe 表名;
注:
注释-- 这是注释
关键字不可以作为表名列名等名,如果非要用,可以使用descirbe的方式圈起来,这个是键盘上的~键
作业
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品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)
注意:
注意中文字符
