一、SQL语句分类
1、数据查询语言DQL:select
2、数据操纵语言DML:对数据库的数据进行一些操作。插入insert,删除delete,更新update
3、数据定义语言DDL:用来创建数据库的各种对象--表,视图等。create,drop
4、数据控制语言DCL:用来授予或回收访问数据库的某种特权,并控制数据库操作事务发生的时间及效果,对数据库实行监视等。rollback,commit,grant,revoke等
二、基础
1. 查看当前所有的数据库: show databases;
2. 打开指定的库名: use 库名;
3. 查看当前库的所有表: show tables;
4. 查看其它库的所有表: show tables from 库名;
5. 创建表: create table 表名(
列名 列类型,
列名 列类型);
6. 查看表结构:desc 表名;
7. 语法字母不区分大小写,每条命令以分号结尾,每条命令可根据需要换行
三、数据查询语言select
查询语句
基础查询
查询表中的字段
select 查询的东西
from 表名;
查询常量、表达式等
select 100; select 100%98; select version();
为字段起别名
select 100%98 as 结果;
去重
select distinct 字段名 from 表名
条件查询
where语句
条件表达式 > < = != >= <=
逻辑表达式 && || and or not
模糊查询 like/ between and /in / is null 和通配符搭配使用,%:任意多个字符,包括0个;_:任意单个字符
排序查询
order by 排序列表 asc|desc
也可按照多个字段进行排序:order by _,_
分组查询
select *
from 表名
[where 条件]
group by 分组列表
[having 条件]
[order by 字段名]
分组查询中的筛选条件分为两类:
分组前筛选:基于原始表,where子句
分组后筛选:基于分组后的结果集,即having子句
连接查询
1. 内连接【取出连接表中匹配到的数据,匹配不到的不保留】inner join
等值连接:用=连接两个表
非等值连接:不是=
自连接:自己与自己进行连接
2. 外连接【取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL。即查询的结果为主表中的所有记录】
左外连接:left [outer] 左表为主表
右外连接:right [outer] 右表为主表
全外连接:full [outer] 全外连接 = 内连接 + 表1中有但表2没有的 + 表2中有但表1中没有的
子查询
select * from 表名 where 字段名1 = (select 字段名1 from 表名 where 条件)
in/ not in:等于列表中的任意一个
any/some: 和子查询返回的某一个值进行比较
all:和子查询返回的所有值进行比较
exists:相关子查询,查看里边的查询是否存在,结果为0或者1
分页查询
查询语句的最后一句: limit offset,size
offset是要显示的起始索引(索引从0开始)
size是要显示的条目个数
联合查询
应用场景:要查询的结果来自多个表,且多个表没有直接的连接关系,但查询的信息是一致的。
union:将多条查询语句的结果合并成一个结果,会去重
union all:简单地将两个结果合并后就返回
开窗函数
类似于group by聚合函数,主要实现数据的分组统计,为统计行打开另一扇另类的统计窗口。
1. row_number() over(order by 字段) 连续不重复
2. rank() over (order by 字段) 排序相同的值归为一组
3. dense_rank() over(order by 字段) 排序连续,相同值归为一组
四、数据操纵语言
插入语句
insert into 表名(列名,...) values(值1,...);
insert into 表名 set 列名=值,列名=值;
修改语句
update 表名
set 列=新值,列=新值...
where 筛选条件;
删除语句
delete from 表名 where 筛选条件;
truncate table 表名;
drop table 表名;
三者的区别:
drop删除内容和定义,并释放空间,将使此表的结构一起删除。
delete只删除内容,释放空间,但不删定义,可以对行删除,也可删除整张表,即可以加where条件,且该操作可以回滚,有返回值(受影响的行数)。
truncate删内容,释放空间,但不删定义,保留表的数据结构,但是只是清空表中的数据。不可以添加where条件,不能回滚,无返回值。
五、数据定义语言
库的管理
库的创建
create database 库名;
库的修改
更改库的字符集
alter database 库名 character set gbk;
库的删除
drop database 库名;
表的管理
表的创建
create table 表名(
列名 列类型,
列名 列类型);
表的修改
修改列名:alter table 表名 change 列名 新列名 类型;
修改类型/约束:alter table 表名 modify column 列名 修改类型;
添加新列:alter table 表名 add column 列名 类型;
删除列:alter table 表名 drop column 列名;
修改表名:alter table 表名 rename to 新表名;
表的删除
drop table 表名;
视图的创建删除等与表的操作类似。