您的位置:首页 > 文旅 > 美景 > 商城app定制_中国新冠实际死了多少了_培训计划方案模板_中文域名注册官网

商城app定制_中国新冠实际死了多少了_培训计划方案模板_中文域名注册官网

2024/10/5 21:18:58 来源:https://blog.csdn.net/wxy3265/article/details/142383720  浏览:    关键词:商城app定制_中国新冠实际死了多少了_培训计划方案模板_中文域名注册官网
商城app定制_中国新冠实际死了多少了_培训计划方案模板_中文域名注册官网

SQL学习笔记

简介

  • SQL 全称 Structured Query Language (结构化查询语言)
  • SQL 是一个用于数据库管理的语言
  • SQL 现在是一个 ANSI 和 ISO 标准
  • SQL 可以做以下事情:
    • 执行数据库查询命令
    • 在数据库中进行 CRUD(增删改查)
    • 创建新的数据库、在数据库中创建新表
    • 在数据库中创建视图
    • 设置对表、过程、视图的权限
  • 尽管SQL是一个标准,但有不同的版本差异,不过它们都支持最基本的操作

命令

  • 主要 SQL 命令:
命令作用
SELECT获取数据
UPDATE更新数据
DELETE删除数据
INSERT INTO添加数据
CREATE DATABASE创建新数据库
ALTER DATABASE修改数据库
CREATE TABLE创建新表
ALTER TABLE修改表
DROP TABLE删除表
CREATE INDEX创建索引(查找关键字)
DROP INDEX删除索引

SELECT

  • 作用:获取(查找)表中某几列数据
  • 格式
    SELECT column1, column2, ... FROM table_name;
    
  • 示例
    SELECT name, id FROM Students;
    
  • 作用: 获取表的全部数据
  • 格式:
    SELECT * FROM table_name;
    
  • 示例:
    SELECT * FROM Students;
    

SELECT DISTINCT

  • 作用:获取(查找)表中几列不同的数据
  • 格式
    SELECT DISTINCT column1, column2, ... FROM table_name;
    
  • 示例
    SELECT DISTINCT name, id FROM Students;
    

SELECT TOP

  • 作用:查找表中最大的几个元素
  • 该语句在不同的 SQL 版本中用法不一,故不在此介绍

WHERE

  • 作用:筛选数据,保留符合条件的数据
  • 格式:
... WHERE condition;
  • 逻辑运算符:在 condition 中,可以使用如下逻辑运算符(包括有类似逻辑运算符作用的命令):
运算符作用
=等于
>大于
<小于
>=大于等于
<=小于等于
<>不等于(部分 SQL 版本是 != )
BETWEEN在区间内 (详见下文)
LIKE符合格式 (详见下文)
IN在集合内 (详见下文)
EXISTS子查询是否有结果
ANY子查询符合任何一个条件
ALL子查询全部符合条件
AND连接两个条件,表示与
OR连接两个条件,表示或
NOT写在一个条件前面,表示非
IS NULL
IS NOT NULL非空
  • 示例
SELECT * FROM Students WHERE name='Alice' AND id='13';

BETWEEN

  • 作用:表示在区间(两端均为闭区间)内的条件
  • 格式
... BETWEEN value1 AND value2;
  • 示例
SELECT * FROM Students WHERE score BETWEEN 80 AND 90;

IN

  • 作用:表示在给出的集合中的条件
  • 格式
... IN (value1, value2, ...);
  • 示例
SELECT * FROM Students WHERE class IN ('Class1', 'Class2');

LIKE

  • 作用:表示符合给出的格式的条件
  • 格式
... LIKE pattern;
  • 格式 (pattern) 的描述
    在描述格式时,通常会使用通配符代替不确定的部分。在 SQL 中,有以下几个通配符:
通配符表示示例
%可空的字符串'a%':以a开头的字符串
_单个字符'a_':以a开头且a后面有且只有一个字符的字符串
[]在该通配符中的任一字符(在 PostgreSQL 和 MySQL 中不受支持)[abc]'a''b''c'
^不在[]通配符中的任一字符(在 PostgreSQL 和 MySQL 中不受支持)^[abc]:除'a''b''c'之外的任一字符
-在指定范围内的字符(在 PostgreSQL 和 MySQL 中不受支持)a-d :从 'a''d' 的字符
  • 示例
SELECT * FROM Students WHERE name LIKE 'a_%';

EXISTS

  • 作用:表示子查询有结果的条件
  • 格式
SELECT column_name(s) FROM table_name
WHERE EXISTS 
(SELECT column_name FROM table_name WHERE condition);
  • 示例
SELECT name FROM Students WHERE EXISTS (SELECT * FROM Students WHERE score >= 80);

HAVING

  • 作用:与 WHERE 一样,表示查询条件,但适用于带有聚合函数的条件
  • 格式
... HAVING condition;
  • 示例
-- 获取人数不少于30的班级的人数
SELECT COUNT(*), className FROM Students GROUP BY className HAVING COUNT(*) >= 30;

