文章目录
前言
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查询语句没有提及,之后学习了之后会补上