MySQL基本操作(1)

news/2024/10/10 21:30:49/

初始数据库

数据库的基本概念

        数据库一个按照数据结构来组织、存储和管理数据的仓库,换句话说,就是存储数据的仓库。
        为何使用数据库?使用数据库不仅仅为了使数据持久化,还能使得数据能够进行有效的管理,以及提供的各种安全机制能够保证数据的安全,还可以用过远程连接去使用它。对于传统的文件存储数据,共享性差,冗余度大,并且数据独立性较差,同时不利于数据查询和管理,不利于存储海量数据。
        数据库与数据结构之间的关系。数据结构是数据之间的组织和存储方式,数据库可以看作是复杂的数据结构,数据库不仅存储数据,还提供了高效访问和管理大量数据的方法。例如:MySQL的索引使用的B+树这种数据结构。

        数据库管理系统是建立,操作和管理数据库的大型软件,是操作数据库工具
        数据库服务是指通过网络提供的数据库功能,使用户能够在远程服务器上存储、管理和访问数据。通常包括数据库服务器,网络连接,存储设备等组件。常见的数据库服务包括MySQL,Oracle等。
        SQL是一种特定于数据库编程语言,用于管理,查询,和操作关系型数据库
SQL分类:(仅作整理,会在具体情况中展示)

  1. 数据查询语言(DQL):用于从数据库中检索数据,主要命令:select,用于从一个表或多个表检索数据
  2. 数据定义语言(DEL):用于定义和管理数据库的结构,主要命令:create(创建数据库),alter(修改数据库),drop(删除数据库),rename(重新命名数据库)
  3. 数据操作语言(DML):用于添加,修改和删除数据库中的数据。主要命令:insert(插入数据),undate(更新数据),delete(删除数据)
  4. 数据控制语言(DCL):控制数据库的访问权限和事务管理。主要命令:grant(授予权限),revoke(撤销权限)
  5. 事务控制语言(TCL):管理数据库中的事务。主要命令:commit(提交事务),rollback(回滚事务)
  6. 游标控制语言(CCL):管理和操作数据库中的游标。主要命令:declare(声明游标),fetch(获取游标中的数据)

数据库的分类:

关系型数据库:采用关系模型来组织的数据库,使用表来组织数据,每个表都有固定的模式,常见的有:Oracle,MySQL,SQL Sever
非关系型数据库:不使用传统的关系模型的数据库系统,并不基于SQL,支持多种数据模型,易于水平扩展,拥有更高的性能。常见的有redis,hbase

区别:

关系型数据库非关系型数据库
使用SQL一般不基于SQL实现
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基本结构基于表和列,结构固定灵活性较高
使用场景业务方面的联机事务处理(OLTP)系统用于数据的缓存,或基于统计分析的OLAP系统

注:OLAP指的是联机分析处理

MySQL数据库

        MySQL是一种流行的开源关系型数据库管理系统,用于有效的存储,管理和存储数据,因为开源,高效,灵活的特点,成为广泛应用的数据库管理系统。

基本操作:

库操作:

        1.查看库操作:show databases; 

注意:databases应为复数,否则就会报错。

2.创建数据库:从简单入手

CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序
规则;
CREATE DATABASE test;

        上面的代码表示创建了一个名为test的数据库,其中CREATE 是数据库定义语言,DATABASE表示对数据库进行的操作,test表示创建的数据库的名称。可以利用show databases;用来查看,结果如下:

如果我们再次执行create database test; 会出现以下报错,表示该数据库已存在。
为了避免,我们可以对以上语句加以约束,变为

CREATE DATABASE IF NOT EXISTS test;

表示如果不存在此数据库,便创建,这样子就不会报错。相当于多了一层校验,如果数据库存在,只会发出警告

还有一些是数据库创建时的可选选项,用于指定数据库的特性:

create_option: [DEFAULT] {CHARACTER SET [=] charset_name| COLLATE [=] collation_name| ENCRYPTION [=] {'Y' | 'N'}
}

CHARCTER SET 表示指定数据库字符的编码格式,通常采用utf8mb4'
COLLATE 用于指定数据库的字符排序规则,通常采用utf8mb4_0900_ai_ci;
ENCRTPTION 用于指定数据库是否加密

CREATE DATABASE IF NOT EXISTS test1 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci

        如果使用第一种最简单的方式进行创建数据库,那么会使用当前默认的字符集和排序规则。可以利用以下代码查看:

SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';

我的得到的结果如下:

注意:一般不使用关键词作为库名,如果利用关键词作为库名,要把关键词用''(单引号引起来)

3.选择数据库:use test;

use + 想要选中的数据库,只有选中了数据库,才能够对数据库中的表进行操作,其中select database();用于查看当前选中的数据库,如果没有选中数据库报错

4.删除数据库:慎重!!!

drop database + 要删除的库名,如果不存在就加以删除,会报错,加上if exists用于校验最终报一个警告。

常用的数据类型

字符串类型:
 

数据类型大小说明

对应Java类型

CHAR0~255字节固定长度空间char
VARCHAR(size)0~65535字节可变长度字符串String
TEXT0~65535字节长文本数据String
MEDIUMTEXT0~16777215字节中等长度文本数据String
BLOB0~65535字节二进制形式的长文本数据byte[]

CHAR类型占用固定长度的空间,当存储较短的字符串会浪费存储空间,但是好处是提高了检索效率,适用于存储长度相近或者固定长度的数据。

