首页 > 数据库 >SQL入门全攻略(二)

SQL入门全攻略(二)

时间:2024-06-04 20:33:19浏览次数:26  
标签:... 入门 students age 全攻略 SQL WHERE SELECT name

一、引言

在上一篇文章中,我们初步了解了SQL的基础知识和概念。今天,我们将深入探讨SQL的增删查改操作,并学习一些高级用法,让你的SQL技能更上一层楼。

二、SQL基础增删查改操作

1. 增加

使用INSERT INTO语句向表中插入新记录。

INSERT INTO 表名 (列1, 列2, 列3, ...)  
VALUES (值1, 值2, 值3, ...);

例如,向students表中插入一条新记录:

INSERT INTO students (id, name, age)  
VALUES (1, '张三', 20);

2. 删除

使用DELETE FROM语句从表中删除记录。

DELETE FROM 表名 WHERE 条件;

例如,删除students表中年龄为20的学生:

DELETE FROM students WHERE age = 20;

3. 查找

使用SELECT语句从表中查询数据。

SELECT 列1, 列2, ...  
FROM 表名  
WHERE 条件;

例如,查询students表中所有年龄为20的学生的姓名和id:

SELECT name, id FROM students WHERE age = 20;

4. 修改

使用UPDATE语句修改表中的记录。

UPDATE 表名  
SET 列1 = 值1, 列2 = 值2, ...  
WHERE 条件;

例如,将students表中id为1的学生的年龄修改为21:

UPDATE students  
SET age = 21  
WHERE id = 1;

三、SQL高级用法

1. WHERE子句

用于过滤查询结果。这个经常使用,上面已经给出了示例,这里就不再赘述了。

2. ORDER BY子句

用于对查询结果进行排序。

SELECT 列1, 列2, ...  
FROM 表名  
ORDER BY 列名 ASC|DESC;

例如,按年龄升序查询students表:

SELECT * FROM students ORDER BY age ASC;
-- ASC/DESC分别表示升序和降序

3. LIKE 语法与通配符

用于模糊查询。

通配符描述
%替代0个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]或者[!charlist]不在字符列中的任何单一字符
SELECT 列1, 列2, ...  
FROM 表名  
WHERE 列名 LIKE 模式;

例如,查询名字以“张”开头的学生:

SELECT * FROM students WHERE name LIKE '张%';

4. IN 语句

用于指定多个可能的值。

SELECT 列1, 列2, ...  
FROM 表名  
WHERE 列名 IN (值1, 值2, ...);

例如,查询id为1或2的学生:

SELECT * FROM students WHERE id IN (1, 2);

5. BETWEEN 语句

用于指定一个值的范围。

SELECT 列1, 列2, ...  
FROM 表名  
WHERE 列名 BETWEEN 值1 AND 值2;

例如,查询年龄在20到25之间的学生:

SELECT * FROM students WHERE age BETWEEN 20 AND 25;

6. 别名(Alias)

用于简化查询结果中的列名或表名。

SELECT 列名 AS 别名 FROM 表名;

例如,查询学生姓名和年龄,并将姓名列重命名为student_name,年龄列重命名为student_age

SELECT name AS student_name, age AS student_age FROM students;

7. JOIN 语句

用于连接两个或多个表,并返回匹配的行。

这个主要是讲两个表按列连接在一起,比如表1中有个id1列,表2有个id2列,就可以按照表1和表2的id列将两个表连接在一起。

SELECT 列1, 列2, ...  
FROM 表1  
JOIN 表2 ON 表1.列 = 表2.列;

8. UNION 语句

用于合并两个或多个SELECT语句的结果集。

这个是将两个表按连接在一起,注意和上面的join区分。

SELECT 列1, 列2, ... FROM 表1  
UNION  
SELECT 列1, 列2, ... FROM 表2;
-- 注意:UNION会去除重复行,如果想保留重复行,可以使用UNION ALL。

9. SELECT INTO 语句

SELECT INTO语句用于从一个表中选择数据,并将结果插入到新的表中。新表是根据选择的数据创建的。

SELECT 列1, 列2, ...  
INTO 新表名  
FROM 原始表名  
WHERE 条件;

