MySQL数据库基础

devtools/2024/11/9 16:44:59/

目录

数据库介绍:

数据库分类:

SQL分类(了解):

MySQL数据库基础:

数据库的操作:

查看数据库

创建数据库

选中数据库

删除数据库

常用数据类型:

数值类型:

字符串类型:

日期类型:

数据类型小结:

表的操作:

列出当前数据库的表:

创建表:

查看表结构:

删除表:

注释:

练习:


数据库介绍:

存储数据用文件就可以了,为什么还要弄个数据库?

文件保存数据有以下几个缺点:

(1)文件的安全性问题

(2)文件不利于数据查询和管理

(3)文件不利于存储海量数据

(4)文件在程序中控制不方便

数据库存储介质:

(1)磁盘

(2)内存 

为了解决上述问题,专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。 🤩🤩🤩

数据库分类:

数据库大体可以分为关系型数据库非关系型数据库

关系型数据库(RDBMS):

是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个 关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。(关系型数据库更多)

基于标准的SQL,只是内部一些实现有区别。

常用的关系型数据库如:

(1)Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系 统,收费(MySQL被他收购了)。

(2)MySQL:属于甲骨文,不适合做复杂的业务,开源免费。

(3)SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目,收费。

非关系型数据库

(了解)不规定基于SQL实现,现在更多是指NoSQL数据库,如:

(1)基于键值对(Key-Value):如 memcached、redis

(2)基于文档型:如 mongodb

(3)基于列族:如 hbase

(4)基于图型:如 neo4j

关系型数据库非关系型数据库区别

SQL分类(了解):

(1)DDL数据定义语言,用来维护存储数据的结构。

代表指令: create, drop, alter

(2)DML数据操纵语言,用来对数据进行操作。

代表指令: insert,delete,update

(2.1)DML中又单独分了一个DQL,数据查询语言,代表指令: select

(3)DCL数据控制语言,主要负责权限管理和事务。

代表指令: grant,revoke,commit。

在上面我们就介绍完数据库的基本概念,相信友友们对数据库已经有了一定的了解,下面我们会使用MySQL来操作数据库,为什么使用MySQL呢?因为免费

MySQL数据库基础:

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

上面这句话非常重要,可以说是贯穿在我们整个MySQL的学习过程中。

客户端(client)主动发起请求的一方
服务器(server)被动接受请求的一方
请求(request)客户端主动给服务器发的数据
响应(response)服务器给客户端返回的数据

谁是客户端和谁是服务器都是相对而言的(就好比如高中物理中物体做运动和参考系的选取有关) ,谁主动发起请求谁就是客户端,谁被动接受请求那么它就是服务器。

接下来我们会介绍针对数据库的基本操作,后面会有针对表,列的,由于针对数据库比较简单故我们先介绍针对数据库的操作😎😎😎。

MySQL组织形式:

数据库 -> 数据表 -> 行 ->  列。

数据库的操作:

下图是一个输入语法错误的实例,我们大部分情况下看错误只要看near后面的单词即可。

查看数据库

语法:

SHOW DATABASES;

效果如下: 

下面的 0.00sec是得到这个结果花了多少时间,sec是秒,这里不是指不用花时间而是这里只精确到小数点后两位其他的被舍弃掉了。 

创建数据库

由于我觉得官方语法有点难看懂(我是觉得大写的单词看不懂),所以我在下面又写了一个我们平时写的小写版。

官方语法:

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

说明:

(1)大写的表示关键字

(2)[ ] 是可选项

(3)CHARACTER SET: 指定数据库采用的字符集

(4)COLLATE: 指定数据库字符集的校验规则

小写版语法:

画红线的地方不写也可以,如果要使用汉字的话最好加上,数据库明不要和SQL的关键字重复。如果确实需要重复,可以使用 ` ` 引起来。

演示如下:

create database practice1 charset utf8;

出现画红线的地方说明我们创建成功啦🎉🎉🎉

