Sql基础语句及一些sql复杂查询语句


前言

SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言。它允许用户从数据库中检索、插入、更新和删除数据。在这篇博客中,我将介绍一些 SQL 基础语句和一些复杂查询语句,都是一些我在学习中做的一些笔记。


一、数据库的基本操作语言

创建库:create database name;

库是否存在,不存在则创建:create database if not exists name;

查看所有数据库:show databases;

查看某个数据库的定义信息:show create database name;

修改数据库的字符信息:alter database name character set utf8;

删除数据库:drop database name;
以上都是数据定义语言

二、数据表的基本操作语言

首先是创建数据表:

cretate  table  student(

id  int,

name  varchar,

sex  varchar,

age  int,

address varchar);

查看表结构: desc 表名

查看创建表的sql语句: show create table 表名

修改表名:alter table 表名 rename to 新的表名

添加一个列:alter table 表名 add 列名 数据类型

删除一个列:alter table 表名 drop 列名

删除表:drop table 表名 或者 drop table if exists 表名

以上都是数据定义语言

三、增,删,改

1、增加

写全列名及属性: insert into 表名(列1,列2…) values(值1,值2)

所有列全部添加:insert into 表名 values(值1,值2)

部分列:insert into 表名(列1,列2…) values(值1,值2)

2、删除

删除表中数据:delete from 表名 where 列名 = 值

删除所有数据: delete from 表名

删除所有数据(先删表,再创建一张新的表): truncate table 表名

3、修改

修改一个属性:update 表名 set 列名 = 值

带条件的修改: update 表名 set 列名 = 值 where 列名=值

以上是数据操作语言

四、查询

接下来就是SQL语句的重点,查询语句:
一般的查询结构就是:select 列1,列2… from 表名 where 条件

1、基础关键字

**between…and :在什么之间 **
举例: 查询大于等于5,小于等于10
select * from student where age between 5 and 10; (用>,<,=,&&等符号也一样)

IN 集合
举例:查询年龄=4 ,5 ,或者6的
select * from student where age in(4,5,6)

is not null 不为空值
举例:查询地址不为空
select * from student where address is not null

like 模糊查询
以X开头:like ‘X%’
第二个字是X:like ‘_X%’
是一个字:like ‘_%’
包含X: like ‘%X%’

2、排序查询

不特别添加desc,默认是升序排序

语法: 末尾加上 ordeer by 子句(字段1,字段2) 当条件1相同时才判断条件2

举例: select * from data order by bumber desc 降序

3、聚合函数(将一列属性作为一个整体,进行纵向的计算)

COUNT:计算某列的非空值数量
示例:SELECT COUNT(*) FROM employees;
这将返回"employees"表中的行数。

SUM:计算某列值的总和
示例:SELECT SUM(salary) FROM employees;
这将返回"employees"表中所有员工薪水的总和。

AVG:计算某列值的平均值
示例:SELECT AVG(age) FROM employees;
这将返回"employees"表中所有员工年龄的平均值。

MIN:获取某列值的最小值
示例:SELECT MIN(salary) FROM employees;
这将返回"employees"表中薪水最低的员工的薪水。

MAX:获取某列值的最大值
示例:SELECT MAX(salary) FROM employees;
这将返回"employees"表中薪水最高的员工的薪水。

4、分组查询

语法:group by 分组字段 having <条件>;
示例:SELECT department, AVG(salary) FROM employees GROUP BY department;
这将返回按部门分组的平均薪水。

5、分页查询

语法:limit 开始的索引,每页查询的数量
示例:示例:SELECT * FROM employees LIMIT 10;
这将返回"employees"表中的前10行记录。

6、case when

CASE WHEN语句用于根据条件对数据进行条件性的操作和返回值。它的一般语法如下:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result
END

示例:SELECT name,
CASE WHEN age <= 18 THEN ‘未成年’
WHEN age > 18 AND age <= 30 THEN ‘年轻人’
ELSE ‘成年人’
END AS age_group
FROM customers;
这将返回一个包含客户姓名和根据年龄分组的列。

7、子句查询

子查询是指在主查询(外部查询)中嵌套使用的查询语句:

子查询作为列的值:
示例:SELECT name, (SELECT MAX(salary) FROM employees) AS max_salary FROM employees;
这将返回"employees"表中每个员工的姓名以及该表中最高薪水作为一个额外的列。

子查询作为WHERE子句的条件:
示例:SELECT name, age FROM employees WHERE age > (SELECT AVG(age) FROM employees);
这将返回"employees"表中年龄高于平均年龄的员工的姓名和年龄。

子查询作为FROM子句的表:
示例:SELECT department, COUNT(*) FROM (SELECT * FROM employees WHERE salary > 5000) AS high_paid GROUP BY department;
这将返回在"employees"表中薪水高于5000的员工,按部门进行分组,并计算每个部门中员工的数量。

EXISTS子查询:
示例:SELECT name FROM employees WHERE EXISTS (SELECT * FROM orders WHERE orders.employee_id = employees.id);
这将返回在"employees"表中存在关联订单的员工的姓名。

IN子查询:
示例:SELECT name FROM employees WHERE id IN (SELECT employee_id FROM orders);
这将返回在"orders"表中出现的员工ID对应的员工姓名。

还有许多并且更为复杂的sql查询语句没有提及,之后学习了之后会补上

猜你喜欢

转载自blog.csdn.net/a545__27/article/details/132099270