ANY

  • 作用:逻辑运算符,判断子查询是否有符合条件的结果
  • 格式
SELECT column_name(s) FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition)
  • 示例
-- 查询1班中成绩大于2班任一学生的学生
SELECT name FROM Students
WHERE class = "1" AND score > ANY (SELECT score FROM Students WHERE class = "2")

ALL

  • 作用:逻辑运算符,判断子查询是否全部符合条件
  • 格式
SELECT column_name(s) FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition)
  • 示例
-- 查询1班中成绩大于2班所有学生的学生
SELECT name FROM Students
WHERE class = "1" AND score > ALL (SELECT score FROM Students WHERE class = "2")

ORDER BY

  • 作用:按照关键字排序(对于字符串按字典序排序)
  • 格式
... ORDER BY column1, column2, ... ASC | DESC;
  • 示例
SELECT * FROM Students ORDER BY Name DESC;

其中, ASC 表示升序, DESC 表示降序

GROUP BY

  • 作用:指定分组依据,通常与聚合函数搭配使用
  • 格式
SELECT column_name(s) FROM table_name GROUP BY column_name(s)
  • 示例
SELECT COUNT(*), className FROM Students GROUP BY className;

AS

  • 作用:为数据起别名( Aliases ),常与 SELECT 搭配使用
  • 格式
SELECT column_name AS alias_name FROM table_name;
  • 示例
SELECT student_id AS id FROM Students;
-- 也可用于多列数据
SELECT students_id AS id, students_name AS name FROM Students;

JOIN

  • 作用:通过关系列将将来自多个表的数据拼接到一起
  • 操作类型
    • INNER:所有表中都有的数据(交集)
    • LEFT:所有左边的表的数据和右边的表中与左边的表匹配的数据
    • RIGHT:所有右边的表的数据和左边的表中与右边的表匹配的数据
    • FULL:至少一个表中有的数据(并集)
  • 格式
SELECT column_name(s) FROM table1 [MODE] JOIN table2 ON table1.column_name=table2.column_name;
  • 示例
SELECT Students.name, Classes.name FROM Students
LEFT JOIN Classes ON Students.classId=Classes.classId;

UNION

  • 作用:将多个表中的几列合并到一起(列数不变,行数合并),要求两个表中要合并的列数相同。
  • 格式
SELECT column_name(s) FROM table1
UNION (ALL)
SELECT column_name(s) FROM table2;

注:如不使用 ALL ,则 UNION 会自动去重

  • 示例
SELECT name From Students
UNION ALL
SELECT name From Teachers;

INSERT INTO

  • 作用:向表中添加数据
  • 格式
    • 指定列名
    INSERT INTO table_name (colum1, column2, column3, ...) 
    VALUE (value1, value2, value3, ...);
    
    • 不指定列名(向所有列添加数据且顺序与列的顺序一致)
    INSERT INTO table_name 
    VALUES (value1, value2, value3, ...);
    
    • 添加多条数据
    INSERT INTO table_name (colum1, column2, column3, ...) 
    VALUES
    (value1, value2, value3, ...)
    (value1_, value2_, value3_, ...);
    
  • 示例
INSERT INTO Students (id, name, score) VALUES ('20', 'Bob', 95);

UPDATE

  • 作用:修改已有数据的内容
  • 格式
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

注意:如果不使用 WHERE ,将修改表中的所有数据!

  • 示例
UPDATE Students SET name='Floyd' WHERE id='3265';

DELETE

  • 作用:删除已有数据
  • 格式
DELETE FROM table_name WHERE condition;

注意:如果不使用 WHERE ,将删除表中的所有数据!

  • 示例
DELETE FROM Students WHERE id='114514';

聚合函数

  • 聚合函数是 STL 中的常用求值计算函数,常与 SELECT 搭配使用。
  • 若要使用聚合函数作为查询条件,应使用 HAVING 而非 WHERE
  • MIN()/MAX()
    • 作用:得出数据中的最大值/最小值
    • 格式
    SELECT MAX(column_name) FROM table_name WHERE condition;
    
    • 示例
    SELECT MAX(score) FROM Students;
    

COUNT()

  • 作用:统计数量
  • 格式
SELECT COUNT(column_name) FROM table_name;
  • 示例
-- 统计80分以上数据条数
SELECT COUNT(*) FROM Students WHERE score >= 80;
-- 统计name非空的数据条数
SELECT COUNT(name) FROM Students;

SUM()

  • 作用:求和
  • 格式
SELECT SUM(column_name) FROM table_name;
  • 示例
SELECT SUM(score) FROM Students WHERE score >= 80;
-- 也可以在参数中写表达式
SELECT SUM(score * 0.1 + base) FROM Students;

AVG()

  • 作用:求平均数
  • 格式
SELECT AVG(column_name) FROM table_name;
  • 示例
SELECT AVG(score) FROM Students;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com