例如,从students表中选择所有年龄为20的学生,并将结果插入到新的students_20表中:

SELECT *  
INTO students_20  
FROM students  
WHERE age = 20;

10. GROUP BY 语句

GROUP BY语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT 列名, 聚合函数(列名)  
FROM 表名  
WHERE 条件  
GROUP BY 列名;

例如,按年龄分组,计算每个年龄的学生数量:

SELECT age, COUNT(*) as student_count  
FROM students  
GROUP BY age;

11. HAVING 语句

HAVING语句用于对GROUP BY子句的结果进行过滤。与WHERE子句类似,但WHERE子句在数据分组之前进行过滤,而HAVING子句在数据分组之后进行过滤

SELECT 列名, 聚合函数(列名)  
FROM 表名  
WHERE 条件  
GROUP BY 列名  
HAVING 聚合函数(列名) 条件;

例如,找出学生数量超过10的年龄组:

SELECT age, COUNT(*) as student_count  
FROM students  
GROUP BY age  
HAVING COUNT(*) > 10;

12. SQL函数

SQL提供了大量的内置函数,用于在查询中执行各种操作,如字符串处理、日期计算、数值计算等。这里先举个例子看一下怎么使用,下文会总结一下SQL的函数。

例如,使用UPPER()函数将学生姓名转换为大写:

SELECT UPPER(name) as upper_name FROM students;

四、SQL内置函数总结

字符串函数

  • CONCAT(string1, string2, ...): 连接两个或多个字符串。
  • LENGTH(string): 返回字符串的长度。
  • UPPER(string): 将字符串中的所有字符转换为大写。
  • LOWER(string): 将字符串中的所有字符转换为小写。
  • SUBSTRING(string, start, length): 从字符串中提取子字符串。
  • TRIM(string): 去除字符串两侧的空格。
  • LTRIM(string): 去除字符串左侧的空格。
  • RTRIM(string): 去除字符串右侧的空格。
  • REPLACE(string, search_string, replacement_string): 在字符串中替换子字符串。

数值函数

  • ABS(number): 返回数的绝对值。
  • ROUND(number, decimals): 对数进行四舍五入,可指定小数位数。
  • CEIL(number) 或 CEILING(number): 返回大于或等于指定数字的最小整数。
  • FLOOR(number): 返回小于或等于指定数字的最大整数。
  • MOD(number, divisor): 返回两数相除的余数。
  • SQRT(number): 返回数的平方根。
  • POWER(base, exponent): 返回数的乘方结果。

日期和时间函数

  • NOW(): 返回当前日期和时间。
  • CURDATE(): 返回当前日期。
  • CURTIME(): 返回当前时间。
  • DATE_ADD(date, INTERVAL value unit): 向日期添加时间间隔。
  • DATEDIFF(date1, date2): 返回两个日期之间的天数差。
  • DATE_FORMAT(date, format): 根据指定的格式返回日期字符串。
  • DAY(date): 返回日期的天部分。
  • MONTH(date): 返回日期的月部分。
  • YEAR(date): 返回日期的年部分。

聚合函数

  • COUNT(column_name): 计算某列的行数(非NULL值)。
  • SUM(column_name): 计算某列的总和(数值列)。
  • AVG(column_name): 计算某列的平均值(数值列)。
  • MAX(column_name): 返回某列的最大值。
  • MIN(column_name): 返回某列的最小值。
  • GROUP_CONCAT(column_name): 连接某个分组内的所有值,生成一个字符串结果。

转换函数

  • CAST(value AS type): 将值转换为指定的数据类型。
  • CONVERT(value, type): 将值转换为另一种数据类型(某些数据库系统支持)。

其他函数

  • IF(condition, value_if_true, value_if_false): 根据条件返回两个值之一。
  • CASE: 类似于编程语言中的switch语句,允许在SQL查询中进行条件逻辑。
  • COALESCE(value1, value2, ...): 返回参数列表中的第一个非NULL值。
  • NULLIF(expression1, expression2): 如果两个表达式相等,则返回NULL;否则返回第一个表达式的值。

五、总结

