sql语句精讲

news2024/10/2 1:35:19

 目录

一、MySql的细节知识

SQL语句的结束

SQL语句的大小写

SQL语句中的空格

SQL查询结果并排序

WHERE和ORDER BY的位置

常用数据类型

MYSQL比较运算符

MYSQL算术运算符​编辑

MYSQL逻辑运算符

运算符的优先级

二、MySql数据库的基本操作

1.创建数据库

2.选择数据库,使用数据库名

3.删除数据库 

4.MySQL注释

三、MYSQL数据表的基本操作

1.创建数据表 CREATE TABLE <表名>

2.插入数据:INSERT语句

2.1 基本插入

2.2 插入多行数据

2.3 插入部分列

2.4 插入JSON数据

3.更新数据:UPDATE语句

3.1 更新单个字段

3.2更新多个字段

3.3 使用条件表达式

 3.4使用ORDER BY和LIMIT

 3.5利用JOIN进行复杂更新

 3.6使用子查询更新

4.删除数据:DELETE语句

4.1 DELETE语句的基本语法

 4.2删除特定行

 4.3 使用比较运算符

 4.4 使用逻辑运算符

4.5删除满足IN条件的行

4.6 使用LIKE操作符进行模糊删除

注意事项

写在最后的话


一、MySql的细节知识

SQL语句的结束

多条SQL语句必须以英文分号(;)分隔。MySQL如同多数DBMS一样,不需要在单条SQL语句后加分号。但特定的DBMS可能必须在单条SQL语句后加上分号。当然,如果愿意可以总是加上分号。事实上,即使不一定需要,但加上分号肯定没有坏处。如果你使用的是mysql命令行,必须加上
分号来结束SQL语句。

#加分号
SELECT * FROM TABLE_name;
#不加分号
SELECT * FROM TABLE_name

SQL语句的大小写

请注意,SQL语句不区分大小写,因此SELECT与select是相同的。同样,写成Select也没有关系。许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更易于阅读和调试。

#小写
select * from person
#大写
SELECT * FROM person
#大小写混合
SELECT * from person

不过,一定要认识到虽然SQL是不区分大小写的,但有些标识符(如数据库名、表名、列名)可能不同。

SQL语句中的空格

在处理SQL语句时,其中所有空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行。

SELECT * from TABLE_name
#空格不影响结果
SELECT * from      TABLE_name
#换行不影响结果
SELECT *
FROM   TABLE_name

SQL查询结果并排序

升序:ASC

降序:DESC

#ASC升序
select * from person order by age ASC;  
#DESC降序
select * from person order by age DESC;  

其中,默认为升序方向;如需降序,必须显式加上DESC。

可以对多个列进行排序,并且多个列之间的排序方向可以不同。

WHERE和ORDER BY的位置

1.group  by:从英文上理解  就是分组的意思。需要和  聚合函数(例如:max(),count(),avg()等)配合使用,使用时至少有一个分组标识字段(例如某一列的列名)。

2.oder  by :从英文上理解就是排序。一般后面跟上某一列的列名,然后查询到的数据会以该列的大小顺序进行排序显示,默认的是ASC(从小到大排列),desc(大到小排列)

3. where: 对查询到的内容进行筛选,where后面跟上限定条件,where使用在分组和排序之后。

4. having:作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

ORDER BY子句的位置】 在给出ORDER BY子句时,应该保证它位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY之后。使用子句的次序不对将产生错误消息。

WHERE子句的位置】 在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。

常用数据类型

MYSQL比较运算符

MYSQL算术运算符

MYSQL逻辑运算符

运算符的优先级

二、MySql数据库的基本操作

1.创建数据库

创建数据库语句:create database [数据库名]

#创建数据库
create database test_name 

2.选择数据库,使用数据库名

#使用数据库
use test_name;

3.删除数据库 

语句:DROP DATABASE [IF EXISTS 数据库名]