VARCHAR是使用最多的字符串类型,按实际存储内容占用空间,适合存储长度变化较大的字符串,从而可以节省存储空间,但是检索效率低于CHAR,适合存储长度不定的文本数据

数值类型:
 

数据类型大小说明对应Java类型
BIT[(M)]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean
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.有符号范围:-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1,如int是4字节,就是-2^31~2^31-1
2.无符号范围:0~2(类型字节数*8-1)-1,如int是2^32-1

3.日期时间类型
 

类型说明取值范围
DATEYYYY-MM-dd1000-01-01~9999-12-31
TIMEHH:mm:ss-838:59:59~838:59:59
DATETIMEYY-MM-dd HH:mm:ss1001-01-01 00:00:00.0000000~9999-12-31 23:59:59.99999
YEARYYYY格式年份1901~2155

数据表的操作

1.查看表

先选择使用哪个库,然后输入show tables;来查看当前库中有哪些表,如果库为空,如上图所示

2.创建表

CREATE TABLE [IF NOT EXISTS] 数据表名称(
字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
字段名2 列类型(长度) [修饰属性] [键/索引] [注释],
字段名3 列类型(长度) [修饰属性] [键/索引] [注释],
......
字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
) [ENGINE = 数据表类型][CHARSET=字符集编码] [COMMENT=注释];
create table stu(
id int,
name varchar(20) comment '姓名',
sex varchar(1)
);

其中id,name,sex为自定义的段名,int, varchar为该字段的数据类型(n)中的数字表示最大长度comment关键字增加字段的说明,注意,说明必须被单引号引起来,无论中英文,最后一个字段没有逗号

创建结构相同的表

这里只是复制了表的结构,但是没有复制表的数据

create table if not exists stu1 like stu;

3.查看表结构

desc+要显示的表;
这些查看的是表结构,并不是数据,后四个以后发文介绍

  • Field:属性名
  • Type:属性类型
  • Null:是否允许为空
  • Key:索引类型(键值的类型)
  • Default:默认值
  • Extra:拓展功能

4.修改数据表

4.1修改表名

ALTER TABLE 表名 RENAME AS 新表名;

4.2增加字段

ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];

4.3修改字段

-- MODIFY 只能修改字段的修饰属性
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
-- CHANGE 可以修改字段的名字以及修饰属性
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];

4.4删除字段

ALTER TABLE 表名 DROP 字段名;

5.删除表

drop table stu1;

删除stu1表后的库中存在的表。

可以连续删除,只需要加上,

原来只有两张表,删除之后为空

注意:

  1. 一条语句可以删除多个表,但是一条语句只能删除一个数据库
  2. 删除操作谨慎进行,无论是删除库还是删除表

http://www.ppmy.cn/news/1537126.html

相关文章

智能配音软件哪款好?分享5个搞怪软件

想要让视频或社交媒体内容更加生动有趣?搞笑配音软件是个不错的选择。 无论是嘻哈风格的视频,还是搞怪的段子,合适的配音都能让内容增色不少。 今天,就让我们来探索六个文字配音软件,它们不仅能帮你实现搞笑配音&…

高性能缓存方案 —— Caffeine

一、简介 Caffeine是一个高性能的Java缓存库,它提供了本地缓存的功能。 Caffeine和Redis都是内存级别的缓存,为什么要使用在这两缓存作为二级缓存,它们两有什么区别呢? 虽然它们都是内存级别的缓存,但是Redis是需要单独部署的&…

内网离线安装k8s 1.27.0(保证安装成功)

这里写目录标题 背景步骤一、集群规划及架构(node节点可以有很多个)二、系统初始化准备(所有节点都需要进行操作)三、安装并配置cri-dockerd插件(三台服务器同时操作)四、安装kubeadm(所有节点同步操作)五、初始化集群六、将Node节点添加到集群七、安装网络组件Calico八、…

基于xgboost的分类预测

一、xgboost的介绍 xgboost以及后续的lightGBM等在我的认知中算是目前数据挖掘中最常用的预测算法,在各种数据挖掘比赛中获得了Top的名次。如果想从事数据挖掘相关的岗位,该算法是一定要好好掌握的。 xgboost其实可以认为是GBDT算法的工程实现&#xf…

AI时代互联网信息的几点隐忧

笔者最近一年关注的AI技术比关注的安全技术还多,AI从事实上的对内容生产工作者带来工作效率的提高,年初的时候比较关注的是如何在安全行业使用AI进行赋能,领导也给了类似的命题,让我思考如何让AI在安全行业发力。 目前已经看到的是…

为什么在摄像头领域播放声音需要拉功放?

目录 一、声音的基础知识二、功放的基本原理三、摄像头领域为什么需要拉功放?四、实际应用场景分析五、结论 摄像头在现代安防、监控、智能家居等场景中发挥着重要作用。随着技术的进步,摄像头不仅具备了图像采集功能,还集成了语音传输和播放…

PHP中的HTTP请求:简化你的网络通信

在当今的网络应用开发中,PHP作为一种流行的服务器端脚本语言,经常需要与外部服务进行通信。这通常涉及到发送HTTP请求来获取或提交数据。幸运的是,PHP提供了多种方式来简化HTTP请求的过程,使得网络通信变得轻而易举。 PHP中的HTTP…

甲虫身体图像分割系统源码&数据集分享

甲虫身体图像分割系统源码&数据集分享 [yolov8-seg-EfficientRepBiPAN&yolov8-seg-C2f-FocusedLinearAttention等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challen…