MySQL库操作 表操作【详细解析】

MySQL

MySQL是一个数据库软件

mysql

mysql是一个“客户端—服务器”结构的软件
(1)
a.客户端:主动发起请求的一方(Client)
b.服务器:被动接收请求的一方(Server)
客户端和服务器之间通过网络 进行通信
(2)
a.客户端给服务器发起的数据,称为请求(Request)
b.服务器给客户端返回的数据,称为响应(Response)
服务器是被动的一方,它不知道客户端什么发起请求;真正的服务器它是需要7*24进行服务的
(3)大部分服务器是给多个客户端提供服务的,但也有只给一两个客户端提供服务的

分布式系统

一台机器能够处理的数据是有限的,往往就需要引入多台机器相互配合,完成更复杂的工作
在这里插入图片描述
分布式系统中,机器之间也是需要进行网络通信的
如图所示,在系统中,客户端服务器的身份是可以相互转换的

mysql安装

安装的是mysql客户端和mysql服务器
mysql的真正本体是服务器,负责保存和管理数据,数据 都是存储在硬盘上的

内存和硬盘的差别

1.内存速度快,硬盘速度慢(差几千倍,数万倍)
2.内存空间小,硬盘空间大
3.内存贵,硬盘便宜
4.内存中存储数据是易失的,硬盘中存储的数据是持久的
(Eg:像断电/重启之后内存中存储的数易丢失)
数据库存储的数据,希望存储的数据量比较大,持久化存储,像mysql这些数据库使用硬盘存储,但是也有少数数据库是使用内存的,追求速度最大化,eg:redis

mysql的使用

在这里插入图片描述
以上是mysql可能出现的错误,一定要学会看抛出的是什么异常

数据库的操作

一个 mysql 服务器上,有很多很多的表,就可以把有关联关系的一些表放到一起,就构成了一个数据集合,此时就称为**“数据库”,**而且一个 mysql服务器上可以有多个这样的数据库

创建数据库

基本创建操作

create database 数据库名;

(1)sql中有特定含义的单词,关键字(数据库名,表名,列名,都不能和关键字重复)
(2)sql的关键字是大小写不敏感的,所以我们可以写成create database,也可以写成CREATE DATABASE

mysql> create database java109;
Query OK, 1 row affected (0.02 sec)

2.数据库创建的时候,要求不能重复,此时就可以在创建的时候,加上一个修饰来应对这个问题

mysql> create database if not exists java107;
Query OK, 1 row affected (0.01 sec)

(1)此时就不会因为数据库同名而报错了,发现数据库已经存在,是不会继续创建数据库的
(2)if not exists的用途是避免sql报错,实际工作中,很多时候,是把一系列sql写到一个文件中批量进行的,很少会这样一条一条的进行;所以在批量执行的情况下,如果一条sql报错了,后面的sql就无法继续执行了

字符集

每种字符集都是一个很大的码表
3.创建数据库的时候,可以手动指定一下字符集的
character set 字符集名字/charset 字符集名字

CHARACTER SET charset_name;

(1)咱们需要在数据库中保存中文,mysql默认的字符集是拉丁文,不支持中文;所以必须在创建数据库的时候,手动指定编码方式为支持中文的编码**(GBK,UTF8)**

(2)不同的字符集,不同的编码方式下,一个汉字占几个字节是不同的
学习C语言时,使用的是VS,在windows上写的代码,windows简体中文版,默认字符集是gbk,VS默认的字符集是和系统一致(gbk)
在这个情况下,一个汉字是占2个字节

(3)
a.gbk现在已经用的越来越少了,主要使用utf8作为编码方式

b.utf8是变长编码,utf8不仅仅可以表示中文,也可以表示世界上的任何一种语言文字

c.如果使用utf8编码,一个汉字通常是3个字节

d.unicode 是给字符串进行编码的,但是无法给“字符串“进行编码;
比如,把多个unicode编码的字符串放在一起,构成一个字符串,就可能会乱套了,因为它无法识别字符和字符之间的边界

