当前位置: 首页 > news >正文

【MySQL】表操作和库操作

在这里插入图片描述

文章目录

  • 概念
  • 库操作
    • 1.创建数据库
    • 2.删除数据库
    • 3.选择数据库
    • 4.显示数据库列表
  • 表操作
    • 1.创建数据表CREATE
    • 2.删除数据表DROP
    • 3.插入数据INSERT
    • 4.更新数据UPDATE
    • 5.修改数据ALTER
    • 6.查询数据SELECT
    • 7.WHERE子句
    • 8.ORDER BY子句
    • 9.LIMIT子句
    • 10.GROUP BY子句
    • 11.HAVING子句
  • 使用注意事项

概念

MySQL 是一种开源的关系型数据库管理系统,被广泛应用于网站开发、数据分析等领域。在 MySQL 中,我们经常需要使用一些常用的指令来管理数据库和数据表,比如创建数据库、创建数据表、插入数据、更新数据、查询数据等。本篇博客将会介绍一些常用的 MySQL 指令,并给出详细的语法和示例。


库操作

库(Database)是指一组相关的数据表的集合。一个库可以包含多个数据表,每个数据表可以包含多行多列的数据。库的操作是管理 MySQL 中数据的重要手段之一。

1.创建数据库

在 MySQL 中,我们可以使用 CREATE DATABASE 指令来创建一个新的数据库。其语法如下:

CREATE DATABASE database_name;

其中,database_name 为所要创建的数据库的名称。

例如,如果我们要创建一个名为 mydatabase 的数据库,可以使用以下指令:

CREATE DATABASE mydatabase;

2.删除数据库

如果我们要删除一个已经存在的数据库,可以使用 DROP DATABASE 指令。其语法如下:

DROP DATABASE database_name;

其中,database_name 为所要删除的数据库的名称。

例如,如果我们要删除名为 mydatabase 的数据库,可以使用以下指令:

DROP DATABASE mydatabase;

3.选择数据库

在 MySQL 中,我们可以使用 USE 指令来选择一个已经存在的数据库。其语法如下:

USE database_name;

其中,database_name 为所要选择的数据库的名称。

例如,如果我们要选择名为 mydatabase 的数据库,可以使用以下指令:

USE mydatabase;

4.显示数据库列表

如果我们想查看所有的数据库列表,可以使用 SHOW DATABASES 指令。其语法如下:

SHOW DATABASES;

例如,如果我们想查看所有的数据库列表,可以使用以下指令:

SHOW DATABASES;

表操作

表(Table)是指一组具有相同数据结构的数据集合。每个表由多个列组成,每列定义了表中的一种数据类型。表用于存储和组织数据,是 MySQL 数据库的核心组成部分。表的操作是管理 MySQL 中数据的基本手段之一。

1.创建数据表CREATE

在 MySQL 中,我们可以使用 CREATE TABLE 指令来创建一个新的数据表。其语法如下:

CREATE TABLE table_name (column1 datatype,column2 datatype,column3 datatype,...
);

其中,table_name 为所要创建的数据表的名称,column1、column2、column3 等为数据表中的列名,datatype 为数据类型。

例如,如果我们要创建一个名为 customers 的数据表,其中包含 id、name、age 和 address 四个列,可以使用以下指令:

CREATE TABLE customers (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT,address VARCHAR(255),PRIMARY KEY (id)
);

其中,id 列为整数类型,不允许为空,且为自动递增的主键;name 列为长度不超过 50 的字符串类型,不允许为空;age 列为整数类型,允许为空;address 列为长度不超过 255 的字符串类型,允许为空。


2.删除数据表DROP

如果我们要删除一个已经存在的数据表,可以使用 DROP TABLE 指令。其语法如下:

DROP TABLE table_name;

例如,如果我们要删除名为 customers 的数据表,可以使用以下指令:

DROP TABLE customers;

3.插入数据INSERT

在 MySQL 中,我们可以使用 INSERT INTO 指令来向数据表中插入数据,其语法如下:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