选中数据库

语法:

use 数据库名;

在进行对表操作前,要use选中要操作的数组库才可以进行下面对表的操作。

演示如下:出现红色即为操作成功。

删除数据库

官方语法:

有一些对官方语法的解释在创建数据库那里已经给出,这里不再赘述。

DROP DATABASE [IF EXISTS] db_name;

小写版:

drop database practice1;

演示如下:

说明: 数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除。 

所以这是一个危险操作,一不小心把公司的数据库删了,那么饭碗也就被击碎了😭😭😭。

常用数据类型:

在MySQL中也有数据类型,因为SQL是一门语言。

数值类型:

分为整型和浮点型:

不要看有这么多,重点看红色标记的即可(后续也会有总结)。

这里重点说明一下DECIMAL这个数据类型,这个在java中也有只不过我们现在还不常用到,这个的作用是精确的存储小数,有的友友可能会问Java不是有float和double嘛,其实友友们可以拿(0.1 + 0.2 == 0.3 去java编译器上去跑一下,会发现返回false,说明float和double不适合做精度要求很高的计算),但是想要有更高的精度,一定是要付出一些代价,DECIMAL相对float/double 来说,decimal 存储需要消耗更多的空间,计算起来也需要更多的时间,所以我们平常还是主要使用float和double。

字符串类型:

VARCHAR就是MySQL中的字符串类型,MySQL中没有字符类型,TEXT和VARCHAR差不多,区别就是TEXT的长度是“自适应”,在实际开发中,很多时候为了明确数据存储的上限,往往会慎重使用TEXT更多使用VARCHAR。

注意:varchar后面的参数数字,单位是“字符”不是“字节”,这会有什么影响呢?比如一个汉字就是一个字符,一个汉字是若干字节,这二者并不等价。

日期类型:

注意:现在不太推荐使用timestamp这个类型了因为块过期了,我们现在用datetime,可能有的友友会问那datetime也过期了怎么办?相信后人的智慧👍👍👍

数据类型小结:

重点掌握这4个即可,其他的了解即可。 

表的操作:

需要操作数据库中的表时,需要先使用该数据库

ues 数据库名;

列出当前数据库的表:

语法:

show tables;

演示如下: 

由于此时没有表在这个数据库里,看到的就是空的集合。show tables 只能看到当前的数据库的表。

创建表:

官方语法:

CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype
);

小写语法如下: 

在这里我们可以看到是名字在前类型在后,这和一些语言是不太一样的,友友们要注意一下❤️。 

演示如下:出现红色部分说明创建成功。

create table stu (id int, name varchar(20), password varchar(50), age int, sex varchar(1), birthday timestamp, amout decimal(13,2), resume text);

注意:在创建表名和列名的时候也是不能和SQL的关键字重复的,同一个数据库中,表名不能重复(不同数据库即可)。

查看表结构:

这个可以看作是看表的列参数及属性。

语法:

desc 表名;

演示如下:

注意:在数据库中的NULL表示这个单元格没填,上面NULL列下面的YES表示这个位置可以为空。

删除表:

语法:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

小写版:

 演示如下:

drop table student;

删除表不仅仅是删除表的本身,也删除了表里面的数据。

注意:删除表是一个比删除数据库还要危险的操作。那么有的友友就会问删库不是把所有表都删除了嘛,删除表只删除那一个,怎么会是比删除数据库还危险的操作呢?

解释:删除数据库,我们的程序立即就瘫痪了,我们第一时间就能发现问题,如果我们的项目有100多个表,恰好删除的是一个不太常用到的表,很可能你的程序看起来一切正常,但是实际上是“带伤运行”,就可能会丢失一部分数据,甚至可能会造成一些错误数据,在时间的累积下,这样的错误就非常严重了,当你发现的时候,数据要怎么恢复?你已经区分不开了那些数据是对的,那些数据是错误的,即使你有备份的数据库,那个备份的也是错误的❌。

