目录

  • 数据库的操作:创建数据库、删除数据库
  • 常用数据类型
  • 表的操作:创建表、删除表

数据库操作

显示当前的数据库
SHOW DATABASES;

创建数据库

语法:

  1. CREATE DATABASE [IF NOT EXISTS]db_name [create_specification [,create_specification]...]
  2. create_specification:
  3. [DEFAULT] CHARACTER SET charset_name
  4. [DEFAULT]COLLATE collation_name

说明:

  • 大写的表示关键字
  • []是可选项
  • CHARAVTER SET:指定数据库采用的字符集
  • COLLATE:指定数据库字符集的校验规则

示例:
创建名为db_test1的数据库

CREATE DATABASE db_test1;

MySQL介绍

服务器:本体,真正存储和管理数据的
客户端:用户和服务器之间沟通的桥梁
一个MySQL服务器上可能管理着多个“数据集合”,“数据库”
每一张表就好像一个excel表格一样,包含了很多行,每一行就成为是一条记录
每一行又包含了很多列,每一列也称为是一个字段

用来操作数据库的SQL

  1. 创建数据库 create database [数据库名字];(数据库名不可以重复)
  2. 查看数据库 show databases;
  3. 选中(使用)数据库 use [数据库名字];(必须先选中数据库才能进行后续操作)
  4. 删除数据库 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

注意:

FLOATDOUBLE都是遵守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千万

使用时间戳的意义:

  1. 占用空间小
  2. 方便计算

时间戳的使用场所

  1. 记录日志(log)的时候特别需要时间戳——>println(打印出来的)

通过日志来反映出程序的工作状态 如果日志比较多就需要记录当前这个日志对应的时间 就可以通过这个时间很好的知道整个程序在各个时间段中的运行情况了 打印日志是以后调试程序最主要的手段


表的操作

要操作表先要使用该数据库
use db_test;

查看表结构

desc 表名;
descdecription的缩写
Field—>字段
image.png

创建表

语法

  1. CREATE TABLE table_name(
  2. field1 datatype,
  3. field2 datatype,
  4. field3 datatype
  5. );

image.png
注意:

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

image.png

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

image.png

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

VSCODE(也是新建一个文件名.sql)
image.pngimage.png

可以使用comment增加字段说明

  1. create table stu_test(
  2. id int;
  3. name varchar(20) comment'姓名',
  4. password varchar(50) comment'密码',
  5. age int,
  6. sex varchar(1),
  7. birthday timestamp,
  8. amout decimal(13,2),
  9. resume text
  10. );

删除表

语法
DROP [TEMPORARY] TABLE [IF EXISTS] tb1_name [, tb1_name] ...
image.png
示例

  1. -- 删除 stu_test
  2. drop table stu_test;
  3. -- 如果存在 stu_test 表,则删除 stu_test
  4. drop table if exists stu_test;

注意:

  1. 同删除数据库一样,非常危险的操作
  2. 可怕的是丢失一部分数据

避免上述问题

  1. 监控报警
  2. 备份
  3. 权限

总结

操作数据库

  1. -- 显示
  2. show databases;
  3. -- 创建
  4. create database xxx;
  5. -- 使用
  6. use xxx;
  7. -- 删除
  8. drop database xxx;

常用数据类型

INT:整型
DECIMAL(M,D):浮点数类型
VARCHAR(SIZE):字符串类型
TIMESTAMP:日期类型

操作表

  1. -- 查看
  2. show 表;
  3. -- 创建
  4. create table 表名(
  5. 字段1 类型1,
  6. 字段2 类型2,
  7. ...
  8. );
  9. -- 删除
  10. 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)
image.png
注意:
注意中文字符