其中,table_name 为所要插入的数据表的名称,column1、column2 等为所要插入的列名,value1、value2 等为所要插入的值。

例如,如果我们要向名为 customers 的数据表中插入一个新的记录,其 name 为 ‘Tom’,age 为 25,address 为 ‘New York’,可以使用以下指令:

INSERT INTO customers (name, age, address)
VALUES ('Tom', 25, 'New York');

这将会在 customers 表中添加一个新的记录,其 name 为 ‘Tom’,age 为 25,address 为 ‘New York’。

插入多个数据
如果我们要插入多个记录,可以在 INSERT INTO 指令后添加多组值。例如,如果我们要向名为 customers 的数据表中插入两个新的记录,分别为 name 为 ‘John’,age 为 30,address 为 ‘London’,和 name 为 ‘Mary’,age 为 35,address 为 ‘Paris’,可以使用以下指令:

INSERT INTO customers (name, age, address)
VALUES ('John', 30, 'London'), ('Mary', 35, 'Paris');

这将会在 customers 表中添加两个新的记录,分别为 name 为 ‘John’,age 为 30,address 为 ‘London’,和 name 为 ‘Mary’,age 为 35,address 为 ‘Paris’。

插入默认值
如果我们要插入默认值,可以省略 VALUES 子句。例如,如果我们要向名为 customers 的数据表中插入一个新的记录,其中所有列的值均为默认值,可以使用以下指令:

INSERT INTO customers DEFAULT VALUES;

在这个例子中,所有列的值均为其默认值。

插入查询结果
如果我们要将查询结果插入到一个数据表中,可以使用 INSERT INTO 指令和 SELECT 指令。例如,如果我们要将名为 orders 的数据表中订单总金额大于 100 的记录插入到名为 big_orders 的数据表中,可以使用以下指令:

INSERT INTO big_orders (order_id, total_amount)
SELECT order_id, SUM(amount)
FROM orders
GROUP BY order_id
HAVING SUM(amount) > 100;

在这个例子中,我们使用 SELECT 指令查询名为 orders 的数据表中订单总金额大于 100 的记录,并将其插入到名为 big_orders 的数据表中。


4.更新数据UPDATE

如果我们要更新数据表中的数据,可以使用 UPDATE 指令,其语法如下:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

其中,table_name 为所要更新的数据表的名称,column1、column2 等为所要更新的列名,value1、value2 等为所要更新的值,condition 为所要更新的记录的条件。

更新单个记录
例如,如果我们要更新名为 customers 的数据表中 id 为 1 的记录的 name 和 age 列,可以使用以下指令:

UPDATE customers
SET name = 'Tom', age = 25
WHERE id = 1;

这将会将 id 为 1 的记录的 name 列更新为 ‘Tom’,age 列更新为 25。

更新多个记录
如果我们要更新多个记录,可以使用 UPDATE 指令结合 WHERE 子句中的条件进行更新。例如,如果我们要将所有 age 大于 30 的记录的 name 列更新为 ‘John’,可以使用以下指令:

UPDATE customers
SET name = 'John'
WHERE age > 30;

更新多个列
如果我们要更新多个列,可以使用 UPDATE 指令中的 SET 子句。例如,如果我们要将所有 age 大于 30 的记录的 name 列更新为 ‘John’,address 列更新为 ‘New York’,可以使用以下指令:

UPDATE customers
SET name = 'John', address = 'New York'
WHERE age > 30;

注意,在 SET 子句中列出的列和值必须一一对应。

更新 NULL 值
如果我们要将 NULL 值更新为一个非空值,可以使用 UPDATE 指令中的 IFNULL 函数。例如,如果我们要将名为 customers 的数据表中 age 列为 NULL 的记录的 age 列更新为 18,可以使用以下指令:

UPDATE customers
SET age = IFNULL(age, 18)
WHERE age IS NULL;

在这个例子中,如果 age 列为 NULL,则使用 IFNULL 函数将其替换为 18。

