目录
我的测试环境
学习文档
进入数据库
基础通关测验
语句-- 查
展示数据库;
进入某个数据库;
展示表:
展示某个表 desc
查询整个表:
查询特定列:
范围查询
等于特定值
不等于
介于
特定字符查询 Like
关键字查询
字符长度查询
特定位置查询
AND OR
排序
查找类似值
查询多个值
合并多表查询结果UNION
查询不同表中的不重复值;
查询某列空值/非空值
查询并计算
非空列的平均值
查询低于平均值的列值
Count 语句
查询某列非空值的值种类
查询某列非空值数量:
查询最大值:
查询最小值
列求和
某列的分组查询:
分组后对组名进行时筛选:having语句
某列以英文的大写查询
某列以英文的小写查询
查询多列 某一列小写/大写
查看某列中各个值的长度
查某个表的时间:
语句--增
创建表
在某个表中插入数据
数值取舍
语句--删
去除重复值
删除固定值
删除整个表
语句--改
改值 update
我的测试环境
MYSQL :MySQL Server 8.0
Navicat
学习文档
SQL常用语句总结 - 知乎 (zhihu.com)
基础篇:数据库 SQL 入门教程-CSDN博客
SQL 教程 | 菜鸟教程
进入数据库
mysql -u root -p
基础通关测验
SQL 测验
语句-- 查
展示数据库;
show databases;
进入某个数据库;
use test1022;
展示表:
展示某个表 desc
查询整个表:
select * from person02;
查询特定列:
select name,email from person02;
语法重点:select 列名称,列名称 from 表名称;
范围查询
SELECT name FROM person02 WHERE name ='lisi';
SELECT address FROM person02 WHERE address ='beijing';
等于特定值
语法重点:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;
不等于
下面的运算符可在 WHERE 子句中使用:
操作符 | 描述 |
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
介于
SELECT 序号 from person02 where 序号 between 1 and 30;
语法重点:
SELECT 列名称 from 表名称 where 列名称 between 值1 and 值2;
SELECT 列名称 from 表名称 where 列名称 not between 值1 and 值2;
数字的时候前后都包括
SELECT name from person02 where name between 'b' and 'd';
查询字符时包括前边的不包括后边的
特定字符查询 Like
关键字查询
SELECT * from person02 where name like 'lisi';
语法重点:
SELECT * from 表名称 where列名称 like 'lisi';
SELECT * from 表名称 where列名称 like 'li%';
语法重点:
SELECT * from 表名称 where列名称 like '值%'; -匹配开头
SELECT * from 表名称 where列名称 like '%值%'; -匹配特定字符
字符长度查询
语法重点:匹配特定长度
SELECT * from 表名称 where列名称 like '___'; -匹配特定长度的值 _是一个字符
特定位置查询
语法重点:匹配特定位置
SELECT * from 表名称 where列名称 like '___值%';
SELECT * from person02 where name like '__s%';
AND OR
语法重点:
SELECT * FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值;
select * from person02 where name = 'lisi' and 序号='5';
语法重点:
SELECT * FROM 表名称 WHERE 列 运算符 值 OR 列 运算符 值;
select * from person02 where name = 'lisi' or name='aa';
排序
语法重点:
SELECT * FROM 表名称 ORDER BY 列1,列2 DESC;
默认排序为 ASC 升序,DESC 代表降序。
以字母顺序显示 某列 名称:
select *from person02 order by address;
语法重点:
select *from 表名称 order by 列名称;
查找类似值
语法重点:
SELECT 列名/(*) FROM 表名称 WHERE 列名称 LIKE 值;
select address from person02 where name like 'a%';
查询多个值
语法重点:
SELECT 列名/(*) FROM 表名称 WHERE 列名称 IN (值1,值2,值3);
select * from person02 where address in ('shanghai','beijing');
合并多表查询结果UNION
语法重点:
UNION 语法:
SELECT 列名 FROM 表A
UNION
SELECT 列名 FROM 表B;
UNION 操作符默认为选取不同的值。如果查询结果需要显示重复的值,请使用 UNION ALL。
UNION ALL 语法:
SELECT 列名 FROM 表A
UNION ALL
SELECT 列名 FROM 表B;
查询不同表中的不重复值;
select * from 表1
UNION
select * from 表2;
select * from user01 union select * from user02;
UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
查询某列空值/非空值
语法重点:
select * from person02 where 序号 is null;
select * from person02 where 序号 is not null;
查询并计算
非空列的平均值
语法重点:
select avg(列名) from 表名;
select avg(phone) from user01;
查询低于平均值的列值
语法重点:
select * from 表名 where 列名字 < (select avg(列名字) from 表);
select * from user01 where phone < (select avg(phone) from user01);
Count 语句
语法重点:
select count(*) from 表名;
select count(*) from person02;
查询某列非空值的值种类
语法重点:
SELECT COUNT(DISTINCT 列名) FROM 表名;
select count(distinct address) from person02;
查询某列非空值数量:
语法重点:
SELECT COUNT(列名) FROM 表名;
select count(address) from person02;
查询最大值:
语法重点
select max(列名) from 表名;
select max(phone) from user01;
查询最小值
语法重点
select min(列名) from 表名;
select min(phone) from user01;
列求和
语法重点:
select sum(列名) from 表名;
select sum(phone) from user01;
某列的分组查询:
语法重点:
SELECT 列名A, 统计函数(列名B) FROM 表名 WHERE 查询条件 GROUP BY 列名A;
select address,count(address)from person02
-> where address='beijing'
-> group by address;
分组后对组名进行时筛选:having语句
语法重点:
SELECT 列名A, 统计函数(列名B)
FROM table_name
WHERE 查询条件
GROUP BY 列名A
HAVING 统计函数(列名B) 查询条件;
select name,count(phone) from user01 where phone='10' group by name hav
ing sum(phone) >8;
select lastname,count(phone)
-> from user01
-> where phone='10'
-> group by lastname
-> having sum(phone) >8;
某列以英文的大写查询
语法重点:
select upper(列名称) from 表名称;
select upper(name) from person02;
注: 该查询不会影响源数据 单纯查的时候是这个现实
某列以英文的小写查询
语法重点:
select lower(列名) from 表名;
注: 该查询不会影响源数据 单纯查的时候是这个现实
查询多列 某一列小写/大写
语法重点:
select lower(列名称1),列名称2 from 表名称;
select upper(列名称1),列名称2 from 表名称;
select upper(name),upper(address),email from person02;
查看某列中各个值的长度
语法重点:
select length(列名) from 表名;
select length(name) from person02;
查某个表的时间:
适用于 MySQL
select now();
语句--增
创建表
CREATE TABLE user01
(
name int,
LastName int(255),
FirstName int(255),
email int(255),
phone int(255)
);
也可写为
CREATE TABLE user02
(name int,
LastName int(255),
FirstName int(255),
email int(255),
phone int(255) );
笔记 :
语法重点: 最后一行无,
在某个表中插入数据
insert into person02 values ('22','zhanghds','4657qqcom','beijing');
insert into person02 values ('22','zhanghds','4657qqcom','beijing');
语法重点:insert into 表名称 values ('值',‘值2');
insert into person02 (name) values('王家');
语法重点:insert into 表名称 (列名称) values ('值');
数值取舍
语法重点:
select round(列名,精度) from 表名;
语句--删
去除重复值
select distinct name from person02;
select distinct name from 表名称;
注:该语句只是just 不显示而已,不是在原来库中做删除 因为再查看还是有的
删除固定值
语法重点:
DELETE FROM 表名称 WHERE 列名称 = 值;
select *from person02 order by 序号 asc;
删除整个表
做删除操作一定要谨慎 ,最好是先做好备份!!
DELETE FROM 表名称;
delect from persons;
语法重点:
TRUNCATE TABLE 表名称;
truncate table persons;
删除表
语法重点:
drop tables 表名称;
drop tables persons;
语句--改
改值 update
语法重点:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;
update person02 set 序号='00' where email='333@qq.com';
为列名称和表名称指定别名(Alias),别名使查询程序更易阅读和书写。
语法重点:
表别名:
SELECT 表名称/(*) FROM 表名称 AS 别名;
列别名:
SELECT 列名称 as 别名 FROM 表名称;
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
语法:
解释
CREATE TABLE 表
(
列 int NOT NULL
);
End