【MySQL】_1.数据库基础

news2025/1/10 16:04:04

目录

1.数据库介绍

1.1 数据结构与数据库

1.2 常见的数据库软件

1.3 数据库的分类

1.4 MySQL介绍

1.4.1 重要概念

1.4.2 学习内容

1.4.3 数据库服务器在硬盘上组织数据的方式

2. 数据库操作

2.1  显示当前数据库

2.2 创建数据库

2.3 选中数据库

2.4 删除数据库

3.常用数据类型

3.1 数值类型

3.2 字符串类型

3.3 日期类型

4. 表操作

4.1 查看数据库中的表

4.2 创建表

4.3 查看指定表的表结构

4.4 删除表

5. 简单商店数据库


1.数据库介绍

1.1 数据结构与数据库

(1)数据结构是一门研究数据如何组织的学科,服务于大量数据后续的增删查改;

(2)数据库是一类用于组织、保存、管理数据的软件,同样是为了后续进行增删查改,在数据库的实现过程中也应用到了很多数据结构;

1.2 常见的数据库软件

(1)数据库中最好的软件:Oracle,但由于其软件收费且必须搭配IBM小型机使用,故而使用并不是很广泛;

(2)数据库中使用最广泛的软件:MySQL;

(3)微软数据库:SQL Server;

(4)轻量级数据库:SQLite,整个程序就是一个exe可执行文件,体积大约为1M,常用于小型嵌入式系统,比如安卓系统就内置了sqlite;

以上数据库虽然在功能与操作上稍有差异,但都大同小异,基本相通;

注:嵌入式:生活中部分设备比如智能冰箱、空调、电视、投影仪等等也搭载了计算机,但只需要完成一些特定功能,不需要非常高的配置,在为其编程时与计算机编程也具有一些差异,就将以上设备称为嵌入式设备,开发以上设备就称为嵌入式开发;

1.3 数据库的分类

(1)关系型数据库:

对数据库中的数据格式较为严格,以上数据库统称为关系型数据库;

使用硬盘来保存数据,这与冯诺依曼体系有关,在Python第一篇文章中已经有所提及,具体内容请参考:CSDN

(2)非关系型数据库:

如redis,MongoDB,HBase等就是非关系型数据库,其功能相比关系型数据库要少一些,但是性能更高,更适合当下大数据分布式时代背景;

注:① 大数据:数据一个机器无法承载,就通常称为大数据;

② 分布式:这些数据需要多台机器相互配合,共同管理和存储,就称为“分布式”系统;

1.4 MySQL介绍

1.4.1 重要概念

MySQL是一个客户端服务器结构的程序:

(1)客户端(Client):主动发起交互的一方;

打开方式1:开始栏有:

打开就显示客户端本体,是一个命令行程序:

打开方式2:

也可使用cmd通过输入mysql命令启动,客户端本体就是mysql命令,

方式1就是这个命令的快捷方式:

(2)服务器(Server):被动接收交互的一方:

        ① 由于客户端发出请求是不定时的,故而一般服务器程序也要持续运行;

        ② 一个服务器同一时刻可能要给多个客户端提供服务;

        ③ 安装好MySQL后,在开始栏搜索服务有以下界面:

这就是MySQL的服务器; 

        ④ MySQL的服务器和客户端通过网络进行通信;

        ⑤ 客户端和服务器可以在同一个主机上(当前情况),也可以在不同的主机上;

(3)请求(Request):客户端给服务器发出的数据;

(4)响应(Response):服务器返回给客户端的数据;

基于以上定义,某个程序可能既是客户端和服务器;

其关系简图如下:

1.4.2 学习内容

① SQL编程语言:通过SQL完成对数据库数据的增删改查,不同的数据库软件可能对于SQL语法支持略有差异,但整体大同小异;

② 数据库背后的一些典型原理;

③ 通过java代码来操作数据库;※

在本专栏系列文章中,均以命令行界面操作为主;

1.4.3 数据库服务器在硬盘上组织数据的方式

关系型数据库组织数据的方式都是上图结构,

而非关系型数据库往往基于文档或键值对,格式较为松散,要求并不严格;

2. 数据库操作

2.1  显示当前数据库

注:(1)使用“ show databases; ” 显示数据库;

(2)其中show与databases直接有一个或多个空格,且使用英文分号为结尾;

(3)注意为databases而非database;

(4)执行完一个SQL之后会得到一个反馈,显示当前执行结果有多少行记录和消耗多少时间;

          set表示集合,sec表示秒;