e.基于unicode就演化出了一些可以给”字符串“
编码的版本
在java中,谈到char类型——内部编码 unicode
谈到String,内部的编码一般是utf8
(Java内部自动完成了编码转换)

mysql> create database java106 charset utf8;
Query OK, 1 row affected, 1 warning (0.02 sec)

注意: mysql的utf8是一个”残本“,不是完全体的utf8,少了一些emoji表情,所以后来mysql使用了utf8mb4,则是完全体的utf8了

查看数据库

列出当前mysql服务器上一共有哪些数据库

show databases;
mysql> create database
    -> if not exists
    -> java109
    -> charset utf8;
Query OK, 1 row affected, 2 warnings (0.01 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| java106            |
| java107            |
| java109            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.02 sec)

==注意:==像mysql,performance_schema这些都是属于系统自带的数据库,而mysql这个比较重要,它是用来修改一些配置,所以要慎重操作

选中数据库

use 数据库名;

数据库中最关键的操作,就是针对表进行增删改查,表是从属于数据库的;所以要针对表操作,就需要把哪个数据库的表这个事情指定清楚

删除数据库

drop database 数据库名;
mysql> drop database java109;
Query OK, 0 rows affected (0.03 sec)

删除之后我们使用show databases来查看数据库是否被删除

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| java106            |
| java107            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.01 sec)

==注意:==删除操作,删掉的不仅仅是database,而且也删除了database中所有的表,和表里所有的数据

常用数据类型

数值类型

分为整型和浮点型
在这里插入图片描述
使用decimal表示小数,精度是更高了,但是它的运算速度会变慢,占用空间也越多

字符串类型

在这里插入图片描述

(1)此处的size表示该类型最多存储几个字符(不是字节) eg:像一个汉字算是一个字符,但是可能对应多个字节

(2)解释可变长字符串;:(VARCHAR)当你写了size为10,但是不会立即分配10个字符的存储空间,是会先分配一个比较小的空间,如果不够,自动扩展,但是最大空间不会超过10

(3)BLOB存储的是二进制的数据,而像VARCHAR这样的存储的是文本数据;
文本数据存储的都是字符,这些字符都是可以在对应码表上查到的,在码表上查不到的,就是二进制数据(音乐、图片、视频都属于二进制的)

(4)一般很少会在数据库的某一列中存储特别大的数据(几十M,几百M)这么做会大大影响到数据库的增删改查的效率;
实际开发中如果需要保存图片,一般都是把图片单独放到专门的目录中,然后让数据库保存照片的路径

日期类型

在这里插入图片描述
(1)TIMESTAMP:时间戳;使用时间戳来表示时间,以1970 年1月1日0时0分0秒 作为基准,计算当前时刻和基准时刻的 秒数/毫秒数/微秒数 之差
(2)DATATIME只能表示年月日,不能表示时分秒

总结

上述数据类型,我们只需要重点掌握以下几个:
1.int
2.long
3.double
4.decimal
5.varchar
6.datetime

数据表的操作

针对数据表的操作,前提是先选中数据库
一个表,包含很多行, 每一行也称为 一条记录;一个行里可以有很多列,每一列也称为是一个字段;
每个列都是有一个具体的类型的.

==注意:==在创建关于价格的列的时候,我们在写类型的时候一般写成int类型

创建表

进行表操作的前提是必须要先能够选中数据库

create table 表名(列名 类型,列名 类型....);