更新自动递增列
如果我们要更新自动递增列的值,可以使用 SET 子句来指定新的值。例如,如果我们要将名为 customers 的数据表中 id 为 1 的记录的 id 列更新为 100,可以使用以下指令:

SET @row := 0;
UPDATE customers
SET id = (@row := @row + 1)
WHERE id = 1;

在这个例子中,我们使用 SET 子句将 id 列更新为 @row 的值加 1,从而将其设置为 100。


5.修改数据ALTER

ALTER 操作是 MySQL 中的一个非常重要的操作,用于修改数据库表的结构,包括增加、删除、修改表的列,修改表的数据类型,修改表的索引等。下面是 ALTER 命令的语法:

ALTER TABLE table_name action;

其中 table_name 是要操作的表的名称,action 表示要执行的操作。
ALTER 操作的常用语法包括:

增加列
要在表中增加一列,可以使用以下语法:

ALTER TABLE table_name ADD column_name data_type;

例如,以下语句将在表 users 中增加一列 age:

ALTER TABLE users ADD age INT;

修改列
要修改表中的一列,可以使用以下语法:

ALTER TABLE table_name MODIFY column_name data_type;

例如,以下语句将修改表 users 中的列 age 的数据类型为 FLOAT:

ALTER TABLE users MODIFY age FLOAT;

删除列
要删除表中的一列,可以使用以下语法:

ALTER TABLE table_name DROP column_name;

例如,以下语句将删除表 users 中的列 age:

ALTER TABLE users DROP age;

修改列名
要修改表中的一列的名称,可以使用以下语法:

ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;

例如,以下语句将表 users 中的列 age 的名称修改为 new_age:

ALTER TABLE users RENAME COLUMN age TO new_age;

添加主键
要在表中添加主键,可以使用以下语法:

ALTER TABLE table_name ADD PRIMARY KEY (column_name);

例如,以下语句将在表 users 中添加主键,主键列为 id:

ALTER TABLE users ADD PRIMARY KEY (id);
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id) REFERENCES customer

6.查询数据SELECT

SELECT是SQL中最常用的语句之一,它用于从表中检索数据。可以使用SELECT语句检索特定列或所有列。例如,以下语句将检索名为"customers"的表中的所有列:

SELECT * FROM customers;

此外,我们可以选择特定的列来检索,如下所示:


SELECT customer_name, customer_email FROM customers;

此语句将只返回名为"customer_name"和"customer_email"的列。

7.WHERE子句

WHERE子句用于筛选SELECT语句中的数据。例如,以下语句将检索"customers"表中姓为"Smith"的客户:

SELECT * FROM customers
WHERE customer_last_name = 'Smith';

8.ORDER BY子句

ORDER BY子句用于按特定列的升序或降序对检索的数据进行排序。例如,以下语句将按客户姓名的字母顺序对"customers"表中的数据进行排序:

SELECT * FROM customers
ORDER BY customer_name;

如果想要以降序的方式排序,我们可以使用DESC关键字,如下所示:

SELECT * FROM customers
ORDER BY customer_name DESC;

9.LIMIT子句

LIMIT子句用于限制SELECT语句返回的结果数。例如,以下语句将只返回"customers"表中前5个结果:

SELECT * FROM customers
LIMIT 5;

可以使用OFFSET关键字指定从哪个位置开始返回结果,如下所示:

SELECT * FROM customers
LIMIT 5 OFFSET 10;

此语句将从第11行开始返回结果,总共返回5行数据。

10.GROUP BY子句

GROUP BY子句用于根据一个或多个列对SELECT语句的结果进行分组。例如,以下语句将按客户姓氏分组并计算每个组中的客户数:

SELECT customer_last_name, COUNT(*) as num_customers
FROM customers
GROUP BY customer_last_name;

11.HAVING子句

HAVING子句用于在GROUP BY子句中使用聚合函数来筛选分组后的数据。例如,以下语句将筛选出客户数大于5的客户姓氏:

SELECT customer_last_name, COUNT(*) as num_customers
FROM customers
GROUP BY customer_last_name
HAVING num_customers > 5;

使用注意事项

  1. 数据库备份与恢复
    在使用 MySQL 进行数据管理时,定期进行数据备份非常重要。如果数据库损坏或出现其他问题,可以通过备份文件进行数据恢复。可以使用 MySQL 提供的 mysqldump 工具进行备份和恢复操作。
  2. 数据库安全
    为了保证数据库的安全,需要对 MySQL 数据库进行正确的设置和保护。建议设置复杂的密码,并对数据库进行访问控制和授权管理。
  3. 数据库性能优化
    MySQL 的性能取决于很多因素,如查询语句、索引、表结构等。在使用 MySQL 时,需要对查询语句进行优化,使用正确的索引,避免频繁的表连接操作等。
  4. 数据库版本管理
    MySQL 的每个版本都有其独特的特点和优化。建议使用最新版本的 MySQL,并定期升级以保持系统的稳定性和性能。
  5. 数据库错误处理
    在使用 MySQL 时,经常会遇到各种错误,如语法错误、连接错误、数据类型错误等。建议仔细阅读错误信息,并对错误进行适当的处理。
  6. 数据库字符集设置
    MySQL 支持多种字符集,如 utf8、gbk、latin1 等。在创建数据库和表时,需要正确设置字符集。如果字符集设置不正确,可能会导致数据乱码等问题。

相关文章:

【MySQL】表操作和库操作

文章目录概念库操作1.创建数据库2.删除数据库3.选择数据库4.显示数据库列表表操作1.创建数据表CREATE2.删除数据表DROP3.插入数据INSERT4.更新数据UPDATE5.修改数据ALTER6.查询数据SELECT7.WHERE子句8.ORDER BY子句9.LIMIT子句10.GROUP BY子句11.HAVING子句使用注意事项概念 M…...

拓扑排序的思想?用代码怎么实现

目录 一、拓扑排序的思想 二、代码实现(C) 代码思想 核心代码 完整代码 一、拓扑排序的思想 以西红柿炒鸡蛋这道菜为例,其中的做饭流程为: 中间2 6 3 7 4的顺序都可以任意调换,但1和5必须在最前面,这是…...

【Git】码云

目录 5、 Git 团队协作机制 5.1 团队内协作 5.2 跨团队协作 6、 Gitee码云 操作 6.1 创建远程仓库 6.2 远程仓库操作 6.3 SSH 免密登录 5、 Git 团队协作机制 5.1 团队内协作 5.2 跨团队协作 6、 Gitee码云 操作 码云网址: https://githee.com/ 账号验证…...

数据结构与算法(三):栈与队列

上一篇《数据结构与算法(二):线性表》中介绍了数据结构中线性表的两种不同实现——顺序表与链表。这一篇主要介绍线性表中比较特殊的两种数据结构——栈与队列。首先必须明确一点,栈和队列都是线性表,它们中的元素都具…...

Spring架构篇--2.5.2 远程通信基础Select 源码篇--window--sokcet.register

