黑狐家游戏

数据库常用的sql语句大全151条,数据库常用的sql语句大全151条

欧气 1 0

本文目录导读:

  1. SQL基础查询语句
  2. 数据操作语句
  3. 数据排序与分组
  4. 多表查询
  5. 子查询
  6. 数据库函数
  7. 创建和管理数据库对象
  8. 视图的创建和使用
  9. 事务处理
  10. 存储过程和函数

《数据库SQL语句全解析:常用的151条SQL语句深度剖析》

数据库常用的sql语句大全151条,数据库常用的sql语句大全151条

图片来源于网络,如有侵权联系删除

SQL基础查询语句

1、简单查询

- 从单个表中查询所有列:

- 在关系型数据库(如MySQL)中,使用SELECT * FROM table_name;语句,如果有一个名为employees的表,包含员工的各种信息,这条语句可以获取所有员工的所有信息,这里的是通配符,表示所有列。

- 查询特定列:

SELECT column1, column2 FROM table_name;,比如在employees表中,只想获取员工的姓名和职位信息,可以使用SELECT name, position FROM employees;,这样可以减少数据传输量,提高查询效率。

2、条件查询

- 使用WHERE子句:

SELECT * FROM table_name WHERE condition;,在students表中查询年龄大于20岁的学生,SELECT * FROM students WHERE age > 20;WHERE子句中的条件可以使用比较运算符(如><=等)、逻辑运算符(如ANDORNOT),查询年龄在18到22岁之间的学生,SELECT * FROM students WHERE age >= 18 AND age <= 22;

- 模糊查询:

- 使用LIKE关键字,如果要查询名字中包含“张”字的员工,在employees表中可以使用SELECT * FROM employees WHERE name LIKE '%张%';,其中%是通配符,表示任意字符序列(包括空字符序列),如果只想查询以“张”字开头的员工名字,可以使用SELECT * FROM employees WHERE name LIKE '张%';

数据操作语句

1、插入数据(INSERT)

- 插入单条数据:

- 在MySQL中,INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …);,向products表中插入一个新产品的信息,INSERT INTO products (product_name, price, quantity) VALUES ('iPhone 13', 5999, 100);,这里要确保列名和值的顺序是一一对应的,并且数据类型要匹配。

- 插入多条数据:

- 可以使用多条INSERT语句,也可以使用一条INSERT语句插入多条数据。INSERT INTO employees (name, age, department) VALUES ('张三', 25, '销售部'), ('李四', 28, '技术部');

2、更新数据(UPDATE)

- 基本语法:

UPDATE table_name SET column1 = value1, column2 = value2, … WHERE condition;,在students表中,将年龄为20岁的学生的班级更新为“二班”,UPDATE students SET class = '二班' WHERE age = 20;,如果没有WHERE子句,将会更新表中的所有行,这在大多数情况下是非常危险的操作,可能会导致数据丢失或错误。

3、删除数据(DELETE)

- 删除特定行:

DELETE FROM table_name WHERE condition;,从orders表中删除订单状态为“已取消”的订单,DELETE FROM orders WHERE status = '已取消';

- 删除所有行:

DELETE FROM table_name;会删除表中的所有数据,但表结构仍然存在,如果要彻底删除表(包括表结构),在MySQL中可以使用DROP TABLE table_name;

数据排序与分组

1、排序(ORDER BY)

- 升序排序:

SELECT * FROM table_name ORDER BY column_name ASC;,查询products表中的产品信息,并按照价格升序排列,SELECT * FROM products ORDER BY price ASC;

- 降序排序:

SELECT * FROM table_name ORDER BY column_name DESC;,如果要按照销售量降序排列产品信息,可以使用SELECT * FROM products ORDER BY sales_volume DESC;

2、分组(GROUP BY)

- 简单分组:

SELECT column1, COUNT(*) FROM table_name GROUP BY column1;,在orders表中,按照客户ID分组,统计每个客户的订单数量,SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id;

- 分组后筛选(HAVING):

- 与WHERE子句不同,HAVING用于在分组后对组进行筛选,在上述按客户ID分组统计订单数量的基础上,只显示订单数量大于5的客户,SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id HAVING COUNT(*) > 5;

多表查询

1、内连接(INNER JOIN)

- 语法:

SELECT column1, column2 FROM table1 INNER JOIN table2 ON table1.column = table2.column;,有一个employees表和一个departments表,employees表中有department_id列,departments表中有id列,要查询员工及其所属部门的信息,可以使用SELECT employees.name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.id;,内连接只会返回两个表中满足连接条件的行。