“IF EXISTS”表示当数据库名test_name存在时,才执行删除语句,避免报错。

#删除数据库
DROP DATABASE IF EXISTS test_name;

4.MySQL注释

  • 单行注释使用#或 --,不同之处在于,#后面直接跟注释,–后面加个空格才能写注释

  • 多行注释使用/* */注释符。/用于注释内容的开头,/用于注释内容的结尾。

三、MYSQL数据表的基本操作

1.创建数据表 CREATE TABLE <表名>

#创建数据库基本语法
CREATE TABLE table_name (
  column1 datatype constraint,
  column2 datatype constraint,
  column3 datatype constraint,
  ...
  PRIMARY KEY (one or more columns)
);
#例子:创建student表
create table student (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  age int(3) NOT NULL ,
  major varchar(50)
  PRIMARY KEY (id)
);

其中,CREATE TABLE关键字表示创建数据表,table_name表示数据表的名称,column1、column2、column3等表示数据表中的列名,datatype表示列的数据类型,constraint表示列的约束条件,例如NOT NULL、UNIQUE、DEFAULT等。

在通用的SQL语句中,PRIMARY KEY约束用于定义数据表的主键,主键可以由一个或多个列组成,用括号括起来并用逗号分隔。

2.插入数据:INSERT语句

插入数据是数据库操作的基础,了解INSERT语句的多种用法对于高效地管理MySQL数据库至关重要。

2.1 基本插入

最基本的INSERT语句用于向表中添加单行数据。其语法如下:

#基本语法
INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);
#例子
INSERT INTO student (name, age, major) VALUES ('张三',19, '计算机科学与技术');

2.2 插入多行数据

一次性插入多行数据,这对于批量数据处理非常有用。语法如下:

#基本语法
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...;
#例子
INSERT INTO student(name, age) VALUES ('张三', 34), ('李四', 25);

2.3 插入部分列

如果表中的其他列有默认值或允许为空,可以只插入部分列的数据。例如:

#基本语法
INSERT INTO table_name (column1) VALUES (value1);
#例子
INSERT INTO student(major) VALUES ('人工智能');

2.4 插入JSON数据

对于存储JSON数据的列,可以这样插入:

INSERT INTO table_name (json_column) VALUES ('{"key": "value"}');

通过这些丰富多样的INSERT用法,你可以灵活地处理各种数据插入场景,从而更有效地管理MySQL数据库。

3.更新数据:UPDATE语句

在MySQL中,UPDATE语句是用来修改表中现有数据的强大工具。它的基本语法

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

3.1 更新单个字段

最基本的用法是更新表中单个字段的值。例如,假设我们要将学生表中张三的年龄更新为20:

UPDATE student
SET quantity = 20
WHERE name = '张三';

3.2更新多个字段

UPDATE可以同时修改多个字段。例如,张三的名称改为“李四”,年龄改为21:

UPDATE student
SET name = '李四', age = 21
WHERE name = '张三';

3.3 使用条件表达式

可以使用更复杂的条件表达式来更新特定的数据。例如,增加所有年龄少于10的人的age:

UPDATE student
SET age= age+ 10
WHERE age< 10;

 3.4使用ORDER BY和LIMIT

在某些情况下,你可能需要按特定顺序更新记录,并限制更新的行数。例如,仅更新年龄最小的两位同学的专业:

UPDATE student
SET major= '计算机技术'
ORDER BY age DESC
LIMIT 2;

 3.5利用JOIN进行复杂更新

当需要根据其他表中的数据来更新一个表时,可以使用JOIN语句。例如,如果我们有一个供应商表suppliers和水果表fruits,且想根据供应商的某些条件来更新水果的价格,可以这样做:

UPDATE fruits
JOIN suppliers ON fruits.supplier_id = suppliers.id
SET fruits.price = fruits.price * 1.05
WHERE suppliers.country = 'China';

 3.6使用子查询更新