2.2 创建数据库

创建成功后再查看数据库:

注:(1)使用“ create database [数据库名];  ”创建一个数据库;

(2)注意是database而非databases;

(3)数据库名一般由数字、字母、下划线构成且数字不能开头,名字不能是SQL中的关键字,如果二者冲突,就会报错,比如创建名为database的数据库,如果需要将关键字作为数据库名,可以使用反引号`把数据库名引起来

 (4)数据库名字不能重复

(5)SQL的关键字是大小写不敏感的,比如CREATE DATABASE和create database是一样的; 

(6)创建数据库时还可以指定字符集

平时常用的字符集为gbk(windows简体中文版默认字符集,2个字节表示一个汉字)和utf8(更通用的字符集,通常是3个字节表示一个汉字),其中C语言所使用的vs默认就是gbk字符集。

当在使用SQL时,如果不指定字符集,就很有可能插入中文失败;

语法为:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, 
create_specification] ...]

create_specification:
 [DEFAULT] CHARACTER SET charset_name   // 设置字符集
 [DEFAULT] COLLATE collation_name       // 设置约束关系

 示例代码:

2.3 选中数据库

注:(1)使用“ use [数据库名];”选中一个数据库;

(2)对某个数据库进行后续增删改查的操作,就必须先明确针对的数据库是哪一个;

2.4 删除数据库

注:(1)使用“ drop database [数据库名]; ”删除一个数据库;

(2)删除数据库一旦删除,难以恢复,故而删除操作需要谨慎;

3.常用数据类型

SQL的数据类型系统与C、java是非常相似的;

3.1 数值类型

数据类型大小说明对应java类型对应c类型
BIT[(M)]

M指定数,

默认为1

二进制数,M范围1~64,

存储数值范围0~2^M-1

常用boolean对应BIT,

即只能存0和1

char[]
TITYINT1字节Bytesigned char
SMALLINT2字节Shortshort int
INT4字节Integerint
BIGINT8字节Longlong long int
FLOAT(M,D)4字节

单精度,M指定长度,

D指定小数位数,会发生精度丢失

Floatfloat
DOUBLE(M,D)8字节Doubledouble
DECIMAL(M,D)M/D最大值+2

双精度,M指定长度,

D指定小数位数,会发生精度丢失

BigDecimalchar[]
NUMERIC(M,D)M/D最大值+2

双精度,M指定长度,

D指定小数位数,会发生精度丢失

BigDecimalchar[]

注:(1)由于浮点数的内存存储结构,double和float表示某些数据时存在误差,不能精确表示,比如0.1+0.2==0.3会被判定为flase, 虽然存储空间小,计算速度快但可能存在误差,decimal使用了类似字符串的方式进行保存的,故而更精确,但存储空间更大,计算速度更慢;

(2)虽然MySQL存在无符号类型,但MySQL官方文档明确说明无符号类型不建议使用。

3.2 字符串类型

数据类型大小说明对应java类型对应c类型
VARCHAR(SIZE)0~65535字节可变长度字符串Stringchar[]
TEXT0~65535字节长文本数据Stringchar[]
MEDIUMTEXT0~16777215字节中等长度文本数据Stringchar[]
BLOB0~65535字节(64KB)二进制形式的长文本数据byte[]

char[]

注:(1)对于VARCHAR类型,SIZE指定的是最大长度,单位是字符;,即假定指定name列,类型为varchar(10),即姓名最多可以存储10个字;

(2)BLOB存储的是二进制串,注意区别bit[]只能最多存储64bit,但BLOB可以存更长,如存小图片或小段音频,可以使用BLOB,但如果文件太大,一般会采用将图片存在硬盘上,在数据库中存储图片路径;

3.3 日期类型

数据类型大小说明对应java类型对应c类型
DATETIIME8字节范围:1000~9999年,不会进行时区的检索及转换java.util.Date、java.sql.TimestampMYSQL TIME
TIMESTAMP4字节范围:1970~2038年,自动检索当前时区并进行转换java.util.Date、java.sql.TimestampMYSQL TIME

4. 表操作

4.1 查看数据库中的表

注:先选中数据库再使用“ show tables; ”查看表,若没有选中数据库就查看表会报错:

4.2 创建表

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdemo1          |
+--------------------+
5 rows in set (0.00 sec)

mysql> use testdemo1;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table student (id int, name varchar(20));
Query OK, 0 rows affected (0.14 sec)

mysql> show tables;
+---------------------+
| Tables_in_testdemo1 |
+---------------------+
| student             |
+---------------------+
1 row in set (0.00 sec)

注解如下: 

注:(1)创建表时,需要指定列以及列的类型;

(2)使用“ create table [表名] (列名 类型,列名 类型...)  ”创建表,注意列名在前,类型在后;

(3)创建表时可以使用commend进行注释,但请注意commend只能在创建表时进行注释,相比之下更推荐“ -- ”和“ # ”进行注释;

注释只在源码中存在,在数据库中不会被保存起来;

4.3 查看指定表的表结构

mysql> show tables;
+---------------------+
| Tables_in_testdemo1 |
+---------------------+
| student             |
+---------------------+
1 row in set (0.00 sec)

mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

注解如下: 

注:(1)使用“ desc [表名] ”查看表结构;(desc是description的缩写)

4.4 删除表

mysql> drop table student;
Query OK, 0 rows affected (0.07 sec)

mysql> show tables;
Empty set (0.00 sec)

 注:(1)使用“ drop table[表名] ”删除表;

(2)删除表和删除库都很危险,删除都需要谨慎;

(3)删除前可以增加if操作:存在再删除,不存在则不执行;

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);

试创建以下数据库及表,并展示表结构:

mysql> show tables;
+---------------------+
| Tables_in_testdemo1 |
+---------------------+
| customer            |
| goods               |
| purchase            |
+---------------------+
3 rows in set (0.00 sec)

mysql> desc customer;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| customer_id | int(11)      | YES  |     | NULL    |       |
| name        | varchar(50)  | YES  |     | NULL    |       |
| address     | varchar(512) | YES  |     | NULL    |       |
| email       | varchar(50)  | YES  |     | NULL    |       |
| sex         | varchar(5)   | YES  |     | NULL    |       |
| card_id     | varchar(20)  | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> desc goods;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| goods_id   | int(11)     | YES  |     | NULL    |       |
| goods_name | varchar(50) | YES  |     | NULL    |       |
| unitprice  | int(11)     | YES  |     | NULL    |       |
| category   | varchar(50) | YES  |     | NULL    |       |
| provider   | varchar(50) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> desc purchase;
+-------------+---------+------+-----+---------+-------+
| Field       | Type    | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| order_id    | int(11) | YES  |     | NULL    |       |
| customer_id | int(11) | YES  |     | NULL    |       |
| goods_id    | int(11) | YES  |     | NULL    |       |
| nums        | int(11) | YES  |     | NULL    |       |
+-------------+---------+------+-----+---------+-------+
4 rows in set (0.00 sec)

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

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

相关文章

在分区工具上,格式化分区和删除分区. 两者有什么不一样吗?

1.格式化分区:就是重建文件系统,等于把目标分区的数据全部清掉。 删除分区:你删除后可以再重新分区,可以分区多个分区,前提是“删除分区”的大小足够大。分了区,还必须格式化,才能用。 只有分了…

vue3+vite+pinia+vue-router搭建环境

前提:前面已经创建一个项目,涉及到vue3、vite、pinia、vue-router、openlayers创建的命令行及对应版本。接下来,是整个项目的详细配置。 详细配置,包括以下内容: 一、vue (一)、vue3,并且使用组合式API vue…

理解冯.诺依曼体系结构(操作系统和进程)

文章目录 一.冯诺依曼体系结构二.冯诺依曼体系结构与木桶效应三.操作系统与进程操作系统Linux系统中的进程 一.冯诺依曼体系结构 冯诺依曼体系结构特性: 冯诺依曼体系结构中的存储器指的是内存——一种硬件级别的缓存空间(介于IO设备与CPU之间,只有数据存储和读写功能,并且具有…

重排链表问题

给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。…

基础语言模型LLaMA

LLaMA包含从7B到65B参数的基础语言模型集合。Meta在数万亿个tokens上训练了模型,LLaMA-13B在大多数基准测试中优于GPT-3(175B)。 来自:LLaMA: Open and Efficient Foundation Language Models 目录 背景概述方法预训练数据架构Op…

会员管理系统如何深度绑定用户?会员系统必备哪些功能?

在以消费者为主导的企业(商家)范围内,实行会员制管理能够更好的提升客户的忠诚度,减少客户的流失。完整、精确的会员管理系统,更能提升企业(商家)的实际效益。 蚓链会员管理系统(专业版) 便是这…

VMware扩展磁盘提示:在部分链上无法执行所调用的函数。请打开父虚拟磁盘

VMware扩展磁盘提示:在部分链上无法执行所调用的函数。请打开父虚拟磁盘 在为VMware中的虚拟机扩展磁盘时提示:在部分链上无法执行所调用的函数。请打开父虚拟磁盘。 出现这个问题是因为你先前创建过快照,但是快照删除时候,残余文…

JAVA集成国密SM3

JAVA集成国密SM3加密、验签 一、pom配置二、加密代码集成2.1、目录结构2.2、源码2.3、测试 三、验签代码集成2.1、目录结构2.2、源码2.3、测试 四、相关链接 国密算法概述:https://blog.csdn.net/qq_38254635/article/details/131801527 SM3杂凑算法 SM3 消息摘要。…

怎么学习Java数据库连接(JDBC)? - 易智编译EaseEditing

学习Java数据库连接(JDBC)是掌握Java与数据库交互的关键步骤。以下是学习Java JDBC的一些建议: 先掌握Java基础: 在学习JDBC之前,确保你已经掌握了Java的基本语法、面向对象编程和其他核心概念。这将有助于更好地理解…

干货分享:商城系统开发方式

商城系统是一种为了满足电子商务需求而开发的系统,它能够实现在线购物、支付、订单管理等功能。在当今互联网时代,商城系统的开发方式多种多样。那么,商城系统开发方式有哪些呢? 1、完全独立自主开发 完全独立自主开发是指企业根…

FactoryBean源码解析

文章目录 一、简介二、FactoryBean 接口的方法三、FactoryBean 与 BeanFactory 的区别四、源码解析五、实际应用 一、简介 FactoryBean 是 Spring 框架中的一个接口,用来创建特定类型的 Bean 对象。实现FactoryBean 接口就可以自定义 Bean 对象的创建过程。Factory…

深入浅出如何通过API瞬间搭建亿万商品外贸代购系统PHP系统

什么是淘宝代购 淘宝代购是近年兴起的一种购物模式,是帮国外客户购买中国商品。主要是通过万邦 科技的外贸代购系统,把淘宝、天猫等电商平台的全站商品通过API 接入到你的网站 上,瞬间就可以架设一个有数亿产品的大型网上商城,而…

【Leetcode】687.最长同值路径

一、题目 1、题目描述 给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。 示例1: 输入:root = [5,4,5,1,1,5] 输出:2示例2: 输入:root …

IT技术岗的面试技巧分享

我们在找工作时,需要结合自己的现状,针对意向企业做好充分准备。作为程序员,你有哪些面试IT技术岗的技巧?你可以从一下几个方向谈谈你的想法和观点。 方向一:分享你面试IT公司的小技巧 1、事先和邀约人了解公司的基本情况,比如公司的行业,规模,研发人员占比等 2、事先和…

甲板上的战舰(力扣)递归 JAVA

给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k&#xf…

华为OD机试真题 Java 实现【最左侧冗余覆盖子串】【2023Q2 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、思路 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

C++-----vector

本期我们来学习C中的vector,因为有string的基础,所以我们会讲解的快一点 目录 vector介绍 vector常用接口 构造函数 sort 迭代器 size,max_size,capacity,empty reserve和resize front和back data insert和…

VUE- 选取本地图片,自定义裁切图片比例 vue-cropper

裁切图片,按照比例裁切,分步骤 1:el-upload选择本地图片(分选择本地和上传两步骤) 2:在on-change回调方法中拿到el-upload选中的图片,显示在vueCropper上()。 2.1&…

为什么互联网网络攻击总是在瞄准金融行业

自从网络时代开始,金融行业一直是最容易被攻击的几个行业之一,它占火伞云相关跟踪攻击尝试的28%,仅次于游戏行业。随着网络犯罪的增长,金融服务业将继续成为网络攻击者的重点目标。 攻击者出于多种原因瞄准金融领域,但…

STM32—CAN通信

文章目录 一、CAN通信简介1.1 CAN简介1.2 CAN协议特点1.3 CAN通信的帧类型1.4 数据帧结构1.5 CAN的位时序1.6 CAN的仲裁功能 二、STM32F1的CAN2.1 bxCAN简介2.2 bxCAN工作模式2.2.1 初始化模式2.2.2 正常模式2.2.3 睡眠模式2.2.4 静默模式2.2.5 环回模式 2.3 位时序和波特率 三…