SQL语句

1. SQL 分类

SQL语言在功能上主要分为如下3大类:

  • DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。

    • 主要的语句关键字包括CREATEDROPALTER等。
  • DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。

    • 主要的语句关键字包括INSERTDELETEUPDATESELECT等。

    • SELECT是SQL语言的基础,最为重要。

  • DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和安全级别。

    • 主要的语句关键字包括GRANTREVOKECOMMITROLLBACKSAVEPOINT等。
  • DQL(Data Query Language、数据查询语言),用于定义数据库、表、字段、用户的访问权限和安全级别。

    • 主要的语句关键字包括SELECTWHEREGROUP BYHAVINGORDER BY、LIMIT等。

因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)。

还有单独将COMMITROLLBACK 取出来称为TCL (Transaction Control Language,事务控制语言)。

1.1 DDL 数据库操作语言

查看所有数据库

sql 复制代码
show datebases;

查看当前数据库

sql 复制代码
select database();

创建数据库

sql 复制代码
create database [if not exists] 数据库名;

删除数据库

sql 复制代码
drop database [if exists] 数据库名;

使用数据库

sql 复制代码
use 数据库名;

查询当前数据库所有表

sql 复制代码
show tables;

查询表结构

sql 复制代码
desc 表名;

查询指定表的建表语句

sql 复制代码
show create table 表名;

表操作------添加字段

sql 复制代码
alter table 表名 add 字段名 数据类型[comment 注释] [约束];

表操作------修改字段数据类型

sql 复制代码
alter table 表名 modify 字段名 新数据类型(长度);

表操作------修改字段名及数据类型

sql 复制代码
alter table 表名 change 旧字段名 新字段名 数据类型(长度)[comment 注释][约束];

表操作------删除字段

sql 复制代码
alter table 表名 drop 字段名;

表操作------修改表名

sql 复制代码
alter table 表名 rename to 新表名;

表操作------删除表

sql 复制代码
drop table [if exists] 表名;

表操作------删除指定表,并重新创建该表

sql 复制代码
truncate table 表名;

1.2 DML 数据操作语言

给指定字段添加数据

sql 复制代码
insert into 表名(字段名1,字段名2....)values(值1,,值2....);

给全部字段添加数据

sql 复制代码
insert into 表名 values (值1,值2,...);

批量添加数据

sql 复制代码
insert into 表名 (字段名1,字段名2,.) values (值1,值2,...),(值1,值2,.),(值1,值2,.);
insert into 表名 values (值1,值2,...),(值1,值2,),(值1,值2,....);

注意:

  • 插入数据时,指定的字段顺序需要与值的顺序是-一对应的。
  • 字符串和日期型数据应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。

修改数据

sql 复制代码
update 表名 set 字段名1=值1,字段名2=值2,...[where 条件];
  • 注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

删除数据

sql 复制代码
delete from 表名 [where 条件];

注意:

  • delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
  • delete语句不能删除某一个字段的值(可以使用update)。

1.3 DCL 数据库控制语言

查询用户

sql 复制代码
use mysql;
select * from user;

创建用户

sql 复制代码
create user '用户名'@'主机名'identified by'密码';

修改用户密码

sql 复制代码
alter user '用户名'@'主机名'identified with mysql_native_password by'新密码';

删除用户

sql 复制代码
drop user '用户名'@'主机名';

1.4 SQL 数据库查询语言

条件查询语法

sql 复制代码
select 字段列表 from 表名 where 条件列表;

使用聚合函数查询

sql 复制代码
select 聚合函数(字段列表)from 表名;
  • 常用聚合函数

count:计数

max:最大值

min:最小值

avg:平均数

sum:求和

分组查询

sql 复制代码
select 字段列表 from 表名[where 条件]group by 分组字段名 [having 分组后过滤条件];
  • where与having区别

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤判断条件不同:where不能对聚合函数进行判断,而having可以。

排序查询

sql 复制代码
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
  • 排序方式

asc:升序(默认值)

desc:降序

分页查询

sql 复制代码
select 字段列表 from 表名 limit 起始索引,查询记录数;

注意:

  • 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是limit
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
相关推荐
数据库小组4 小时前
2026 年,MySQL 到 SelectDB 同步为何更关注实时、可观测与可校验?
数据库·mysql·数据库管理工具·数据同步·ninedata·selectdb·迁移工具
华科易迅4 小时前
MybatisPlus增删改查操作
android·java·数据库
Kethy__4 小时前
计算机中级-数据库系统工程师-计算机体系结构与存储系统
大数据·数据库·数据库系统工程师·计算机中级
SHoM SSER4 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
熬夜的咕噜猫5 小时前
MySQL备份与恢复
数据库·oracle
jnrjian5 小时前
recover database using backup controlfile until cancel 假recover,真一致
数据库·oracle
lifewange5 小时前
java连接Mysql数据库
java·数据库·mysql
大妮哟6 小时前
postgresql数据库日志量异常原因排查
数据库·postgresql·oracle
还是做不到嘛\.7 小时前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
不写八个7 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php