在某些情况下,你可能需要根据从同一表或不同表中检索到的数据来更新记录。例如,假设你想将最畅销水果的价格提高10%:

UPDATE fruits
SET price = price * 1.1
WHERE name = (
    SELECT name
    FROM sales
    GROUP BY name
    ORDER BY SUM(quantity) DESC
    LIMIT 1
);

4.删除数据:DELETE语句

在MySQL中,DELETE语句是用来删除表中一行或多行数据的强大工具。理解其多样的用法对于有效管理数据库至关重要。以下是一些常用的DELETE语句用法:

4.1 DELETE语句的基本语法

基本的DELETE语句格式如下:

DELETE FROM table_name WHERE condition;
  • table_name 是你想要从中删除记录的表名。
  • WHERE condition 是用来指定哪些行应该被删除的条件。如果省略了WHERE子句,所有行都会被删除,这将清空表但不会删除表本身。

 4.2删除特定行

根据特定条件删除行。例如,删除学生表中所有“张三”的记录:

DELETE FROM student WHERE name = '张三';

 4.3 使用比较运算符

可以使用比较运算符(如<><=>=)来删除行。例如,删除所有年龄少于20的学生:

DELETE FROM fruits WHERE age< 20;

 4.4 使用逻辑运算符

使用AND、OR等逻辑运算符来组合条件。例如,删除名称为“Apple”且数量小于10的记录:

DELETE FROM fruits WHERE name = 'Apple' AND quantity < 10;

4.5删除满足IN条件的行

当需要删除匹配特定列表中值的行时,可以使用IN。例如,删除所有名称是“Apple”,“Banana”,或“Orange”的水果:

DELETE FROM fruits WHERE name IN ('Apple', 'Banana', 'Orange');

4.6 使用LIKE操作符进行模糊删除

使用LIKE操作符删除满足模糊匹配条件的行。例如,删除所有名字以“A”开头的水果:

DELETE FROM fruits WHERE name LIKE 'A%';

注意事项

        数据表是一种非常重要的数据结构,它可以用来存储和管理大量的数据。在使用数据表时,有几个基本的操作需要注意。

        创建数据表:创建数据表时需要定义表名、列名和数据类型等信息。在定义列名时应该尽可能清晰地描述列的含义和数据类型,以方便后续的操作和查询。同时还需要考虑数据表的主键、外键和索引等约束条件,以保证数据的一致性和完整性。
        查看数据表:查看数据表时可以使用SELECT语句,通过指定表名和列名等条件,可以查看表中的数据。同时也可以使用DESCRIBE语句查看数据表的结构信息,包括表名、列名、数据类型和约束条件等。
        修改数据表:在数据表的使用过程中,可能需要修改表的结构信息,包括添加、删除和修改列等。在进行修改操作时需要考虑数据表的约束条件,以避免影响数据的完整性和一致性。
        删除数据表:删除数据表时需要非常小心,因为数据表中存储的数据可能非常重要。在删除数据表时需要确认是否备份了相关数据,并且要避免误删操作。同时还要考虑数据表的约束条件,以避免影响其他数据表的使用。
        需要注意的是,不同的数据库系统可能会有不同的语法和操作方式,因此在具体操作时需要根据所使用的数据库系统进行相应的调整。此外,在进行任何操作之前,一定要备份数据,以防止数据丢失。

写在最后的话

        通过本篇博客,我们深入探讨了MySQL中的数据修改基础操作:MySQL的细节知识、INSERT、UPDATE、DELETE语句。从创建一个简单的水果表,学生表开始,我们逐步展示了如何插入新数据、更新现有数据,以及删除不需要的数据。这些操作是数据库管理中非常重要的技能。掌握它们不仅有助于管理和维护数据库中的数据,还能提高你处理数据的灵活性和效率。

        请记住,实践是学习数据库管理的关键。我建议你在自己的数据库环境中创建这样的表,并尝试执行这些操作。随着实践的增多,你将对MySQL的使用更加得心应手。如果在学习过程中遇到任何问题,不妨继续探索或寻求帮助。祝你在MySQL的学习之旅上取得更多进步!

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

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