2、外连接(LEFT JOIN、RIGHT JOIN)

数据库常用的sql语句大全151条,数据库常用的sql语句大全151条

图片来源于网络,如有侵权联系删除

- 左外连接(LEFT JOIN):

SELECT column1, column2 FROM table1 LEFT JOIN table2 ON table1.column = table2.column;,查询所有员工及其所属部门的信息,如果员工没有所属部门也要显示员工信息,就可以使用左外连接,左外连接会返回左表(table1)中的所有行,以及右表(table2)中满足连接条件的行,如果右表中没有匹配的行,则相应的列显示为NULL

- 右外连接(RIGHT JOIN):

- 与左外连接类似,只是以右表为基础。SELECT column1, column2 FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;,它会返回右表中的所有行,以及左表中满足连接条件的行,如果左表中没有匹配的行,则相应的列显示为NULL

子查询

1、标量子查询

- 标量子查询是返回单个值的子查询,在students表中查询年龄大于平均年龄的学生,先计算平均年龄:SELECT AVG(age) FROM students;,然后将这个结果作为子查询使用在主查询中,SELECT * FROM students WHERE age > (SELECT AVG(age) FROM students);

2、列子查询

- 列子查询返回一列值,在products表中查询价格高于所有电子产品价格的非电子产品,首先查询电子产品的价格列SELECT price FROM products WHERE category = '电子产品';,然后在主查询中使用这个子查询,SELECT * FROM products WHERE category!= '电子产品' AND price > ALL (SELECT price FROM products WHERE category = '电子产品');,这里的ALL关键字表示要满足子查询结果列中的所有值的比较条件。

数据库函数

1、聚合函数

COUNT函数:

- 用于计算表中的行数或某列的非空值个数。SELECT COUNT(*) FROM table_name;会返回表中的总行数,如果要计算某列的非空值个数,如计算students表中有多少学生填写了家庭住址,可以使用SELECT COUNT(address) FROM students;

SUM函数:

- 用于计算某列数值的总和,在orders表中,如果有amount列表示订单金额,要计算所有订单的总金额,可以使用SELECT SUM(amount) FROM orders;

AVG函数:

- 计算某列数值的平均值,如计算products表中产品的平均价格,SELECT AVG(price) FROM products;

MAXMIN函数:

- 分别用于获取某列的最大值和最小值,在students表中查询年龄最大和最小的学生,SELECT MAX(age), MIN(age) FROM students;

2、字符串函数

- 在MySQL中,CONCAT函数用于连接字符串,在employees表中,将员工的姓和名连接成一个完整的姓名,SELECT CONCAT(last_name, first_name) FROM employees;

SUBSTRING函数用于提取字符串的子串,从一个包含完整地址的列中提取城市名称(假设城市名称在地址的中间部分),SELECT SUBSTRING(address, start_position, length) FROM table_name;,这里需要根据实际的地址格式确定start_positionlength的值。

3、日期和时间函数

- 在数据库中,日期和时间函数非常重要,在MySQL中,CURRENT_DATE函数返回当前日期,CURRENT_TIME函数返回当前时间,CURRENT_TIMESTAMP函数返回当前日期和时间,如果要查询orders表中今天下的订单,可以使用SELECT * FROM orders WHERE order_date = CURRENT_DATE;

- 计算日期差值也很常见,计算两个日期之间的天数差,可以使用DATEDIFF函数,如果有一个start_date列和一个end_date列,要计算它们之间的天数差,SELECT DATEDIFF(end_date, start_date) FROM table_name;

创建和管理数据库对象

1、创建表(CREATE TABLE)

- 基本语法:

CREATE TABLE table_name (column1 data_type constraint1, column2 data_type constraint2, …);,创建一个customers表,包含id(整数类型,主键)、name(字符串类型)、email(字符串类型,唯一约束)等列,CREATE TABLE customers (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) UNIQUE);,这里的PRIMARY KEY用于定义主键,UNIQUE用于定义唯一约束,确保列中的值是唯一的。

2、修改表(ALTER TABLE)

- 添加列:

ALTER TABLE table_name ADD column_name data_type;,在products表中添加一个description列,ALTER TABLE products ADD description VARCHAR(200);

- 修改列的数据类型:

ALTER TABLE table_name MODIFY column_name new_data_type;,如果要将students表中的phone_number列的数据类型从VARCHAR(10)修改为VARCHAR(15)ALTER TABLE students MODIFY phone_number VARCHAR(15);

- 删除列:

