MySQL数据库总结

作者:爱塔居-CSDN博客

专栏:数据库

目录

前言

一、数据库操作

1.1 创建数据库

1.2 显示当前数据库

1.3 使用数据库 

1.4 删除数据库

二、表的操作

2.1 查看表结构

 2.2 创建表

2.3 删除表

三、表的增删改查操作(CRUD)

3.1 新增

3. 2 查询

3.2.1 全列查询

3.2.2 指定列查询

 3.2.3 查询字段为表达式

3.2.4 别名

 3.2.5 去重

3.3.5 排序

3.2.6 条件查询:WHERE

3.3 修改

3.4  删除


前言

数据库相比于文件存储数据,更具有安全性、利于数据查询管理存储海量数据、在程序中方便控制。数据库大体分为关系型数据库和非关系型数据库。常用关系型数据库如:Oracle、MySQL、SQL Server。这篇博客讲解的是MySQL。


一、数据库操作

1.1 创建数据库

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:指定数据库字符集的校验规则
示例:
🍟创建名为 db_test1 的数据库
CREATE DATABASE db_test1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则
是:utf8_ general_ ci
🍠如果系统没有 db_test2 的数据库,则创建一个名叫 db_test2 的数据库,如果有则不创建
CREATE DATABASE IF NOT EXISTS db_test2;
🍍如果系统没有 db_test 的数据库,则创建一个使用 utf8mb4 字符集的 db_test 数据库,如果有则
不创建
CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4;
说明:MySQL的utf8编码不是真正的utf8,没有包含某些复杂的中文字符。MySQL真正的utf8是使用utf8mb4,建议大家都使用utf8mb4.

1.2 显示当前数据库

SHOW DATABASES;

1.3 使用数据库 

use 数据库名;

1.4 删除数据库

DROP DATABASE [IF EXISTS] db_name;

 示例:

🍧删除名为db_test1的数据库

drop database db_test1;

🍨如果存在名为db_test1的数据库,删除掉该数据库(一般情况是使用这个,会更加严谨)

drop database if exist db_test1;

二、表的操作

注意:需要操作数据库中的表时,必须先使用该数据库

2.1 查看表结构

desc 表名;

 2.2 创建表

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

说明:datatype指代数据类型

1.数值类型:

整数类型常用INT、BIGINT

浮点数和双精度浮点数类型:FLOAT(占用4个字节)和DOUBLE(占用8个字节)

定点数类型:DECIMAL,用于需要精确小数的场景。

2.日期和时间类型:

常用DATETIME、TIMESTAMP,用于存储日期和时间信息,提供不同精度的日期和时间值。

数据类型大小说明对应java类型适用场景
DATETIME8字节范围从1000念到9999年,不会进行时区的检索及转换。java.util.Date、java.sql.Timestamp适用于需要人类可读的日期和时间表示场景,例如日历应用
TIMESTAMP4字节范围从1970年到2038年,自动检索当前时区并进行转换。java.util.Date、java.sql.Timestamp适用于需要计算时间间隔、排序或进行时间计算的场景,例如数据库记录的时间戳、日志数据戳

3.字符串类型:

CHAR和VARCHAR,用于存储定长和变长字符串。

TEXT和BLOB,用于存储大文本和二进制数据。

ENUM和SET,用于存储枚举和集合类型的值。

4.二进制字符串类型:

BINARY和VARBINARY,用于存储定长和变长二进制数据。

BLOB,用于存储二进制数据。

5.其他特殊类型:

BIT,用于存储二进制数。

JSON,用于存储JSON对象或数组。

 可以使用comment增加字段说明

示例:

create table stu_test(
    id int;
    name varchar(20) comment '姓名',
    password varchar(50) comment '密码',
    age int,
    sex varchar(1)
);

2.3 删除表

DROP TABLE [IF EXISTS] tb1_name

示例:
删除stu_test表

drop table stu_test;

如果存在stu_test表,则删除stu_test表

drop table if exists stu_test;

三、表的增删改查操作(CRUD)

注释:在 SQL 中可以使用 “-- 空格 + 描述 来表示注释说明
CRUD 即增加 (Create) 、查询 (Retrieve) 、更新 (Update) 、删除 (Delete) 四个单词的首字母缩写。

3.1 新增

INSERT INTO table_name
[(column[,column]...)]
    VALUES (value_list)[,(value_list)]... 

value_list:value,[,value]...
示例:
-- 创建学生表
create table stu_test(
    id int;
    name varchar(20) comment '姓名',
    password varchar(50) comment '密码',
    age int comment '年龄',
    sex varchar(1) comment '性别'
);
单行数据 + 全列插入
-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO student VALUES (1,'张三', '111', 13,'男');
INSERT INTO student VALUES (2,'李四', '222', 14,'女');
多行数据+指定列插入
-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id, name, age) VALUES
(1,'张三',13),
(2,'李四',14);