相关文章

kubenetes证书续签

转载&#xff1a;k8s证书续签 1 检查证书年限 kubeadm certs check-expiration 2 对现有证书进行备份 # 备份kubeadm cp -ra /usr/bin/kubeadm /usr/bin/kubeadm.bak # 备份证书 cp -ra /etc/kubernetes /etc/kubernetes.bak 3 重新编译kubeadm 拉取k8s仓库代码 git clone…

【数据分析--Pandas实战指南在真实世界数据中的应用】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本阶段和大家一起分享和探索数据分析—基础介绍&#xff0c;本篇文章主要讲述了&#xff1a;数据分析的介绍&#xff0c;Python开源库&#xff0c;配置Jupyter&#xff0c;Pandas读取数据…

echarts 漏斗图 渐变金字塔

使用echarts实现金字塔效果&#xff0c;颜色渐变&#xff0c;左右显示其对应的值 效果&#xff1a; 如果要实现一个正三角的形状&#xff0c;需要在data数组中&#xff0c;将value赋值成有序递增&#xff0c;bl代表他的分值&#xff0c;显示在左侧。 var data [{name: "…

NSS [SWPUCTF 2022 新生赛]file_master

NSS [SWPUCTF 2022 新生赛]file_master 开题&#xff0c;一眼文件上传。 network看看返回包。后端语言是PHP。 除了文件上传还有个查看文件功能。 起手式查询/etc/passwd&#xff0c;发现查询方法是GET提交参数&#xff0c;后端使用file_get_contents()函数包含文件。同时有op…

MySQL基础练习题21-按日期分组销售产品

目录 题目 准备数据 分析数据 总结 题目 找出每个日期、销售的不同产品的数量及其名称。每个日期的销售产品名称应按词典序排列。 返回按 sell_date 排序的结果表。 准备数据 ## 创建库 create database db; use db;## 创建表 Create table If Not Exists Activities (s…

初阶数据结构4 二叉树

1. 树 1.1 树的概念与结构 树是⼀种⾮线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;⽽叶朝下的。 有⼀个特殊的结点&#…

Flink实时数仓(六)【DWD 层搭建(四)交易域、互动域、用户域实现】

前言 今天的任务是完成 DWD 层剩余的事实表&#xff1b;今年的秋招开得比往年早&#xff0c;所以要抓紧时间了&#xff0c;据了解&#xff0c;今年的 hc 还是不多&#xff0c;要是晚点投铁定寄中寄了&#xff1b; 今天还是个周末&#xff0c;不过记忆里我好像整个大学都没有好好…

如何实现ElementUI表单项label的文字提示?

在Vue和ElementUI的丰富组件库中,定制化表单是常见的需求之一。那么如何在表单项label后添加文字提示,以提升用户体验呢? 首先我们来看一下效果图: 这里我们鼠标移动到❓图标上就会出现提示 在 ElementUI 中,el-form-item 组件允许使用 slot 自定义 label。通过在 el-fo…

Boost:asio网络编程从同步到异步

文章目录 同步服务器客户端服务端 异步服务器(有问题)异步服务器优化 在学TCP的时候&#xff0c;写的第一个服务器就是一个echo服务器&#xff0c;那在Boost网络编程中&#xff0c;自然也先写一个echo服务器练练手 同步服务器 客户端 #include <iostream> #include &l…

<数据集>BDD100K人车识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;15807张 标注数量(xml文件个数)&#xff1a;15807 标注数量(txt文件个数)&#xff1a;15807 标注类别数&#xff1a;7 标注类别名称&#xff1a; [pedestrian, car, bus, rider, motorcycle, truck, bicycle] 序号…

