SQL语言

一、SQL 概述

1. SQL定义:SQL是结构化查询语言,用于访问和处理数据库,包括数据插入、查询、更新和删除。
2. 版本历史:SQL起源于1970年代IBM的研究,1986年成为ANSI标准,1987年成为ISO标准。
3. 基本语法规范:包括

SELECT

: `column_name ` 是要查询的列,`table_name` 是数据表名,`condition` 是筛选条件

select column_name from table_name where condition
INSERT INTO

:向表中插入新记录

insert into table_name(column1,column2,...)values(value1,value2,...)
INSERT INTO ... SELECT ... 
语句是一种非常常见的用法,它允许从一个表中选择数据并将其插入到另一个表中。这种方式的优点是可以直接从源表中获取数据,而不需要手动指定每个值。
UPDATE

:更新表中的数据

update table_name set column=new_value where condition;
DELETE FROM

:删除表中满足特定条件的行

delete from table_name where condition;
CREATE TABLE

:用于创建新的表,定义列名、数据类型等信息。

column_name 参数规定表中列的名称。

data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。

size 参数规定表中列的最大长度。

create table table-name(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),

);
JOIN

:连接两个或多个表,如 INNER JOIN, LEFT JOIN, RIGHT JOIN 等,用于获取多个表之间的关联数据

查询条件是学生表和处分表都有的student_id的结果集

INNER JOIN操作的作用是:内联操作,将符合ON条件的A表和B表结果均搜索出来,然后合并为一个结果集。

SELECT 
	STU.student_id,
	STU.name,
	STU.class,
	P.punishment
FROM student AS STU
INNER JOIN punishment AS P
ON STU.student_id=P.student_id;

LEFT JOIN的作用是:左联操作,左联顾名思义是,将符合ON条件的B表结果搜索出来,然后左联到A表上,然后将合并后的A表输出。

SELECT stu.student_id,stu.name,stu.class,p.punishment
FROM student stu
LEFT JOIN punishment p
ON stu.student_id = p.student_id;

RIGHT JOIN的作用是右联操作,右联顾名思义是,将符合ON条件的A表结果搜索出来,然后右联到B表上,然后将合并后的B表输出

WHERE:用于指定查询条件,过滤返回的结果

GROUP BY\HAVING:用于对查询结果进行分组和过滤聚合

ORDER BY:按照指定列对查询结果进行排序

COMMIT和ROLLBACK:前者提交事务,后者回滚事务以撤销AS

AS

为表或列指定别名,以提高查询结果的可读性,并且在查询中可以使用这些别名来引用相应的表或列。只是在输出时更替,不会对表结构造成影响。

1. 为列指定别名

在查询语句中,可以使用AS关键字为查询结果中的列指定一个别名。例如:

SELECT column_name AS alias_name FROM table_name;

这将把列名column_name指定为别名alias_name,查询结果中将使用别名alias_name来表示该列。

2. 为表指定别名

同样地,可以使用AS关键字为查询中的表指定一个别名。例如:

SELECT column_name FROM table_name AS alias_name;

这将把表名table_name指定为别名alias_name,查询语句中可以使用别名alias_name来引用该表。

3. 实际应用示例

列别名‌:假设有一个学生表students,包含字段idnameage。可以使用以下查询:

SELECT id AS 学生ID, name AS 学生姓名, age AS 年龄 FROM students;

这样查询结果中列的名称将分别是“学生ID”、“学生姓名”和“年龄”。

表别名‌:如果在一个查询中多次引用同一个表,可以使用表别名来简化查询语句:

SELECT s.id, s.name, s.age FROM students AS s;

这里将students表命名为s,在查询中可以使用s代替students

 IN 和 NOT IN

用于判断某字段的值是否属于in列表中的某一项

SELECT column_name FROM table_name WHERE column_name IN (value1, value2, ..., valueN);

在这里,column_name是要检查的列名,而value1, value2, ..., valueN是要检查的值列表,这些值可以是常量、子查询或从其他表中选取的值。