3. 2 查询

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

3.2.1 全列查询

SELECT * FROM stu_test;

3.2.2 指定列查询

--指定列的顺序不需要按定义表的顺序来
SELECT id,age,name FROM stu_test;

 3.2.3 查询字段为表达式

-- 表达式不包含字段
SELECT id, name, 10 FROM exam_result;
-- 表达式包含一个字段
SELECT id, name, english + 10 FROM exam_result;
-- 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam_result;

3.2.4 别名

SELECT column [AS] alias_name[...] FROM table_name;

 3.2.5 去重

--查询exam_result表中math列数据,分数重复的,只显示一个
SELECT DISTINCT math FROM exam_result;

3.3.5 排序

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

示例:

-- 查询同学姓名和 qq_mail,按 qq_mail 排序显示
--升序
SELECT name, qq_mail FROM student ORDER BY qq_mail;
--降序
SELECT name, qq_mail FROM student  ORDER BY qq_mail DESC;
-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result
ORDER BY math DESC, english, chinese;

3.2.6 条件查询:WHERE

基础查询:
-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
-- 查询总分在 200 分以下的同学
SELECT name, chinese + math + english 总分 FROM exam_result 
 WHERE chinese + math + english < 200;

ADN和OR:

-- 查询语文成绩大于80分,且英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 and english > 80;
-- 查询语文成绩大于80分,或英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 or english > 80;
BETWEEN ... AND ...
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
模糊查询:LIKE
--匹配任意多个(包括0个)字符
 --可以匹配到陈x、陈xx、陈xxx....
SELECT name FROM exam_result WHERE name LIKE '陈%'; 
-- _ 匹配严格的一个任意字符
--可以匹配到陈x
SELECT name FROM exam_result WHERE name LIKE '陈_';

3.3 修改

UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]
示例
UPDATE stu_test set age=20 where name='李四';

优先级顺序:

where>group by>having>order by

3.4  删除

DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
示例
DELETE FROM stu_test WHERE name='李四';

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

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

相关文章

改ip地址软件手机怎么弄?分享操作指南与注意事项

随着移动互联网的普及&#xff0c;手机已成为我们日常生活中不可或缺的工具。在某些情况下&#xff0c;我们可能需要更改手机的IP地址&#xff0c;以满足特定的网络需求或实现某些功能。然而&#xff0c;对于许多用户来说&#xff0c;如何在手机上更改IP地址可能是一个相对陌生…

clickhouse与oracle传输数据

参考 https://github.com/ClickHouse/clickhouse-jdbc-bridge https://github.com/ClickHouse/clickhouse-jdbc-bridge/blob/master/docker/README.md clickhouse官方提供了一种方式&#xff0c;可以实现clickhouse与oracle之间传输数据&#xff0c;不仅仅是oracle&#xff0…

ShardingSphere 5.x 系列【25】 数据分片原理之 SQL 解析

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 分片执行流程1.1 Simple Push Down1.2 SQL Federation2. SQL 解析2.1 解析…

代码随想录算法训练营DAY38|C++动态规划Part.1|动态规划理论基础、509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯

文章目录 动态规划理论基础什么是动态规划动态规划的解题步骤DP数组以及下标的含义递推公式DP数组初始化DP数组遍历顺序打印DP数组动态规划五部曲 动态规划应该如何debug 509.斐波那契数什么是斐波那契数列动态规划五部曲确定dp数组下标以及含义确定递推公式dp数组如何初始化确…

场景文本检测识别学习 day07(BERT论文精读)

BERT 在CV领域&#xff0c;可以通过训练一个大的CNN模型作为预训练模型&#xff0c;来帮助其他任务提高各自模型的性能&#xff0c;但是在NLP领域&#xff0c;没有这样的模型&#xff0c;而BERT的提出&#xff0c;解决了这个问题BERT和GPT、ELMO的区别&#xff1a; BERT是用来…

翻译《The Old New Thing》 - Why .shared sections are a security hole

Why .shared sections are a security hole - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20040804-00/?p38253 Raymond Chen 2004年08月04日 许多人会推荐使用共享数据节作为在应用程序的多个实例之间共享数据的一种方式。这听起来是个好…

走向大规模应用之前,DePIN 如何突破技术、数据与市场之网

近期&#xff0c;随着分布式物理基础设施网络&#xff08;DePIN&#xff09;的快速演变&#xff0c;一个旨在利用区块链技术彻底改造传统基础设施模型的新兴生态系统正在逐渐浮现。2024 年 4 月&#xff0c;以 peaq 为代表的 DePIN 项目成功筹集了 1500 万美元用于生态系统的扩…

通过 API从 0 到 1 构建 本地 GPTs——1.构建Builder‘s Prompt