这篇文章我们介绍了SQL的增删查改操作,并总结了一些SQL的高级用法和内置函数。大家可以把每个用法都练习一下,也可以当作一个文档在使用的时候来查询一下。

标签:...,入门,students,age,全攻略,SQL,WHERE,SELECT,name
From: https://blog.csdn.net/qq_64192931/article/details/139365705

相关文章

  • 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(四)---- C语言与计算机架构(Programmin
    系列文章目录操作系统入门系列-MIT6.S081(操作系统)学习笔记(一)----操作系统介绍与接口示例操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建(wsl2+ubuntu+quem+xv6)操作系统入门系列-MIT6.828(操作系统工程)学习笔记(三)----xv6初探与实验一(Lab:Xv6and......
  • 【MySQL】表左连接操作,对右表添加过滤数据的条件时,容易忽略的坑(左关联统计右表数据不
     疑问:sql中,左关联,右边表中无对应的数据,那能对右边的列进行筛选吗 ?带着疑问,我们看一下下面的文章MySQL】表左连接,对右表过滤数据时的坑左关联统计右边数据sqlSELECTma.id,ma.model_id,ma.event_rules_id,ma.model_applicati......
  • Linux 安装了MySQL 8.0后 如何修改初始密码
    1.grep‘temporarypassword’ /var/log/mysqld.log #查看初始临时密码2.systemctlstartmysqld #启动mysql3.mysqladmin-uroot-ppassword‘xxx’ #这里的xxx一般是大写字母加小写字母,数字和字符组成一共12-13个左右就可以修改4.这里的Enterpassword......
  • MySql索引的数据结构
    mysql索引是什么?想象一下,你手上有一本数学教材,但是目录被别人给撕掉了,现在要你翻到三三角函数的那一页,该怎么办?没有了目录,就只有两种方法,要么一页一页翻,要么随机翻。如果数据表没有目录的话,那要查询满足条件的记录行,就需要进行全表扫描,现在的互联网应用,数据量都非常大,百万千......
  • mysql常用脚本
    1.添加一列默认值0ALTERTABLE表名ADDSortint(11)DEFAULT0NULLCOMMENT'排序';2.MySql删除重复数据,保留最早创建的思路:新建一个临时表temp_ID存储upload_file表里的重复Id,upload_file根据temp_ID里的Id删除重复数据,最后删除临时表temp_ID。注:如果新建临时表-......
  • 网络技术零基础小白入门课程-深信服内部课程 笔记
    02-家庭组网介绍:Q:交换机比路由器速度更快,为什么还比路由器便宜?A:交换机工作在数据链路层,而路由器工作在网络层,因此路由器软件逻辑、硬件成本更高。 03-衡量网络性能的指标Q:在线用户、并发连接用户的概念一样吗?A:不一样,在线用户是已经访问网站的,并发连接数则是与网站进......
  • MySQL的数据在磁盘上如何存储?
    存储引擎百度百科是这样定义存储引擎的:MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎。简单来说就是不同的存储引擎,我们的数据存储的格式也会不一样。就好比图片有不同的格式,比如:.jpg,.png,.gif等等……......
  • Docker---java.sql.SQLNonTransientConnectionException: Could not create connectio
    文章目录一、问题场景二、问题分析及解决2.1问题分析2.2问题解决2.2.1有改动未重启容器2.2.2数据库配置不对三、结束一、问题场景使用docker容器控制数据库时,启动服务报错:java.sql.SQLNonTransientConnectionException:Couldnotcreateconnectiontodat......
  • 分享一个Python爬虫入门实例带数据分析(有源码,学习使用)
    Python爬虫是一种使用Python编程语言实现的自动化获取网页数据的技术。它广泛应用于数据采集、数据分析、网络监测等领域。以下是对Python爬虫的详细介绍:架构和组成:下载器:负责根据指定的URL下载网页内容,常用的库有Requests和urllib。解析器:用于解析下载的网页内容,提取所......
  • MySQL 查找并删除重复行
    本文讲述如何查找数据库里重复的行。这是初学者十分普遍遇到的问题。方法也很简单。这个问题还可以有其他演变,例如,如何查找“两字段重复的行”(#mysqlIRC频道问到的问题)如何查找重复行第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一......