当前位置: 首页 > article >正文

sql语法学习 sql各种语法 sql增删改查 数据库各种操作 数据库指令

sql语法学习 sql各种语法 sql增删改查 数据库各种操作 数据库指令

学习SQL语法时,理解其基本结构和用法是关键。下面是SQL语法的详细学习指南,涵盖了SQL的主要部分,包括查询、插入、更新、删除、表操作等。

1. 基本查询语法

SQL 的查询语句主要使用 SELECT 语句,从数据库中提取数据。

1.1. SELECT 查询

SELECT column1, column2, ... 
FROM table_name;
示例:

SELECT name, age FROM students;

1.2. SELECT ALL 与 DISTINCT

ALL 是默认的,返回所有行,包括重复行。
DISTINCT 用于消除重复行,只返回唯一的结果。

SELECT DISTINCT column1 FROM table_name;

1.3. WHERE 子句

用于筛选符合条件的记录。

SELECT column1, column2 
FROM table_name 
WHERE condition;
示例:

SELECT name, age 
FROM students 
WHERE age > 18;

1.4. 逻辑运算符

=: 等于
<>!=: 不等于
>: 大于
<: 小于
>=: 大于等于
<=: 小于等于
BETWEEN: 在两个值之间
IN: 在指定的集合中
LIKE: 模糊匹配
AND、OR、NOT: 逻辑运算符

示例:


SELECT * 
FROM students 
WHERE age >= 18 AND name LIKE 'A%';

2. 数据排序 (ORDER BY)

使用 ORDER BY 对查询结果进行排序,默认是升序。

SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC];
示例:

SELECT name, age 
FROM students 
ORDER BY age DESC;

3. 聚合函数

COUNT(): 计算记录数量
SUM(): 计算总和
AVG(): 计算平均值
MAX(): 最大值
MIN(): 最小值
示例:

SELECT COUNT(*) AS total_students 
FROM students;

4. GROUP BY 子句

将数据按某列分组,并结合聚合函数使用。

SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;
示例:

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

5. HAVING 子句

HAVING 类似于 WHERE,但用于过滤聚合后的数据。

SELECT column1, COUNT(*) 
FROM table_name 
GROUP BY column1 
HAVING COUNT(*) > 1;

6. 连接 (JOIN)

用于从多个表中获取数据,最常用的连接方式有内连接、外连接、左连接、右连接。

6.1. INNER JOIN (内连接)

只返回两个表中匹配的记录。

SELECT a.column1, b.column2 
FROM table1 a 
INNER JOIN table2 b 
ON a.common_field = b.common_field;

6.2. LEFT JOIN (左连接)

返回左表的所有记录,即使右表中没有匹配的记录。

SELECT a.column1, b.column2 
FROM table1 a 
LEFT JOIN table2 b 
ON a.common_field = b.common_field;

6.3. RIGHT JOIN (右连接)

返回右表的所有记录,即使左表中没有匹配的记录。

SELECT a.column1, b.column2 
FROM table1 a 
RIGHT JOIN table2 b 
ON a.common_field = b.common_field;

6.4. FULL JOIN (全连接)

返回两个表中所有匹配和不匹配的记录。

SELECT a.column1, b.column2 
FROM table1 a 
FULL JOIN table2 b 
ON a.common_field = b.common_field;

7. 子查询 (Subqueries)

子查询是在一个 SQL 语句中嵌套另一个查询。

SELECT column1 
FROM table_name 
WHERE column2 = (SELECT MAX(column2) FROM table_name2);

8. 插入数据 (INSERT INTO)

向表中插入新的记录。

8.1. 基本插入

INSERT INTO table_name (column1, column2, …)
VALUES (value1, value2, …);
示例:

INSERT INTO students (name, age) 
VALUES ('John', 22);

8.2. 插入多个值

INSERT INTO table_name (column1, column2, ...) 
VALUES (value1, value2, ...), (value3, value4, ...);

9. 更新数据 (UPDATE)

用于修改表中的现有记录。

UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
示例:

UPDATE students 
SET age = 23 
WHERE name = 'John';

10. 删除数据 (DELETE)

用于删除表中的记录。

DELETE FROM table_name
WHERE condition;
示例:

DELETE FROM students 
WHERE age < 18;

11. 创建表 (CREATE TABLE)

创建一个新表。

CREATE TABLE table_name (
column1 datatype,
column2 datatype,

);
示例:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

12. 修改表结构 (ALTER TABLE)

修改现有表的结构,比如添加、删除列等。

12.1. 添加列

ALTER TABLE table_name 
ADD column_name datatype;

12.2. 删除列

ALTER TABLE table_name 
DROP COLUMN column_name;

12.3. 修改列的数据类型

ALTER TABLE table_name 
MODIFY COLUMN column_name datatype;

13. 删除表 (DROP TABLE)

删除整个表以及表中的所有数据。

DROP TABLE table_name;

14. 事务 (TRANSACTIONS)

事务确保一系列操作要么全部成功,要么全部失败。

14.1. 开启事务

START TRANSACTION;

14.2. 提交事务

COMMIT;

14.3. 回滚事务

ROLLBACK;

15. 索引 (INDEX)

索引用于提高数据库查询的效率。

CREATE INDEX index_name 
ON table_name (column1, column2, ...);

16. 视图 (VIEW)

视图是基于 SQL 查询结果的虚拟表。

CREATE VIEW view_name AS 
SELECT column1, column2 
FROM table_name 
WHERE condition;

17. 常见的SQL数据类型

17.1. 数值类型

INT、INTEGER: 整数
FLOAT、DOUBLE: 浮点数
DECIMAL: 精确小数

17.2. 字符串类型

CHAR: 固定长度字符串
VARCHAR: 可变长度字符串
TEXT: 大文本

17.3. 日期和时间类型

DATE: 日期(YYYY-MM-DD)
TIME: 时间(HH:MI
)
DATETIME: 日期和时间(YYYY-MM-DD HH:MI)

http://www.kler.cn/news/327208.html

相关文章:

  • 自动化测试中如何精确模拟富文本编辑器中的输入与提交?
  • Pytorch-LSTM轴承故障一维信号分类(一)
  • 如何在 Amazon EMR 中运行 Flink CDC Pipeline Connector
  • 【笔记】如何将本地的.md变成不影响阅读的类pdf模式
  • COMP 6714-Info Retrieval and Web Search笔记week2
  • 解决 Android WebView 无法加载 H5 页面常见问题的实用指南
  • Another redis desktop manager使用说明
  • 在IntelliJ IDEA中设置文件自动定位
  • 劳易测ODT3CL1-2M漫反射传感器荣获 “2024 MM《现代制造》创新产品奖”
  • AWS Network Firewall - IGW方式配置只应许白名单域名出入站
  • SQL进阶技巧:影院2人相邻的座位如何预定?
  • QT将QBytearray的data()指针赋值给结构体指针变量后数据不正确的问题
  • Brave编译指南2024 MacOS篇-构建与运行(六)
  • 正则表达式的使用规则
  • Linux —— Socket编程(三)
  • 深入理解 C++11 Lambda 表达式及其捕获列表
  • Lombok同时使⽤@Data和@Builder遇到的坑
  • 0基础学习PyTorch——监控机器学习的可视化工具
  • PostgreSQL 字段使用pglz压缩测试
  • OceanBase企业级分布式关系数据库
  • TypeScript 算法手册 - 【冒泡排序】
  • 海陆钻井自动化作业机器人比例阀放大器
  • Apache Solr:深入探索与常见误区解析
  • 深度学习实战:UNet模型的训练与测试详解
  • 关于 JVM 个人 NOTE
  • ARM Assembly: 第8课 branching
  • Web自动化中常用XPath定位方式
  • D23【 python 接口自动化学习】- python 基础之判断与循环
  • Docker入门指南:快速学习Docker的基本操作
  • 网络编程(13)——单例模式