【MySQL】表操作和库操作

news2024/11/30 20:50:51

在这里插入图片描述

文章目录

  • 概念
  • 库操作
    • 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 等。在创建数据库和表时,需要正确设置字符集。如果字符集设置不正确,可能会导致数据乱码等问题。

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

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

相关文章

Java集合(一)---List和set

1.Java集合有哪些?集合类型主要有3种:set(集)、list(列表)和map(映射)Map接口和Collection接口是所有集合框架的父接口:1. Collection接口的子接口包括:Set接口和List接口2. Map接口的实现类主要有&#xf…

【Python】批量采集原神表情包~

嗨害大家好鸭~我是小熊猫(✿◡‿◡) 最近迷上了原神, 不自觉中就很喜欢保存广大旅行者制作的表情包~ 真的很有意思诶~ 源码资料电子书:点击此处跳转文末名片获取 一个个保存的话,好像效率很低嘛… 那我就发挥我小熊猫的老本行直接给把他们全部采集下…

零基础机器学习做游戏辅助第十三课--原神自动钓鱼(三)labelimg的使用

一、什么是labelimg labelimg是一款开源的图像标注工具,标签可用于分类和目标检测,它是用python写的,并使用Qt作为其图形界面,简单好用(虽然是英文版的)。其注释以 PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持 COCO数据集格式。 二、安装label…

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

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

Allegro无法看到金属化孔的钻孔的原因和解决办法

Allegro无法看到金属化孔的钻孔的原因和解决办法 用Allegro设计PCB的时候,希望同时看到金属化孔的盘以及钻孔,如下图 但是有时显示效果是这样的,看不到钻孔了 导致无法直观地区分是通孔是还是表贴的盘 如何解决,具体操作如下 点击Setup

27正定矩阵

这一节进入正定矩阵的内容,什么叫做正定矩阵?为什么我们对矩阵正定这么感兴趣? PS:这一节将前面所有的概念都融合在一起:主元、行列式、特征值、不稳定性 一、正定矩阵的判断方法 为了说明问题,我们先考…

低代码平台和无代码平台哪个更适合开发企业管理系统?

编者按:本文分析了开发企业管理系统所需要的平台特性,并根据这些特点和低代码无代码的优劣比较,得出低代码平台更适合开发企业管理系统。关键词:私有化部署,可视化设计,源码交付,数据集成&#…

研究人员在野外发现大量的信息窃取者 “Stealc “的样本

一个名为Stealc的新信息窃取者正在暗网上做广告,它可能成为其他同类恶意软件的一个值得竞争的对象。 "SEKOIA在周一的一份报告中说:"威胁行为者将Stealc作为一个功能齐全、随时可用的窃取者,其开发依赖于Vidar、Raccoon、Mars和Re…

LeetCode 73. 矩阵置零

LeetCode 73. 矩阵置零 难度:middle\color{orange}{middle}middle 题目描述 给定一个 KaTeX parse error: Double subscript at position 3: _m_̲ x _n_ 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法…

Power Query 再谈日期表

Power Query 再谈日期表 需要附件的朋友可以点赞关注后,在公众号(焦棚子)后台回复 日期表 三个字即可领取。 一、背景 在 Power BI 或者 Power Pivot 做业务分析中,必不可少的就是日期表。我们继续优化调制出符合国人习惯日期表。 本次更新&#xff…

harbor 仓库迁移升级

harbor 仓库迁移升级 harbor仓库安装数据传输仓库切换版本 v1.8.0 v2.3.5 harbor仓库安装 环境准备:安装docker详见:docker 的介绍和部署,并下载docker-compose详见:docker 三剑客compose。 现有支持的安装harbor仓库的方式有两…

犹太教、基督教、伊斯兰教的区别与联系

一、犹太教、基督教、伊斯兰教的简明关系图二、犹太教、基督教、伊斯兰教的主要区别注:弥赛亚(希伯莱语)就是基督(希腊语),意思是“救世主”。注:伊斯兰教的观点是:穆罕默德不是伊斯…

华为OD机试 - 优雅数组(Python)【2023-Q1 新题】

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

S5P6818_系统篇(2)源码编译及烧录

源码获取 源码获取和操作流程 1.下载liunux下的系统制作脚本,可以烧录系统和构建镜像 git clone https://github.com/friendlyarm/sd-fuse_s5p6818.git 如果出现git错误可使用如下方法: git config --global http.sslverify false 2.阅读该工具rea…

Linux文件系统操作与磁盘管理

查看磁盘和目录的容量 使用 df 命令查看磁盘的容量 df在实验楼的环境中你将看到如下的输出内容: 但在实际的物理主机上会更像这样: 物理主机上的 /dev/sda2 是对应着主机硬盘的分区,后面的数字表示分区号,数字前面的字母 a 表示…

Magisk Yyds.Msu定制方案 原理 ROOT隐藏 风控绕过

介绍 与市面上所有方案都不一样,基于最新Magisk代码分支,通过修改Magisk的挂载方式,解决了root隐藏的问题,可绕过如momo独立进程,挂载检测等各种风控,并因为个人项目原因,默认把Zygisk禁用&…

【手把手一起学习】(二) Altium Designer 20 工程创建

1 Altium Designer 20 工程创建 手把手一起学习,从零开始制作一款属于自己的STM32核心板,规范AD使用,养成良好习惯 1.1 新建工程 首先,创建工程,操作如图所示: 选择默认工程,输入工程名字和路…

吊炸天的1500亿,到底有多魔性

超1500亿的数据安全规模 数据安全是近几年来最热门的行业话题,数字化转型使得数据作为新型生产要素的重要性日益凸显,数据经济已成为经济发展的核心驱动力,数字经济的蓬勃催生了巨大的数据安全需求。 临近春节前夕,在工信部、国…

Java API 文档搜索引擎

1. 认识搜索引擎:在搜狗搜索的搜索结果页中, 包含了若干条结果, 每一个结果包含了图标, 标题, 描述, 展示URL等搜索引擎的本质:输入一个查询词, 得到若干个搜索结果, 每个搜索结果包含了标题, 描述, 展示URL和点击URL2. 搜索引擎思路:2.1 搜索的核心思路:当前我们有很多的网页(…

日志收集笔记(架构设计、Log4j2项目初始化、Lombok)

1 架构设计 ELK 技术栈架构设计图: 从左往右看, Beats:主要是使用 Filebeat,用于收集日志,将收集后的日志数据发送给 Kafka,充当 Kafka 的生产者Kafka:高性能消息队列,主要起缓冲…