ALTER TABLE table_name DROP column_name;,从orders表中删除一个不再使用的extra_info列,ALTER TABLE orders DROP extra_info;

3、创建索引(CREATE INDEX)

- 索引可以提高查询效率,在employees表中的name列上创建索引,CREATE INDEX index_name ON employees (name);,索引的创建需要谨慎,因为虽然它可以提高查询速度,但也会增加插入、更新和删除操作的开销,因为数据库需要维护索引结构。

视图的创建和使用

1、创建视图(CREATE VIEW)

- 视图是一个虚拟的表,它是基于一个或多个表的查询结果,创建一个视图来显示员工的姓名和部门名称,CREATE VIEW employee_department_view AS SELECT employees.name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.id;

数据库常用的sql语句大全151条,数据库常用的sql语句大全151条

图片来源于网络,如有侵权联系删除

2、使用视图

- 视图可以像普通表一样被查询,查询上述创建的视图中的数据,SELECT * FROM employee_department_view;,视图的好处是可以简化复杂的查询,隐藏底层表的结构和数据复杂性,并且可以提供一定的数据安全性,因为用户可以通过视图访问数据而不需要直接访问底层表。

事务处理

1、事务的概念

- 事务是一组数据库操作,这些操作要么全部成功执行,要么全部失败回滚,在银行转账系统中,从一个账户转出资金并转入另一个账户就是一个事务,这个事务包含两个操作:从转出账户扣除金额和向转入账户增加金额,如果其中一个操作失败,整个事务应该回滚,以确保数据的一致性。

2、事务的操作(以MySQL为例)

- 开始事务:

- 使用START TRANSACTION;语句开始一个事务。

- 执行事务中的操作:

- 在转账事务中,执行更新账户余额的操作,UPDATE accounts SET balance = balance - amount WHERE account_id = from_account_id;UPDATE accounts SET balance = balance + amount WHERE account_id = to_account_id;

- 提交事务或回滚事务:

- 如果所有操作都成功,可以使用COMMIT;语句提交事务,使操作永久生效,如果在事务执行过程中出现错误,可以使用ROLLBACK;语句回滚事务,将数据恢复到事务开始之前的状态。

存储过程和函数

1、存储过程的概念和创建(以MySQL为例)

- 存储过程是一组预编译的SQL语句,存储在数据库中,可以被重复调用,创建一个存储过程来查询指定部门的员工信息。

- 使用CREATE PROCEDURE procedure_name (parameter1 data_type, parameter2 data_type, …)语句创建存储过程。

```sql

CREATE PROCEDURE get_employees_by_department (IN department_name VARCHAR(50))

BEGIN

SELECT * FROM employees WHERE department = department_name;

END;

```

- 调用存储过程:

- 使用CALL procedure_name (parameter_value);语句调用存储过程,要查询销售部门的员工信息,CALL get_employees_by_department('销售部门');

2、函数的概念和创建(以MySQL为例)

- 函数与存储过程类似,但函数必须返回一个值,创建一个函数来计算两个数的和。

- 使用CREATE FUNCTION function_name (parameter1 data_type, parameter2 data_type) RETURNS return_data_type语句创建函数。

```sql

CREATE FUNCTION add_numbers (IN num1 INT, IN num2 INT) RETURNS INT

BEGIN

RETURN num1 + num2;

END;

```

- 使用函数:

- 函数可以在查询中使用,就像使用普通的数据库函数一样。SELECT add_numbers(3, 5);会返回8。

在数据库的实际应用中,熟练掌握这些SQL语句是非常重要的,无论是小型的本地数据库应用,还是大型的企业级数据库系统,这些SQL语句都构成了数据操作和管理的基础,合理地运用这些语句,可以提高数据库的性能、确保数据的准确性和一致性,并且能够有效地满足各种业务需求,随着数据库技术的不断发展,新的SQL特性和功能也在不断涌现,但这些基本的SQL语句仍然是构建复杂数据库应用的基石。

通过深入学习和实践这151条常用的SQL语句,数据库开发人员和管理员可以更好地应对各种数据库相关的任务,从简单的数据查询和操作到复杂的多表关联、事务处理以及存储过程和函数的使用等,不同的数据库管理系统(如Oracle、SQL Server、PostgreSQL等)虽然在语法和功能上可能存在一些差异,但这些基本的SQL概念和语句在很大程度上是通用的,只是在具体的实现细节上有所不同,掌握这些通用的SQL语句是深入学习和使用各种数据库管理系统的重要起点。

标签: #数据库 #SQL语句 #常用

黑狐家游戏
  • 评论列表

留言评论