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

news2024/12/29 9:08:13

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;

结果一:

在这里插入图片描述

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

结果三:

请添加图片描述

结果四:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java生成Word->PDF->图片

文章目录 引言I Java生成Word、PDF、图片文档获取标签渲染数据生成文档案例II 工具类封装2.1 word 渲染和word 转 pfd2.2 pdf转成一张图片III poi-tl(word模板渲染) 标签简介文本标签{{var}}图片标签表格标签IV poi-tl提供了类 Configure 来配置常用的设置标签类型前后缀see al…

【Vue3】图片未加载成功前占位

背景 在写项目时,加载图片未成功前,会出现空白页面,太影响美观和体验感 解决方案 1. element ui通过slot占位符解决 2. 自定义指令 原生img标签可以通过自定义指令解决,img标签有onload和onerror事件,都是在渲染成…

svg封装使用

1、安装库 "vite-plugin-svg-icons": "^2.0.1" 2、配置svg vite.config中配置: 主要是配置createSvgIconsPlugin import react from vitejs/plugin-react import viteESLintPlugin from vite-plugin-eslint import { loadEnv } from vite im…

VLSI | 计算CMOS反相器的负载电容在BSIM4中的相关参数

ref. SPICE Model Parameters for BSIM4.5.0 (ubc.ca)PTM (umn.edu) 来自UMN的Microelectronics Co-design Research Group给出了晶体管PTM模型可以在SPICE仿真中使用:PTM (umn.edu),但是由于使用Google才能下载,因此搬运到了这里&#xff…

电机制造业MES系统:直面行业痛点,引领智能化发展趋势

在电机制造业中,MES的应用具有重要意义。由于该行业的产品种类繁多,生产工艺复杂多变,生产现场的信息化管理难度较大。而通过引入MES,企业可以实现对生产现场的实时监控、生产进度的准确把握以及产品质量的有效控制。 电机行业信息…

什么是Docker | Docker入门及应用

1 Docker简介 1.1 什么是Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 …

【ZooKeeper】ZooKeeper快速入门

1.ZooKeeper的概念 Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务。Zookeeper 翻译过来就是动物园管理员,它是用来管 Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管…

CSAPP B站陪跑视频学习笔记

视频地址 How program run- overview 栈(stack) 栈的作用: 局部变量和参数:当函数被调用时,函数的局部变量和参数会被分配到栈上。这是因为这些变量的生命周期通常只限于函数执行期间。 函数调用链:栈用于管理函数调用链&#x…

Thinkphp5x远程执行命令及getshell

一.环境配置 靶场:vulhub/thinkphp/5-rce docker-compose up -d #启动环境 访问靶场: 漏洞利用: 漏洞根本源于 thinkphp/library/think/Request.php 中method⽅法可以进⾏变量覆盖,通 过覆盖类的核⼼属性filter导致rce&#xf…

手把手教你OpenCV实现Canny边缘检测 C++

1,原理 canny边缘检测算子是传统边缘检测算子中最优秀的,canny检测基于下面三个目标: (1)低错误率。即所有边缘都应该找到,并且没有虚假边缘。 (2)准确的定位边缘。即检测到的边缘应该接近真…

几款设计师必备的AI抠图软件工具分享给你!

前言 在图像处理领域,抠图是一项基本而关键的技能。传统上,PS是作为抠图的首选工具,但其操作复杂性往往令初学者望而却步。幸运的是,随着AIGC技术的发展,现在有多款AI软件和在线网站能够以更简单、快捷的方式完成抠图…

怎么把图片压缩更小?快捷缩小图片的3个在线工具

现在每天都会需要接触很多的图片,当图片在本地存储到一定数量时会占用大量的内存,并且不利于在网上传输使用,那么有什么方法能够快速压缩图片太大呢?在线改图片大小是一种比较简单的缩小图片的处理方法,在网上也有很多…

【多线程-从零开始-柒】代码案例1—单例模式

单例模式:是一种设计模式 设计模式,类似于“棋谱”,就是固定套路,针对一些特定的场景,给出一些比较好的解决方法只要按照设计模式来写代码,就可以保证代码不会太差,保证代码的下限 设计模式 设…

【性能优化】DNS解析优化

前言 DNS解析过程消耗时间DNS有本地缓存 比如首次访问某站点,会耗费很多时间进行DNS解析,但解析结束后会将ip地址存入本地设备,后续再访问此域名时就会直接从缓存中取。 首次访问页面时,本页面的DNS解析是无法优化的&#xff0…

antv l7简化版demo(含mapbox样例)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><link rel"stylesheet" href"https://gw.alipayobjects.com/os/rmsportal/PqLCOJpqoOUfuPRacUzE.css" /><title>滑过默认高亮</…

Linux磁盘管理与文件结构(二):实用工具和命令、fdisk分区示例

文章目录 4、查看或管理磁盘分区-fdisk格式选项示例 4、示例&#xff1a;使用 fdisk 命令创建分区需求操作步骤 5、创建文件系统-mkfs格式常用选项示例创建其他类型的文件系统 6、创建文件系统-mkswap格式常用选项示例拓展&#xff1a;关闭和启用交换分区拓展&#xff1a;swap分…

路径规划 | 五种经典算法优化机器人路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 五种经典算法优化机器人路径规划&#xff0c;算法可任意更换&#xff01;地图可修改&#xff01;Matlab语言 1.分为简单路径规划和复杂路径规划两种情景&#xff0c;采用粒子群算法(PSO)&#xff0c;遗传算法(GA)&am…

[Qt][信号与槽][上]详细讲解

目录 0.Q_OBJECT宏1.信号和槽概述1.信号2.槽3.说明 2.信号和槽的使用1.连接信号和槽2.查看内置信号和槽 0.Q_OBJECT宏 Qt如果要让某个类能够使用信号槽&#xff0c;则必须要在类最开始的地方&#xff0c;写下Q_OBJECT宏 1.信号和槽概述 1.信号 在Qt中&#xff0c;⽤⼾和控件…

如何在银河麒麟操作系统上搭建 Electron (含 Electron 打包指南)

本次教程所用版本 QT版本&#xff1a;5.12 Eletron版本&#xff1a;31.3.1 Electron-packager版本&#xff1a;17.1.2 VScode版本&#xff1a;1.92.0 Node版本&#xff1a;18.19.0 npm版本&#xff1a;10.2.3 前言&#xff1a; 随着跨平台应用开发的需求日益增长&#…

Python基础核心知识点(建议收藏再用)

目录 一、python入门day1-day24 day01-03 编程语言day04 变量day05 垃圾回收机制&#xff08;GC机制&#xff09; 1 引用计数2 标记清除3 分代回收 day05 程序交互与基本运算符day06 可变不可变类型day07 流程控制 1 赋值 2 浅拷贝 copy3 深拷贝 deepcopy day08-10 基本数据类…