Java-变量,运算符,输入与输出

目录 一&#xff0c;语法基础 1.基本Java程序 2.语法基础 2.1 变量 2.2 常量限制(fiinal)类比C中的const 2.3 类型转化 2.4 运算符 2.5 表达式 2.5 输入与输出 2.5.1 输入 2.5.2 输出 一&#xff0c;语法基础 1.基本Java程序 public class Main{public static void…

差分放大电路

目录 引出 复合管 直接耦合放大电路 问题: 怎么抑制 初代电路(已引入负反馈之后) 分析 怎么解决 镜像电路 两个概念 分析直流通路: 分析交流电路: 差分放大电路的分析 交流通路 简化 H参数等效 可以得到 其他接法 引出 复合管 目的:获得更大的放大倍数 多只…

3个二创文案生成器,让文案创作变简单

在当今数字时代&#xff0c;内容创作已经成为了一项非常重要的工作。无论是为了推广产品、营销服务&#xff0c;还是仅仅为了吸引读者&#xff0c;优质的文案都是至关重要的。然而&#xff0c;对于许多人来说&#xff0c;写出令人印象深刻的文案并不容易。这就是为什么二创文案…

基于Django框架的挂号诊疗系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…

【优秀python系统案例】基于python Flask的电影票房数据爬取与可视化系统的设计与实现

第1章 绪论 1.1 研究背景及意义 进入21世纪&#xff0c;特别是第二个十年&#xff0c;世界互联网取得了惊人的快速发展。根据分析师玛丽米克尔 (Mary Mikel) 2016年发布的一份互联网趋势报告&#xff0c;到2016年年中&#xff0c;全球互联网用户超过30亿&#xff0c;约占全球…

职场上的人情世故,你知多少?

对于职场新人来说&#xff0c;在学习人情世故时&#xff0c;不仅要学会哪些事情该做&#xff0c;还需要知道哪些事情千万不能做&#xff0c;这样才能让自己起码不会得罪别人&#xff0c;甚至得到更多的晋升机会。学会下面的四大职场规则&#xff0c;能让你的职场生涯更顺利。 …

MUSE Multi-View Contrastive Learningfor Heterophilic Graphs

发表于:CIKM 推荐指数: #paper/⭐ 一句话总结:融合了GCN(A,X)和GCN(A,I),创新性不足,因此只能B会 流程: 融合部分: h i f h i s λ i h i c h_i^fh_i^s\lambda_ih_i^c hif​his​λi​hic​ 由于有n个 λ \lambda λ.因此作者加了如下优化: L ϕ ∑ i 1 N λ i s ( h i …

贪心算法之货仓选址问题

#include<stdio.h> #include<stdlib.h> #include<math.h>//贪心算法之货仓选址问题/*** void* p是万能指针&#xff0c;可以和其它任意类型的指针进行转换&#xff0c;前提是确保转换是合法的*/ //写好用于qsort的比较函数&#xff0c;这里写的函数一般用于…

【K8S】为什么需要Kubernetes?

文章目录 1 什么是Kubernetes&#xff1f;2 三种常见的应用部署方式2.1 传统部署2.2 虚拟化部署2.3 容器化部署 3 Kubernetes的特点写在最后 1 什么是Kubernetes&#xff1f; Kubernetes是 一个开源的&#xff0c;用于管理云平台中多个主机上的容器化应用&#xff0c;Kubernet…

分享6款有助于写论文能用到的软件app!

在学术写作中&#xff0c;选择合适的软件和工具可以大大提高效率和质量。以下是六款有助于写论文的软件app推荐&#xff0c;其中特别重点介绍千笔-AIPassPaPer这款AI原创论文写作平台。 1. 千笔-AIPassPaPer 千笔-AIPassPaPer是一款功能全面且高效的AI原创论文写作平台。它能…