### SQL语句教程知识点梳理####一、SQL基础指令详解##### 1. SELECT - **用途**:用于从数据库表中选取数据。 - **语法格式**:`SELECT column_name FROM table_name;` - **示例**:从`Store_Information`表中选取所有的`store_name`列。 - `SELECT store_name FROM Store_Information;` ##### 2. DISTINCT - **用途**:用于返回唯一的不同的值。 - **语法格式**:`SELECT DISTINCT column_name FROM table_name;` - **示例**:从`Store_Information`表中选取所有不同的`store_name`。 - `SELECT DISTINCT store_name FROM Store_Information;` ##### 3. WHERE - **用途**:用于指定从表中选取的数据应满足的条件。 - **语法格式**:`SELECT column_name FROM table_name WHERE condition;` - **示例**:从`Store_Information`表中选取`Sales`超过$1000的记录。 - `SELECT * FROM Store_Information WHERE Sales > 1000;` ####二、进阶查询操作符##### 1. AND / OR - **用途**:用于组合多个条件。 - **语法格式**:`SELECT column_name FROM table_name WHERE condition1 AND/OR condition2;` - **示例**:从`Store_Information`表中选取`Sales`超过$1000且`store_name`为`LosAngeles`的记录。 - `SELECT * FROM Store_Information WHERE Sales > 1000 AND store_name = 'LosAngeles';` ##### 2. IN - **用途**:用于指定多个可能的值之一。 - **语法格式**:`SELECT column_name FROM table_name WHERE column_name IN (value1, value2,...);` - **示例**:从`Store_Information`表中选取`store_name`为`LosAngeles`或`Boston`的记录。 - `SELECT * FROM Store_Information WHERE store_name IN ('LosAngeles', 'Boston');` ##### 3. BETWEEN - **用途**:用于选取介于两个值之间的记录。 - **语法格式**:`SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2;` - **示例**:从`Store_Information`表中选取`Sales`介于$200到$800之间的记录。 - `SELECT * FROM Store_Information WHERE Sales BETWEEN 200 AND 800;` ##### 4. LIKE - **用途**:用于在WHERE子句中搜索列中的指定模式。 - **语法格式**:`SELECT column_name FROM table_name WHERE column_name LIKE pattern;` - **示例**:从`Store_Information`表中选取`store_name`以`L`开头的记录。 - `SELECT * FROM Store_Information WHERE store_name LIKE 'L%';` ##### 5. ORDER BY - **用途**:用于对结果集进行排序。 - **语法格式**:`SELECT column_name FROM table_name ORDER BY column_name [ASC | DESC];` - **示例**:从`Store_Information`表中选取所有记录,并按`Sales`降序排列。 - `SELECT * FROM Store_Information ORDER BY Sales DESC;` ####三、聚合函数与分组##### 1. COUNT - **用途**:用于计算列中的行数。 - **语法格式**:`SELECT COUNT(column_name) FROM table_name;` - **示例**:计算`Store_Information`表中`store_name`的行数。 - `SELECT COUNT(store_name) FROM Store_Information;` ##### 2. GROUP BY - **用途**:用于结合具有相同值的行作为一组。 - **语法格式**:`SELECT column_name, COUNT(column_name) FROM table_name GROUP BY column_name;` - **示例**:计算`Store_Information`表中每个`store_name`的数量。 - `SELECT store_name, COUNT(store_name) FROM Store_Information GROUP BY store_name;` ##### 3. HAVING - **用途**:用于过滤被`GROUP BY`子句创建的结果集合。 - **语法格式**:`SELECT column_name, COUNT(column_name) FROM table_name GROUP BY column_name HAVING COUNT(column_name) > x;` - **示例**:计算`Store_Information`表中出现次数超过1次的`store_name`。 - `SELECT store_name, COUNT(store_name) FROM Store_Information GROUP BY store_name HAVING COUNT(store_name) > 1;` ####四、表格处理##### 1. CREATE TABLE - **用途**:用于创建新表。 - **语法格式**:`CREATE TABLE table_name (column1 datatype, column2 datatype, ...);` - **示例**:创建名为`Employees`的新表,包含`id`(整型)和`name`(字符型)两列。 - `CREATE TABLE Employees (id INT, name VARCHAR(255));` ##### 2. ALTER TABLE - **用途**:用于修改现有的表。 - **语法格式**:`ALTER TABLE table_name ADD column_name datatype;` - **示例**:向`Employees`表添加一列`age`。 - `ALTER TABLE Employees ADD age INT;` ##### 3. DROP TABLE - **用途**:用于删除现有的表。 - **语法格式**:`DROP TABLE table_name;` - **示例**:删除表`Employees`。 - `DROP TABLE Employees;` ##### 4. TRUNCATE TABLE - **用途**:用于删除表中的所有记录,但保留表结构。 - **语法格式**:`TRUNCATE TABLE table_name;` - **示例**:清空`Employees`表中的所有记录。 - `TRUNCATE TABLE Employees;` ####五、数据完整性约束##### 1. CONSTRAINT - **用途**:用于规定列的规则。 - **语法格式**:`ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);` - **示例**:确保`Employees`表中的`id`列唯一。 - `ALTER TABLE Employees ADD CONSTRAINT emp_id_unique UNIQUE (id);` ##### 2. NOT NULL - **用途**:用于规定某列不允许为空。 - **语法格式**:`ALTER TABLE table_name ALTER COLUMN column_name SET NOT NULL;` - **示例**:确保`Employees`表中的`name`列不允许为空。 - `ALTER TABLE Employees ALTER COLUMN name SET NOT NULL;` ##### 3. UNIQUE - **用途**:用于规定某列必须是唯一的。 - **语法格式**:`ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);` - **示例**:确保`Employees`表中的`id`列唯一。 - `ALTER TABLE Employees ADD CONSTRAINT emp_id_unique UNIQUE (id);` ##### 4. CHECK - **用途**:用于规定列的约束条件。 - **语法格式**:`ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK (column_name operator value);` - **示例**:确保`Employees`表中的`age`列大于等于18岁。 - `ALTER TABLE Employees ADD CONSTRAINT emp_age_check CHECK (age >= 18);` ####六、主键与外键##### 1.主键- **用途**:用于唯一标识表中的每一行记录。 - **语法格式**:`ALTER TABLE table_name ADD PRIMARY KEY (column_name);` - **示例**:设置`Employees`表中的`id`列为`PRIMARY KEY`。 - `ALTER TABLE Employees ADD PRIMARY KEY (id);` ##### 2.外键- **用途**:用于建立表间的关联关系。 - **语法格式**:`ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES other_table_name(other_column_name);` - **示例**:设置`Orders`表中的`employee_id`列为指向`Employees`表中`id`列的`FOREIGN KEY`。 - `ALTER TABLE Orders ADD CONSTRAINT ord_emp_id_fk FOREIGN KEY (employee_id) REFERENCES Employees(id);` ####七、视图与索引##### 1. CREATE VIEW - **用途**:用于创建视图。 - **语法格式**:`CREATE VIEW view_name AS SELECT column1, column2,... FROM table_name WHERE condition;` - **示例**:创建一个视图`HighSalesView`,显示销售额高于$1000的商店名称和销售额。 - `CREATE VIEW HighSalesView AS SELECT store_name, Sales FROM Store_Information WHERE Sales > 1000;` ##### 2. CREATE INDEX - **用途**:用于创建索引以加快数据检索速度。 - **语法格式**:`CREATE INDEX index_name ON table_name (column_name);` - **示例**:在`Store_Information`表的`store_name`列上创建索引`store_idx`。 - `CREATE INDEX store_idx ON Store_Information (store_name);` ####八、字符串处理函数##### 1. CONCATENATE - **用途**:用于连接两个或多个表达式的值。 - **语法格式**:`SELECT CONCATENATE(column_name1, column_name2,...) FROM table_name;` - **示例**:连接`Employees`表中的`first_name`和`last_name`列。 - `SELECT CONCATENATE(first_name, ' ', last_name) AS full_name FROM Employees;` ##### 2. SUBSTRING - **用途**:用于提取字符串的一部分。 - **语法格式**:`SELECT SUBSTRING(column_name, start, length) FROM table_name;` - **示例**:提取`Employees`表中`name`列的前三个字符。 - `SELECT SUBSTRING(name, 1, 3) AS short_name FROM Employees;` ##### 3. TRIM - **用途**:用于移除字符串首尾的空白字符。 - **语法格式**:`SELECT TRIM(column_name) FROM table_name;` - **示例**:移除`Employees`表中`name`列两端的空白字符。 - `SELECT TRIM(name) FROM Employees;` ####九、进阶SQL概念##### 1. UNION - **用途**:用于合并两个或多个SELECT语句的结果集。 - **语法格式**:`SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;` - **示例**:合并`Employees`表中的`first_name`与`last_name`列。 - `SELECT first_name FROM Employees UNION SELECT last_name FROM Employees;` ##### 2. UNION ALL - **用途**:与UNION类似,但不会删除重复的行。 - **语法格式**:`SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;` - **示例**:合并`Employees`表中的`first_name`与`last_name`列,包括重复项。 - `SELECT first_name FROM Employees UNION ALL SELECT last_name FROM Employees;` ##### 3. INTERSECT - **用途**:用于返回两个或多个SELECT语句的结果集中的公共行。 - **语法格式**:`SELECT column_name(s) FROM table1 INTERSECT SELECT column_name(s) FROM table2;` - **示例**:找出`Employees`表中`first_name`列与`last_name`列的公共部分。 - `SELECT first_name FROM Employees INTERSECT SELECT last_name FROM Employees;` ##### 4. MINUS - **用途**:用于返回在第一个SELECT语句的结果集中但不在第二个SELECT语句的结果集中的行。 - **语法格式**:`SELECT column_name(s) FROM table1 MINUS SELECT column_name(s) FROM table2;` - **示例**:找出`Employees`表中`first_name`列中不存在于`last_name`列中的名字。 - `SELECT first_name FROM Employees MINUS SELECT last_name FROM Employees;` ####十、子查询- **用途**:一个查询嵌套在另一个查询中的查询。 - **语法格式**:`SELECT column_name FROM outer_query WHERE column_name = (SELECT column_name FROM inner_query);` - **示例**:找出`Employees`表中`salary`高于平均工资的员工。 - `SELECT * FROM Employees WHERE salary > (SELECT AVG(salary) FROM Employees);` ####十一、复杂计算- **算排名**:使用窗口函数如`RANK()`或`ROW_NUMBER()`等来进行排名。 - **算中位数**:通过组合使用子查询和聚合函数实现中位数的计算。 - **算总合百分比**:通过计算总数和各分类的比例来得出百分比。 - **算累积总合百分比**:在总合百分比的基础上进一步进行累积计算。通过以上知识点的详细介绍,我们可以看出SQL语言的强大功能不仅在于基本的数据查询,还涉及到了数据处理、数据分析等多个方面。熟练掌握这些知识点对于成为一名合格的数据库管理员或数据分析师至关重要。
sql语句教程
相关推荐
SQL语句教程
SQL语言使用指南
本教程提供了从基础到高级的SQL语法指南,包括:
SQL指令:存储、读取和处理数据库数据
表操作:创建、修改和查询数据库表
高级SQL:复杂数据处理和操作
SQL语法参考:完整SQL语法列表及示例
掌握本教程,您将具备熟练使用SQL获取和处理数据库信息的能力。
SQLServer
13
2024-05-25
SQL语句教程
SQL语句学习指南,详细介绍了SQL语言基础和高级用法,适用于数据库管理和数据分析。
Oracle
12
2024-08-01
SQL语句修改教程
更新数据语句格式为UPDATE 表名 SET 列名1=值1, 列名2=值2... WHERE 条件;提供了三种修改方式:单一元组值的修改、多个元组值的批量修改以及带子查询的修改语句。
SQLServer
10
2024-08-17
精品SQL语句教程
这是一个优秀的SQL教程,涵盖详细的讲解和示例代码,适合所有对数据库感兴趣的人士学习和分享!
Oracle
11
2024-09-30
SQL语句教程详解
SQL语句是设计数据库开发人员的核心工具,用于管理和操作数据。它是一种结构化查询语言,通过简单的指令就能完成复杂的数据库操作,包括数据查询、插入、更新和删除等功能。掌握SQL语句对于数据库开发至关重要,能够有效管理大量数据并优化查询性能。
SQLServer
5
2024-10-20
SQL 语句基础教程
本教程提供了一些常用的 SQL 语句,对于初学者理解和掌握 SQL 语法非常有帮助,特别适合正在学习数据库相关课程的学生群体。
SQLServer
17
2024-05-30
SQL语句教程入门指南
SQL 语句的知识点整理挺全的,尤其适合刚接触数据库的你。常用指令像 SELECT、WHERE、GROUP BY 讲得清楚,连一些进阶用法比如 UNION、子查询 也都覆盖到了。例子也比较贴地气,照着改就能跑,效率高。平时写查询语句经常会卡在条件组合上?这份教程把 WHERE、GROUP BY、HAVING 的区别说得挺明白,搭配文章里的对比链接看,理解更透彻。像 SELECT COUNT(*), AVG(Sales) 这样的聚合函数用法,也都配了例子。不光教你怎么写,还让你明白背后逻辑,写多了就熟练了。你要是想做点更复杂的报表,像 排名、累计百分比这种逻辑,教程里也有提,蛮适合入门 BI 查
MySQL
0
2025-06-18
SQL语句基础教程
SQL语句基础教程,涵盖了SQL语言的基础知识和常用操作,适合初学者入门。
SQLite
13
2024-07-13
④SQL语句匹配模式教程
④SQL语句中的匹配模式[NOT] LIKE ‘’ [ESCAPE ‘ ’] :用于指定特定的匹配模板。匹配模板可以是固定字符串或带有通配符的字符串。通配符%(百分号)表示任意长度的字符串,例如,a%b表示以a开头,以b结尾的任意长度字符串。_(下划线)代表任意单个字符,例如,a_b表示以a开头,以b结尾的长度为3的任意字符串,例如acb,afb等。
SQLServer
9
2024-08-13