注释:

(1)comment注释:

这个注释是只能用在创建表的时候,声明列的注释。

用法如下:

create table student(id int comment '编号',name varchar(20) comment '姓名');

因为其用法比较受限制,所以我们更推荐使用下面两种注释:

(2)#注释:

用法如下:

# 这里是注释
show databases;

(3)-- 空格 注释

用法如下:

--后面要跟一个空格。

 -- 这里是注释
drop table student;

在实际开发中要使用那个注释根据情况来。

如果是直接在命令行中输入sql注释意义不大,输入完了之后就没了,在我们未来工作中更多的是把sql写入文件中,然后让mysql客户端批量执行sql文件中的多个语句,这个时候注释就非常有用了。

练习:

有一个商店的数据,记录客户及购物情况,有以下三个表组成:

(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 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 表名;

结语:

其实写博客不仅仅是为了教大家,同时这也有利于我巩固知识点,和做一个学习的总结,由于作者水平有限,对文章有任何问题还请指出,非常感谢。如果大家有所收获的话还请不要吝啬你们的点赞收藏和关注,这可以激励我写出更加优秀的文章。


http://www.ppmy.cn/devtools/4276.html

相关文章

python打印字符串与整数时发现的问题

字符串和整数不能用号连在一起,但是用,隔开就不出问题 字符串和整数不能直接使用号连在一起,因为在这里被用作算术运算符进行数值相加。如果尝试这样做,会引发TypeError。但是,如果你使用,将它们隔开,Pytho…

Ps基础学习笔记

Ps基础学习笔记 什么是Ps? Ps,全称Adobe Photoshop,是一款由Adobe公司开发的图像处理软件,广泛应用于图像编辑、图像合成、图像修饰等领域。 Ps的界面介绍 Ps的界面主要分为菜单栏、工具栏、选项栏、面板和工作区组成。菜单栏包含…

Linux引导过程与服务控制

Linux操作系统引导过程 排除启动类故障 服务控制及切换运行级别 优化启动过程 Linux引导过程 引导过程总览: 简化来说就是由开机自检 MBA引导 GRUB菜单 加载内核(kernel) init进程初始化等组成 Linux 操作系统的引导过程&…

K8S基础概念

一、MASTER Kubernetes里的Master指的是集群控制节点,在每个Kubernetes集群里都需要有一个Master来负责整个集 群的管理和控制,基本上 Kubernetes的所有控制命令都发给它,它负责具体的执行过程,我们后 面执行的所有命 令基本都…

用html写一个雨的特效

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>雨特效</title><link rel"stylesheet" href"./style.css"> </head> <body> <div id"wrap-textu…

【安装部署】Apache SeaTunnel 和 Web快速安装详解

版本说明 由于作者目前接触当前最新版本为2.3.4 但是官方提供的web版本未1.0.0&#xff0c;不兼容2.3.4&#xff0c;因此这里仍然使用2.3.3版本。 可以自定义兼容处理&#xff0c;官方提供了文档&#xff1a;https://mp.weixin.qq.com/s/Al1VmBoOKu2P02sBOTB6DQ 因为大部分用…

【智能家居入门2】(MQTT协议、微信小程序、STM32、ONENET云平台)

此篇智能家居入门与前两篇类似&#xff0c;但是是使用MQTT协议接入ONENET云平台&#xff0c;实现微信小程序与下位机的通信&#xff0c;这里相较于使用http协议的那两篇博客&#xff0c;在主程序中添加了独立看门狗防止程序卡死和服务器掉线问题。后续还有使用MQTT协议连接MQTT…

Day13-C++基础之文件操作

文件操作 #include<iostream> #include<fstream> #include<string> using namespace std; ​ class Person{ public:char m_Name[64];int m_Age; }; ​ int main(){//文本文件操作 ​//写文件//1.包含头文件 fstream//2.创建流对象ofstream ofs;//3.指定打开…