目的&#xff1a;帮助小白用户生成结构化 prompt 功能清单 搭建本地 gpts 能力&#xff0c;构建本地企业知识库助手Builder’s Prompt -对话引导构建 prompt 示例&#xff0c;生成助手信息function_call的用法prompt 示例 GPTs 的 Create 能力 用于引导用户构建结构化的 pr…

深度学习的瓶颈是什么!

深度学习主要的瓶颈&#xff1a; 数据依赖与标注问题&#xff1a;深度学习模型通常需要大量的标注数据来进行训练。然而&#xff0c;获取大量的标注数据不仅成本高昂&#xff0c;而且在某些领域&#xff08;如医疗、金融等&#xff09;中可能难以获取足够的标注数据。此外&…

python-excel自动化-openpyxl

openpyxl学习笔记 创建或打开表格存储和遍历数据设置单元格风格过滤器和排序更改工作表的背景颜色合并单元格冻结窗口数字格式公式图像图表条形图折线图散点图 创建或打开表格 # 创建 import datetime from openpyxl import Workbook # 实例化 wb Workbook() # 激活 work…

四:物联网ARM开发

一&#xff1a;ARM体系结构概述 1&#xff1a;控制外设led灯还有一些按键这些就要用到gpio&#xff0c;采集传感器的数据需要adc进行转化数据格式&#xff0c;特殊的外设和传感器是通过特殊的协议接口去进行连接的比如一些轴传感器和主控器的连接是通过spi&#xff0c;IIC 控制…

Check the `candidate.safety_ratings` to see if the respoe was blocked.

ValueError&#xff1a;“response.text”快速访问器仅适用于简单&#xff08;单“部分”&#xff09;文本响应。此响应不是简单的文本。请改用“result.parts”访问器或完整的“result.candidates[index].content.parts”查找。期号 #170 谷歌-双子座/生成-人工智能-python Gi…

JavaScript 日期对象

在 JavaScript 中&#xff0c;你可以使用 Date 对象来处理日期和时间。以下是一些常见的 Date 对象的使用方法&#xff1a; 1、创建日期对象&#xff1a; // 创建一个表示当前日期和时间的 Date 对象 let currentDate new Date();// 创建一个特定日期和时间的 Date 对象 let…

GPB | RegVar:基于深度神经网络的非编码区突变功能预测新方法

Genomics, Proteomics & Bioinformatics &#xff08;GPB&#xff09;发表了由军事医学研究院辐射医学研究所张成岗研究员、周钢桥研究员和卢一鸣副研究员团队完成的题为“RegVar: Tissue-specific Prioritization of Noncoding Regulatory Variants”的方法文章。我们的“…

数据结构 - 栈

目录 一. 栈的概念 二. 栈的结构 三. 栈的实现 1. 实现栈的两种方式 链表实现栈 顺序表实现栈 选择依据 栈的创建 栈的初始化 栈的销毁 入栈 出栈 获取栈顶元素 判断栈是否为空 获取栈中有效数据的个数 一. 栈的概念 栈&#xff08;Stack&#xff09;是一种重要…

VScode Failed to parse remote port from server output

在使用VScode 在连接AutoDL 过程中一直连接不上&#xff0c;显示 Failed to parse remote port from server output 在网上查了很多资料&#xff0c;貌似的没啥用。和我有相同 error 的可以尝试修改setting.json 文件。 添加这条命令&#xff08;我的json文件里面没有&#…

共享购:融合社交分享与消费返利的创新电商模式

共享购电商模式是一种独特的商业模式&#xff0c;巧妙地将社交分享与消费返利结合&#xff0c;让消费者在购物的同时&#xff0c;也能通过平台资产奖励实现价值的双重增长。该平台资产体系主要由共享值和共享积分两大要素构成&#xff0c;共同构建了一个充满活力的电商生态系统…

区块链技术与应用学习笔记(8-9节)——北大肖臻课程

目录 8.挖矿 对于全节点和轻节点思考问题&#xff1f; ①全节点在比特币的主要作用&#xff1f; ②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块&#xff0c;重新开始挖矿。节点这么做…

vivado 使用“链路 (Links)”窗口查看和更改链路设置

使用“链路 (Links) ”窗口查看和更改链路设置 创建链路后 &#xff0c; 就会将其添加到“ Links ”视图 &#xff08; 请参阅下图 &#xff09; 中 &#xff0c; 该视图是更改链路设置和查看状态的主要方法 &#xff0c; 也是最佳方法。 “ Links ”窗口中的每一行都对应 1 …

pymilvus创建多向量

pymilvus创建多向量 从 Milvus 2.4 开始&#xff0c;引入了多向量支持和混合搜索框架&#xff0c;单个collection可以支持10个向量字段。不同的向量字段可以表示不同的方面、不同的embedding模型甚至表征同一实体的不同数据模态。该功能在综合搜索场景中特别有用&#xff0c;例…