提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
前言
SQL:结构化查询语言。一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。 我们先来了解一下SQL语言的语法。
提示:以下是本篇文章正文内容,下面案例可供参考
一、DDL
介绍:
DDL英文全称是Data Definition Language(数据定义语言),用来定义数据库对象(数据库、表)。
DDL中数据库的常见操作:查询、创建、使用、删除。
1.1). 数据库操作:
1.1.1 查询数据库
查询所有数据库:
show databases;
查询当前数据库:
select database();
我们要操作某一个数据库,必须要切换到对应的数据库中。
通过指令:select database() ,就可以查询到当前所处的数据库
1.1.2 创建数据
语法:
create database [ if not exists ] 数据库名 [default charset utf8mb4];
1.1.3 使用数据库
语法:
use 数据库名 ;
1.1.4 删除数据库
语法:
drop database [ if exists ] 数据库名 ;
1.2). 表操作:
1.2.1 查询
查询当前数据库所有表 :
show tables;
查看指定表结构 :
desc 表名 ; #可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息
查询指定表的建表语句 :
show create table 表名 ;
1.2.2 修改
添加字段:
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
修改数据类型 :
alter table 表名 modify 字段名 新数据类型(长度);
删除字段 :
alter table 表名 drop 字段名;
修改表名 :
rename table 表名 to 新表名;
1.2.3 删除
删除表语法:
drop table [ if exists ] 表名;
注意:
if exists :只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。
二、DML
介绍:
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。
2.1).增加(insert)
insert语法:
- 向指定字段添加数据:
insert into 表名 (字段名1, 字段名2) values (值1, 值2);
- 全部字段添加数据
insert into 表名 values (值1, 值2, ...);
- 批量添加数据(指定字段)
insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
- 批量添加数据(全部字段)
insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
Insert操作的注意事项:
-
插入数据时,指定的字段顺序需要与值的顺序是一一对应
-
字符串和日期型数据应该包含在引号中
-
插入的数据大小,应该在字段的规定范围内
2.2).修改(update)
update语法:
update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [where 条件] ;
注意事项:
-
修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据
2.3).删除(delete)
delete语法:
delete from 表名 [where 条件] ;
注意事项:
1. DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
2. DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)
3. 当进行删除全部数据操作时,会提示询问是否确认删除所有数据,直接点击Execute即可
三、DQL
介绍:
DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
语法:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
3.1 基本查询
查询多个字段:
select 字段1, 字段2, 字段3 from 表名;
查询所有字段(通配符)
select * from 表名;
设置别名
select 字段1 [ as 别名1 ] , 字段2 [ as 别名2 ] from 表名;
去除重复记录
select distinct 字段列表 from 表名;
*
号代表查询所有字段!!!
3.2 条件查询
select 字段列表 from 表名 where 条件列表 ; -- 条件列表:意味着可以有多个条件
3.3 聚合函数
语法:
select 聚合函数(字段列表) from 表名 ;
注意 : 聚合函数会忽略空值,对NULL值不作为统计。
注意:
count在根据指定的列统计的时候,如果这一列中有null的行,该行不会被统计在其中。
sum目的是计算指定列的数值和,如果不是数值类型,那么计算结果为0
3.4 分组查询
分组: 按照某一列或者某几列,把相同的数据进行合并输出。
分组其实就是按列进行分类(指定列下相同的数据归为一类),然后可以对分类完的数据进行合并计算。
分组查询通常会使用聚合函数进行计算。
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
注意事项:
1. 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
2. 执行顺序:where > 聚合函数 > having
where与having区别(面试题)
-
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
-
判断条件不同:where不能对聚合函数进行判断,而having可以。
3.5 排序查询
排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。
语法:
select 字段列表
from 表名
[where 条件列表]
[group by 分组字段 ]
order by 字段1 排序方式1 , 字段2 排序方式2 … ;
排序方式:
1. ASC :升序(默认值):如果是升序, 可以不指定排序方式ASC
2. DESC:降序
3.6 分页查询
分页查询语法:
select 字段列表 from 表名 limit 起始索引, 查询记录数 ;
注意事项:
-
起始索引从0开始。 计算公式 : 起始索引 = (页码 - 1)* 每页显示记录数
-
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
-
如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 条数
总结
欢迎各位大佬一起讨论