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。
相关推荐
不是起点的终点9 分钟前
【实战】Python 一键生成数据库说明文档(对接阿里云百炼 AI,输出 Word 格式)
数据库·python·阿里云
2301_813599552 小时前
Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
jvm·数据库·python
NCIN EXPE7 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台7 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路7 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家7 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE7 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow127 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO7 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623927 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python