前言:通过Selector.open() 获取到Selector 的选择器后,服务端和客户的socket 都可以通过register 进行socker 的注册; 服务端 ServerSocketChannel 的注册: ServerSocketChannel serverSocketChannel ServerSocketChannel.open(…...

ISIS协议

ISIS协议基础简介应用场景路由计算过程地址结构路由器分类邻居Hello报文邻居关系建立DIS及DIS与DR的类比链路状态信息的载体链路状态信息的交互路由算法网络分层路由域![在这里插入图片描述](https://img-blog.csdnimg.cn/9027c43b614a4399ae1f54e87a37f047.png)区域间路由简介…...

CRM系统哪种品牌的好?这五款简单好用!

CRM系统哪种品牌的好?这五款简单好用! CRM系统是指利用软件、硬件和网络技术,为企业建立一个客户信息收集、管理、分析和利用的信息系统。CRM系统的基础功能主要包括营销自动化、客户管理、销售管理、客服管理、报表分析等,选择合…...

QT_dbus(ipc进程间通讯)

QT_dbus(ipc进程间通讯) 前言: 参考链接: https://www.cnblogs.com/brt3/p/9614899.html https://blog.csdn.net/weixin_43246170/article/details/120994311 https://blog.csdn.net/kchmmd/article/details/118605315 一个大型项目可能需要多个子程序同…...

华为OD机试 - 数组排序(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…...

字符串转换为二进制-课后程序(JAVA基础案例教程-黑马程序员编著-第五章-课后作业)

【案例5-4】 字符串转换为二进制 【案例介绍】 1.任务描述 本例要求编写一个程序,从键盘录入一个字符串,将字符串转换为二进制数。在转换时,将字符串中的每个字符单独转换为一个二进制数,将所有二进制数连接起来进行输出。 案…...

SpringIOC

一、为什么要使用Spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 为…...

Debezium系列之:基于数据库信号表和Kafka信号Topic两种技术方案实现增量快照incremental技术的详细步骤

Debezium系列之:基于数据库信号表和Kafka信号Topic两种技术方案实现增量快照incremental技术的详细步骤 一、需求背景二、增量快照技术实现的两种方案三、基于数据库信号表实现增量快照技术的原理1.基于水印的快照2.信令表3.增量快照4.连接起重启四、基于数据库信号表实现增量…...

华为OD机试 - 第 K 个最小码值的字母(Python) | 机试题+算法思路+考点+代码解析 【2023】

第 K 个最小码值的字母 题目 输入一个由n个大小写字母组成的字符串 按照 ASCII 码值从小到大进行排序 查找字符串中第k个最小 ASCII 码值的字母(k>=1) 输出该字母所在字符串中的位置索引(字符串的第一个位置索引为 0) k如果大于字符串长度则输出最大 ASCII 码值的字母所在…...

PointNet++训练自己的数据集(附源码)

本文针对PointNet强大的三维点云分类功能,详细讲解怎么训练自己的数据集,在此之前,需要确保已经能够跑通源码的训练和测试,如果没有,请参考PointNet的源码运行。数据放置1.1. 在mytensor_shape_names.txt中配置自己的分…...

ROS2可视化利器---Foxglove Studio

0. 简介 之前作者已经讲了《ROS1可视化利器—Webviz》,然后就有读者问,ROS2有没有可以使用的可视化工具呢,答案是肯定的,除了plotjuggler这种ROS1和ROS2通用的可视化利器,还有一种全平台通用的软件FoxgloveStudio&…...

python实战应用讲解-【语法基础篇】流程控制-控制流的元素及语句(附示例代码)

目录 控制流的元素 条件 代码块 程序执行 代码块嵌套 控制流语句 if 语句...

[蓝桥杯 2019 省 A] 外卖店优先级

蓝桥杯 2019 年省赛 A 组 G 题题目描述“饱了么”外卖系统中维护着 N家外卖店,编号 1 ∼ N。每家外卖店都有一个优先级,初始时 (0 时刻)优先级都为0。每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1&#x…...

Jetson Xavier nx(ubuntu18.04)安装rtl8152网卡驱动和8192网卡驱动

含义 Bus 002 : 指明设备连接到哪条总线。 Device 003 : 表明这是连接到总线上的第二台设备。 ID : 设备的ID,包括厂商的ID和产品的ID,格式 厂商ID:产品ID。 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter:生产商名字和设备…...

Rocky 9.1操作系统实现zabbix6.0的安装部署实战

文章目录前言一. 实验环境二. 安装zabbix过程2.1. 安装zabbix源2.2 安装zabbix相关的软件2.3 安装数据库并启动2.4 开始初始化数据库:2.5 创建数据库实例及对应的用户2.6 导入官网提供的数据2.7 配置zabbix 服务的配置文件2.8. 启动服务2.9 从网页进行安装2.10 登陆…...

AQS-ReentrantLock

一、AQS 在 Lock 中,用到了一个同步队列 AQS,全称 AbstractQueuedSynchronizer,它是一个同步工具,也是 Lock 用来实现线程同步的核心组件。 1.AQS 的两种功能 独占和共享。 独占锁:每次只能有一个线程持有锁&#x…...

SpringCloud+Dubbo3 = 王炸 !

前言 全链路异步化的大趋势来了 随着业务的发展,微服务应用的流量越来越大,使用到的资源也越来越多。 在微服务架构下,大量的应用都是 SpringCloud 分布式架构,这种架构总体上是全链路同步模式。 全链路同步模式不仅造成了资源…...

机器学习主要内容的思维导图

机器学习 机器学习: 定义:能够从经验中学习从而能够 把事情不断做好的计算机程序 人工智能的一个分支和 实现方式 理论基础:概率论 数理统计 线性代数 数学分析 数值逼近 最优化理论 计算复杂理论 核心要素:数据 算法 模型 机器…...

嵌套走马灯Carousel

Carousel 的应用很广泛,基础用法这里不多做阐述,感兴趣的可以去element-gui了解Carousel 组件。 今天主要是梳理嵌套走马灯的逻辑,背景如下: 需要对项目做一个展示,项目可能有一个或多个,同时一个项目可能…...

实战——缓存的使用

文章目录前言概述实践一、缓存数据一致1.更新缓存类2.删除缓存类二、项目实践(商城项目)缓存预热双缓存机制前言 对于我们日常开发的应用系统。由于MySQL等关系型数据库读写的并发量是有一定的上线的,当请求量过大时候那数据库的压力一定会上…...

2023年中职网络安全竞赛跨站脚本渗透解析-2(超详细)

跨站脚本渗透 任务环境说明:需求环境可私信博主! 服务器场景:Server2126(关闭链接)服务器场景操作系统:未知访问服务器网站目录1,根据页面信息完成条件,将获取到弹框信息作为flag提交;访问服务器网站目录2,根据页面信息完成条件,将获取到弹框信息作为flag提交;访问…...

Scala的简单使用

文章目录Scala的简单使用(一)交互模式1、命令行方式2、文件方式(二)编译模式1、创建源程序2、编译成字节码3、解释执行对象Scala的简单使用 Scala可以在交互模式和编译模式两种方式下运行 (一)交互模式 在…...

Java之前缀和算法

目录 一.前缀和 1.前缀和介绍 2.编程中的前缀和 二.一维数组的动态和 1.题目描述 2.问题分析 3.代码实现 三.除自身以外数组的乘积 1.题目描述 2.问题分析 3.代码实现 四.和为 K 的子数组 1.题目描述 2.问题分析 3.代码实现 五.形成两个异或相等数组的三元组数目…...

基于GIS计算降雨侵蚀力R因子

一、数据来源介绍 (一)行政边界数据 本文所用到的河北唐山行政边界数据来源于中国科学院资源环境科学与数据中心(https://www.resdc.cn/Default.aspx)。 (二)降水量数据 本文所用到的降水量数据来源于国家…...

大数据时代下的企业网络安全

在大数据技术迅猛发展的今天,网络安全问题已经发展成一个广受关注的热门研究方向。有人说,“大数据下,人人裸奔”,隐私保护、数据防护日益成为广大学者、企业研究的焦点。 面对这种安全威胁,企业必须实施一些有效的信…...

【跟我一起读《视觉惯性SLAM理论与源码解析》】第三章第四章 SLAM中常用的数学基础知识相机成像模型

齐次坐标能大大简化在三维空间中点、线、面表达方式和旋转、平移等操作在齐次坐标下,两个点的叉积结果可以表示一条直线l;也可以用两条直线的叉积结果表示它们的齐次坐标交点,关于叉积其实十四讲解释的还是比较清楚的,和李代数李群的关系可以…...