当前位置: 首页 > news >正文

MySQL——数据库的操作,数据类型,表的操作

MySQL——数据库的操作,数据类型,表的操作

  • 1. 数据库的操作
    • 1.1 显示当前数据库
    • 1.2 创建数据库
      • 舍弃当前所写的SQL语句
      • 查看当前数据库服务全局的默认字符集
    • 1.3 使用数据库
    • 1.4 查看当前操作的数据库
      • 查看MySQL的帮助
    • 1.5 删除数据库
  • 2. 常见数据类型
    • 2.1 数值类型
    • 2.2 字符串类型
    • 2.3 日期类型
  • 3. 表的操作
    • 3.1 创建表
    • 3.2 查看表的结构
    • 3.3 查看当前数据库中有哪些表
    • 3.4 删除表
  • 4. 综合应用

1. 数据库的操作

1.1 显示当前数据库

语法:

show databases;

在这里插入图片描述

其中:

  • 红色下划线的是MySQL自带的数据库,不要轻易进行改动!
  • 蓝色下划线的是自己创建的数据库

注意:

  • 在使用数据库时,只使用自己的数据库,其他的数据库不要动
  • databases 是复数

1.2 创建数据库

语法:
在这里插入图片描述

说明:

  1. 蓝色字体且是大写的是关键字

  2. {}里的表示必选项,|表示或的意思,DATABASE和SCHEMA都表示数据库的意思,在创建时必须选择一个

  3. []表示可选项,可有可无,if not exists建议在创建数据库时都加上

  4. CHARACTER SET表示指定数据库采用的字符集,COLLATE表示数据库字符集采用的排序规则,强烈建议在创建数据库时手动指定为utf8mb4和utf8mb4_0900_ai_ci

    在MySQL8.0中默认是utf8mb4和utf8mb4_0900_ai_ci,而在5.17中,默认是latin1和utf8mb4_general_ci,而latin1是不支持中文的

  5. ENCRYPTION表示是否加密,在后续学习过程中不用,了解即可

演示:

  1. 创建一个名为test的数据库

    在这里插入图片描述

  2. 创建一个名为test2的数据库,并指定字符集编码规则为utf8mb4,排序规则为utf8mb4_0900_ai_ci

在这里插入图片描述

  1. 再次尝试创建一个test数据库

在这里插入图片描述

代码执行成功,但是出现了一个警告,用show warnings来查看警告信息

在这里插入图片描述

说明要创建的数据库已经存在了

如果不加if not exists的话,就直接报错了

在这里插入图片描述

在实际工作中,执行SQL语句,不是手动一条一条执行的,而是批量一起执行的,因此,为了不因为某一条语句的错误而影响整个执行流程,都会加上一些类似于if not exists的校验,防止因为某一条SQL语句出错而导致整个SQL中断执行

  1. 假如想要创建一个名为create的数据库,显然按部就班地去创建是不可行的,那么改怎么办呢?需要将create两边加一对反引号 `create`,但实际上不建议这样给数据库命名

    在这里插入图片描述

舍弃当前所写的SQL语句

另外,如果在写了很多SQL语句时,发现前面有错误,可以使用ctrl+c将这些SQL语句舍弃掉,并另起一行

在这里插入图片描述

查看当前数据库服务全局的默认字符集

在这里插入图片描述

1.3 使用数据库

use 数据库名;

在这里插入图片描述

1.4 查看当前操作的数据库

select database();

database()是MySQL提供的一个方法,用于查看当前操作的数据库

当未选择(使用)任何数据库时,查看当前操作的数据库:

在这里插入图片描述

当使用test数据库时,查看当前操作的数据库:

在这里插入图片描述

查看MySQL的帮助

\?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在命令行中,既可以使用\q,也可以使用ctrl+z,退出程序

1.5 删除数据库

drop database [if exists] 数据库名;

写在最前面,删除数据库是一项非常危险的操作,需要慎之又慎,深思熟虑!

下面演示删除test2数据库:

在这里插入图片描述

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和decimal一样BigDecimal

在这个表中,值得注意的是:

  1. bit(1)就相当于Java中的Boolean类型,用1表示true,用0表示false
  2. 由于float类型和double类型在表示小数时不是特别的精准,所以用decimal类型去表示小数
  3. M中是不计算小数点和负号的,如果D为0,则具体的值不保存小数,只保留整数
  4. decimal(M,D)中的M最大值为65,D最大值为30
  5. 如果省略D,则默认为0;如果省略M,则默认为10

2.2 字符串类型

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