如果确实想让表名/列名和关键字一样,可以使用`反引号(位置在ESC下面,与~ 一格;注意一定是英文输入情况下)

mysql> create database java109 charset utf8;
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> use java109;
Database changed

查看该数据库中的所有表

查看当前数据库中的所有表

show tables;

==注意:==一定要先选中数据库,再查看数据表

mysql> use java109;
Database changed
mysql> show tables;
+-------------------+
| Tables_in_java109 |
+-------------------+
| product           |
| 商品表            |
+-------------------+
2 rows in set (0.03 sec)

数据库中的数据内容都是持久化存储,你在重启电脑后数据依旧存在

查看指定表的结构

desc 表名;
mysql> desc product;
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| name        | varchar(20)   | YES  |     | NULL    |       |
| price       | decimal(11,2) | YES  |     | NULL    |       |
| storage     | int(11)       | YES  |     | NULL    |       |
| description | varchar(100)  | YES  |     | NULL    |       |
+-------------+---------------+------+-----+---------+-------+
4 rows in set (0.02 sec)

删除表

drop table 表名;

注意:删除表的同时也会把表中的所有数据都删掉

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Stylus详解与引入】

文章目录 Stylus详解与引入一、Stylus简介二、Stylus的特性1. 变量2. 嵌套规则3. 混合(Mixins)4. 函数5. 条件语句和循环 三、Stylus的引入与配置1. 安装Stylus和stylus-loader2. 配置Webpack3. 在Vue项目中使用Stylus4. 编译Stylus代码四、Stylus的性能…

美国商务部公布数字孪生技术投资计划

文章目录 前言一、主要内容二、相关背景‍‍‍‍前言 5月6日,美国商务部公布了一项价值2.85亿美元的投资计划,这项名为《美国芯片制造研究竞标》(CHIPS Manufacturing USA Institute Competition)的投资计划旨在向符合条件的申请者进行征求招标,协调建立和运营美国芯片制…

LeetCode-2079. 给植物浇水【数组 模拟】

LeetCode-2079. 给植物浇水【数组 模拟】 题目描述:解题思路一:简单的模拟题,初始化为0,考虑先不浇灌每一个植物解题思路二:初始化为n,考虑每一个植物需要浇灌解题思路三:0 题目描述&#xff1a…

量子城域网建设设备系列(三):网络管理系统(NMS)

在量子保密通信网络中,需要对整个网络的设备进行集中管理和统一维护。主要包括对设备的状态监控、异常告警的采集分析、拓扑管理、设备参数配置、业务策略控制等功能。基于这些需求,在实际的工程应用中,我们通常采用量子网络管理系统&#xf…

Java找不到包解决方案

在跟着教程写Spingboot后端项目时,为了加快效率,有时候有的实体文件可以直接粘贴到目录中,此时运行项目会出现Java找不到包的情况,即无法找到导入的实体文件,这是项目没有更新的原因。解决方法: 刷新Maven:…

详解Java Google Guava

详细介绍 Google Guava是Google为Java开发的开源库集合,它提供了丰富的工具类和集合框架的扩展,旨在提高开发效率和代码质量。Guava包括但不限于集合操作、并发编程辅助、缓存机制、字符串处理、I/O操作、原生类型支持、常见算法实现、函数式编程支持、测…

力扣每日一题- 给植物浇水 II -2024.5.9

力扣题目:给植物浇水 II 题目链接: 2105.给植物浇水 II 题目描述 代码思路 根据题目内容,使用双指针从左右两边同时向中间移动,模拟浇水过程即可。 代码纯享版 class Solution {public int minimumRefill(int[] plants, int capacityA, …

FANUC机器人单轴零点标定时提示无法执行零点标定,由于重力补偿已启用,所有机器人轴的脉冲计数必须有效

FANUC机器人单轴零点标定时提示无法执行零点标定,由于重力补偿已启用,所有机器人轴的脉冲计数必须有效 首先,机器人由于长时间断电未使用,6个轴的编码器数据全部丢失,上电后报警SRVO-062, 有关SRVO-062故障报警的相关内容可参考以下链接: FANUC机器人SRVO-062报警原因分…

windows11如何设置无线网卡不休眠

为了在家里用向日葵等软件连接上公司的台式电脑,发现尴尬的事情:在家里连接时提示公司的电脑下线了。经排查,发现长时间不用时,公司的台式电脑的无线网卡休眠了。 windows11可以用下面的步骤设置无线网卡不休眠: 1. 设…

Sybase数据库分页查询(指定起始位置)

针对单表数据量过大的场景,分页查询必不可少。针对sybase数据库分页查询的案例全网稀少,特别是指定起始页的分页查询实现。 本文依靠实际开发场景,特此总结Sybase数据库分页查询(指定起始位置)。 目录 一、 SQL实现分…

SQL统计语句记录

1.达梦数据库 统计指定单位的12个月份的业务数据 SELECT a.DEPT_ID, b.dept_name, a.USER_NAME, count(a.dept_id) as count, sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-01 THEN 1 else 0 end) as one,sum(case when to_char(a.CREATE_TIME,yyyy-mm) 2023-02 T…

JavaScript手写专题——图片懒加载、滚动节流、防抖手写

图片懒加载场景:在一些图片量比较大的网站(比如电商网站首页,或者团购网站、小游戏首页等),如果我们尝试在用户打开页面的时候,就把所有的图片资源加载完毕,那么很可能会造成白屏、卡顿等现象&a…

内网安全-隧道技术SSHDNSICMPSMB上线通讯LinuxMac 简单总结

第126天:内网安全-隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac_内网安全-隧道技术_ssh_dns_icmp_smb_上线通讯linux_mac-CSDN博客 内网渗透—隧道技术_隧道技术csdn-CSDN博客 #SMB 隧道&通讯&上线 判断:445 通讯 上…

Azure Windows2012升级2016

Azure Windows2012升级2016 在自己电脑配置Azure PowerShell前置条件PowerShell 登录到 Azure Azure 中运行 Windows Server 的 VM 的就地升级前置条件,生成一块OS磁盘将生成的OS磁盘附件到需升级的服务器执行就地升级到 Windows Server 2016 升级后配置故障恢复 在…

一觉醒来 AI科技圈发生的大小事儿 05月09日

📳AlphaFold 3 重磅问世,全面预测蛋白质与所有生命分子相互作用及结构,准确性远超以往水平 Google DeepMind发布了AlphaFold3模型,能够联合预测蛋白质、核酸、小分子等复合物结构,准确性显著提高,对跨生物…

代码随想录算法训练营第36期DAY22

DAY22 654最大二叉树 自己做的时候忽略了:nums.length>1的题给条件。所以每次递归都要判断是否size()>1,不要空的。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig…

让数据更「高效」一点!IvorySQL在Neon平台上的迅速部署和灵活应用

IvorySQL本身就是一个100%兼容PostgreSQL最新内核的开源数据库系统,而Neon Autoscaling Platform通常支持多种数据库和应用程序。将IvorySQL集成到该平台后,可以进一步增强与其他系统和应用程序的兼容性,同时更全面的体验IvorySQL的Oracle兼容…

深入探究 Spring Boot Starter:从概念到实践

序言 Spring Boot Starter 是 Spring Boot 生态系统中的一个核心概念,它为开发者提供了一种便捷的方式来捆绑和配置应用程序所需的依赖项。本文将深入探讨 Spring Boot Starter 的概念、原理以及如何创建自定义的 Starter。 一、什么是 Spring Boot Starter Spri…

docker 安装elasticsearch8.X

docker 安装elasticsearch8.X 安装elasticsearch8.X前言安装elasticsearch安装elasticsearch-analysis-ik安装kibana 安装elasticsearch8.X 前言 由于需要安装elasticsearch、IK分词插件、kibana。所以需要保持这三者的版本一致性。 elasticsearch 8.12.2 kibana 8.12.2 ela…

科沃斯梦碎“扫地茅”,钱东奇跌落“风口”

昔日“扫地茅“不香了,科沃斯跌落神坛。 4月27日,科沃斯发布2023年报显示:2023年,科沃斯的营收为155.02亿元,同比增加1.16%;同期,净利为6.10亿元,同比减少63.96%。科沃斯的经营业绩…
最新文章