使用场景和优势

  1. ‌语法简洁‌:使用IN操作符可以使SQL查询语句更加清晰易读,特别是在需要匹配多个值时,避免了使用多个OR条件。
  2. ‌管理方便‌:当需要修改匹配条件时,只需要调整IN列表中的值,而不需要在多个OR条件中进行修改。
  3. ‌执行效率‌:在某些情况下,数据库引擎可能会对IN操作符进行优化,使其执行效率高于多个OR条件。
  4. ‌支持子查询‌:IN操作符可以与子查询结合使用,从而动态生成匹配列表,增加查询的灵活性。

示例

‌简单的IN操作符应用‌:假设有一个名为Products的表,包含如下数据,你希望检索出价格为3.49或9.49的所有产品。使用IN操作符的查询语句如下

SELECT prod_name, prod_price FROM Products WHERE prod_price IN (3.49, 9.49);

‌IN操作符结合子查询‌:假设你有两个表ProductsSuppliers,你想要查询那些由Supplier A和Supplier B提供的所有产品。可以使用子查询结合IN操作符来实现:

SELECT p.prod_name, p.prod_price FROM Products p JOIN Suppliers s ON p.supplier_id = s.supplier_id WHERE s.supplier_name IN ('Supplier A', 'Supplier B');
BETWEEN AND

用于选择特定范围内的值

 二、SQL 分类


1. DDL(Data Definition Languages):数据库定义语句,用于创建数据库中的对象。
2. DML(Data Manipulation Language):数据操作语言,用于管理数据库中的数据。
3. DCL(Data Control Language):数据控制语句,用于授权/撤销数据库及其字段的权限。
4. DQL(Data Query Language):数据查询语言,用于查询数据库中的数据。

 三、DDL(Data Definition Language)


1. 基本操作:包括操作数据库、数据类型、操作表等。
2. 操作数据库:CREATE DATABASE、DROP DATABASE、ALTER DATABASE。
3. 数据类型:数字型、日期和时间类型、字符串类型。
4. 操作表:CREATE TABLE、DROP TABLE、ALTER TABLE、RENAME TABLE。

四、DML(Data Manipulation Language)


1. 插入数据:使用INSERT INTO语句添加记录。
2. 修改数据:使用UPDATE语句修改表中的数据。
3. 删除数据:使用DELETE FROM语句删除记录。

五、DCL(Data Control Language)


1. 创建用户:使用CREATE USER语句创建新的数据库用户。
2. 给用户授权:使用GRANT语句为用户分配访问权限。
3. 撤销授权:使用REVOKE语句撤销用户的访问权限。
4. 查看用户权限:使用SHOW GRANTS语句查看用户当前的权限列表。
5. 删除用户:用DROP USER语句来删除一个用户。
6. 修改用户密码:通过ALTER USER语句可以修改用户的密码。

六、DQL(Data Query Language)


1. 基础查询:利用SELECT语句查询数据库中的数据。
2. 条件查询:通过使用WHERE子句设定查询条件。
3. 模糊查询:使用LIKE子句,配合通配符%和_进行模糊查询。
4. 字段控制查询:运用DISTINCT关键字进行去重查询。
5. 排序:用ORDER BY子句按照一个或多个列进行排序。
6. 聚合函数:包括COUNT,SUM,MAX,MIN,AVG等函数。
7. 分组查询:GROUP BY子句用于结合聚合函数,依据一个或多个列进行分组。
8. LIMIT:用来限定查询结果的起始行,以及总行数。
9. 多表连接查询:包括内连接、左连接、右连接、全外连接和笛卡尔积。

补充

回滚(Rollback)是数据库管理中的一个重要概念,它指的是将数据库中的某些操作恢复到它们发生之前的状态。这通常发生在数据库事务处理过程中,当一个事务由于某种原因无法成功完成时,系统会自动执行回滚操作,以确保数据库的一致性和完整性。

---------------------------------------------------------------------------------------------------------------------------------

DATEDIFF (date1, date2) 计算时间差

ORDER BY salary ASC/DASC; 然后salary就能升序/降序排列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值