注意:

  • varchar(size)中的size是指存入字符串的最大长度,不是字节数

2.3 日期类型

数据类型大小说明对应Java类型
datetime8字节范围从1000到9999,不会进行失去的检索及转换java.util.Date、java.sql.Timestamp
timestamp4字节范围从1970到2038年,自动检索当前时区并进行转换java.util.Date、java.sql.Timestamp

3. 表的操作

创建好数据库后,可以在当前的数据库里对表进行操作,但是对表进行操作之前 ,需要指定是哪一个数据库,即需选择(使用)数据库

use 数据库名;

3.1 创建表

create table [if not exists]表名(字段名 数据类型,字段名 数据类型,字段名 数据类型
);

说明:

  1. 可以使用comment对字段进行说明,相当于Java中的注释
  2. 多个字段之间使用逗号隔开,最后一个字段后面没有逗号了!
  3. 小括号外面的最后面还有个分号别忘了!

示例:创建一个学生类,包含id,name字段

在这里插入图片描述

注:

  • 强烈建议每张表都设计一个编号字段,数据类型为bigint
  • varchar(size)里的长度记得指定

3.2 查看表的结构

desc 表名;

在这里插入图片描述

注解:

  • Field表示当前表中有哪些字段,Type是对应字段的数据类型,NULL表示当前这个字段是否允许为null
  • Default表示当前字段的默认值,即什么都不指定时的默认值
  • Extra表示其他的一些扩展内容

3.3 查看当前数据库中有哪些表

show tables;

在这里插入图片描述

3.4 删除表

drop [temporary] table [if exists] 表名1[,表名2]...;

注:

  • temporary表示用户创建的临时表
  • 一条drop语句可以同时删除很多张表,每个表名之间用逗号隔开
  • 同样地,删表操作也是一种很危险的操作,丝毫不亚于删库操作

4. 综合应用

  • 有一个商店的数据,记录客户及购物情况,有以下三个表组成:
    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)
use test;create table if not exists goods (goods_id bigint,goods_name varchar(50),unitpirce decimal(10,2),provider varchar(50)
);desc goods;create table if not exists customer(customer_id bigint,name varchar(10),address varchar(50),email varchar(20),gender tinyint(1),card_id varchar(20)
);desc customer;create table if not exists purchase(order_id bigint,customer_id bigint,good_id bigint,nums bigint
);desc purchase;show tables;

结果一:

在这里插入图片描述

结果二:
在这里插入图片描述

结果三:

请添加图片描述

结果四:
请添加图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 卷积神经网络 - 高效的卷积算法篇
  • Ubuntu Linux安装Go语言
  • Bytebase 2.22.1 - SQL 编辑器展示更丰富的 Schema 信息
  • CVE-2017-15715~Apache解析漏洞【春秋云境靶场渗透】
  • d1.Docker 介绍和基础操作
  • Springboot集成Proguard生成混淆jar包
  • 生成式AI及其对API和软件开发的影响
  • 大数据面试SQL(五):查询最近一笔有效订单
  • 基于树莓派4B设计的智能家居控制系统(阿里云IOT)(203)
  • 【Vue】Echarts渲染数据,残留脏数据问题处理
  • k8s笔记之应用创建
  • Apache Tomcat服务器版本号隐藏
  • Qt之Gui
  • springboot二手书资源管理系统-计算机毕业设计源码26338
  • [VBA]使用VBA在Excel中 操作 形状shape 对象
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Javascript基础之Array数组API
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • use Google search engine
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 给github项目添加CI badge
  • 力扣(LeetCode)56
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • "无招胜有招"nbsp;史上最全的互…
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (4)事件处理——(7)简单事件(Simple events)
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (一)kafka实战——kafka源码编译启动
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)http协议
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net通过类组装数据转换为json并且传递给对方接口
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @Transactional类内部访问失效原因详解
  • []FET-430SIM508 研究日志 11.3.31
  • []串口通信 零星笔记
  • [001-03-007].第07节:Redis中的管道
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [20171102]视图v$session中process字段含义
  • [20190401]关于semtimedop函数调用.txt
  • [20190416]完善shared latch测试脚本2.txt
  • [Android]How to use FFmpeg to decode Android f...
  • [C#学习笔记]Newtonsoft.Json
  • [CSS]中子元素在父元素中居中
  • [Godot] 3D拾取
  • [lesson17]对象的构造(上)
  • [linux 驱动]misc设备驱动详解与实战
  • [MFC] MFC消息机制的补充
  • [mvc] 简单的forms认证