史上超强最常用SQL语句大全

史上超强最常用SQL语句大全史上超强最常用SQL语句大全,)1)DDL–数据定义语言用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等2)DML–数据操作语言用来对数据库中表的数据进行增删改。关键字:insert,delete,update等3)DQL–数据查询语言用来查询数据库中表的记录(数据)。关键字:selewhere等4)DCL–数据控制语言用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT,REVOKE等

大家好,又见面了,我是你们的朋友全栈君。

史上超强最常用SQL语句大全

DDL(Data Definition Language)数据定义语言

一、操作库

二、操作表

DML(Data Manipulation Language)数据操作语言

一、增加 insert into

二、删除 delete

三、修改 update

DQL(Data Query Language)数据查询语言

一、基础关键字

二、排序查询 order by

三、 聚合函数:将一列数据作为一个整体,进行纵向的计算。

四、 分组查询 group by

五、 分页查询

六、内连接查询:

1.隐式内连接:使用where条件消除无用数据

 2.显式内连接

 七、外连接查询

1.左外连接 — 查询的是左表所有数据以及其交集部分。

 2.右外连接  — 查询的是右表所有数据以及其交集部分。

 八、子查询:查询中嵌套查询

   1.子查询的结果是单行单列的

   2. 子查询的结果是多行单列的:

   3. 子查询的结果是多行多列的:

 DCL(Data Control Language)数据控制语言

管理用户

添加用户

删除用户

权限管理

查询权限

授予权限

撤销权限

  创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。  


DDL(Data Definition Language)数据定义语言

一、操作库

-- 创建库
create database db1;
-- 创建库是否存在,不存在则创建
create database if not exists db1;
-- 查看所有数据库
show databases;
-- 查看某个数据库的定义信息 
show create database db1; 
-- 修改数据库字符信息
alter database db1 character set utf8; 
-- 删除数据库
drop database db1; 

二、操作表

--创建表
create table student(
    id int,
    name varchar(32),
    age int ,
    score double(4,1),
    birthday date,
    insert_time timestamp
);

-- 查看表结构
desc 表名;
-- 查看创建表的SQL语句
show create table 表名;
-- 修改表名
alter table 表名 rename to 新的表名;
-- 添加一列
alter table 表名 add 列名 数据类型;
-- 删除列
alter table 表名 drop 列名;
-- 删除表
drop table 表名;
drop table  if exists 表名 ;

DML(Data Manipulation Language)数据操作语言

一、增加 insert into

-- 写全所有列名
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-- 不写列名(所有列全部添加)
insert into 表名 values(值1,值2,...值n);
-- 插入部分数据
insert into 表名(列名1,列名2) values(值1,值2);

二、删除 delete

-- 删除表中数据
delete from 表名 where 列名  = 值;
-- 删除表中所有数据
delete from 表名;
-- 删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)
truncate table 表名;

三、修改 update

-- 不带条件的修改(会修改所有行)
update 表名 set 列名 = 值;
-- 带条件的修改
update 表名 set 列名 = 值 where 列名=值;

DQL(Data Query Language)数据查询语言

关于查询语句有很多,这里基础的不再介绍。主要介绍排序查询、聚合函数、模糊查询、分组查询、分页查询、内连接、外连接、子查询

一、基础关键字

 BETWEEN…AND (在什么之间)和  IN( 集合)

-- 查询年龄大于等于20 小于等于30				
SELECT * FROM student WHERE age >= 20 &&  age <=30;
SELECT * FROM student WHERE age >= 20 AND  age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
				
-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);

 is null(不为null值) 与 like(模糊查询)、distinct(去除重复值)

-- 查询英语成绩不为null
SELECT * FROM student WHERE english  IS NOT NULL;
	
 _:单个任意字符
 %:多个任意字符
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人			
SELECT * FROM student WHERE NAME LIKE "_化%";				
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';					
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';

-- 关键词 DISTINCT 用于返回唯一不同的值。
-- 语法:SELECT DISTINCT 列名称 FROM 表名称
SELECT DISTINCT NAME FROM  student ;

二、排序查询 order by

语法:order by 子句

          order by 排序字段1 排序方式1 ,  排序字段2 排序方式2…

注意:
            如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。

-- 例子
SELECT * FROM person ORDER BY math; --默认升序
SELECT * FROM person ORDER BY math desc; --降序

三、 聚合函数:将一列数据作为一个整体,进行纵向的计算。

1.count:计算个数

2.max:计算最大值

3.min:计算最小值

4.sum:计算和

5.avg:计算平均数

四、 分组查询 grout by

      语法:group by 分组字段;

      注意:分组之后查询的字段:分组字段、聚合函数

-- 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;

-- 按照性别分组。分别查询男、女同学的平均分,人数
 SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;

--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

 --  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

五、 分页查询

    1. 语法:limit 开始的索引,每页查询的条数;
    2. 公式:开始的索引 = (当前的页码 – 1) * 每页显示的条数
    3. limit 是一个MySQL”方言” 

-- 每页显示3条记录 

SELECT * FROM student LIMIT 0,3; -- 第1页

SELECT * FROM student LIMIT 3,3; -- 第2页

SELECT * FROM student LIMIT 6,3; -- 第3页

六、内连接查询:

   1. 从哪些表中查询数据

   2.条件是什么

   3. 查询哪些字段

1.隐式内连接:使用where条件消除无用数据

-- 查询员工表的名称,性别。部门表的名称
SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.`dept_id` = dept.`id`;

SELECT 
    t1.name, -- 员工表的姓名
    t1.gender,-- 员工表的性别
    t2.name -- 部门表的名称
FROM
    emp t1,
    dept t2
WHERE 
    t1.`dept_id` = t2.`id`;

 2.显式内连接

-- 语法: 
select 字段列表 from 表名1 [inner] join 表名2 on 条件
-- 例如:
SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;   
SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`; 

 七、外连接查询

1.左外连接 — 查询的是左表所有数据以及其交集部分。

-- 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
-- 例子:
-- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称
SELECT  t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;

 2.右外连接  — 查询的是右表所有数据以及其交集部分。

-- 语法:
select 字段列表 from 表1 right [outer] join 表2 on 条件;
-- 例子:
SELECT  * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;

 八、子查询:查询中嵌套查询

-- 查询工资最高的员工信息
-- 1 查询最高的工资是多少 9000
SELECT MAX(salary) FROM emp;

-- 2 查询员工信息,并且工资等于9000的
SELECT * FROM emp WHERE emp.`salary` = 9000;

 -- 一条sql就完成这个操作。这就是子查询
SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);

   1.子查询的结果是单行单列的

 子查询可以作为条件,使用运算符去判断。 运算符: > >= < <= =

-- 查询员工工资小于平均工资的人
SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);

   2. 子查询的结果是多行单列的:

   子查询可以作为条件,使用运算符in来判断

-- 查询'财务部'和'市场部'所有的员工信息
SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部';
SELECT * FROM emp WHERE dept_id = 3 OR dept_id = 2;

-- 子查询
SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');

   3. 子查询的结果是多行多列的:

   子查询可以作为一张虚拟表参与查询

-- 查询员工入职日期是2011-11-11日之后的员工信息和部门信息
-- 子查询
SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2 WHERE t1.id = t2.dept_id;

-- 普通内连接
SELECT * FROM emp t1,dept t2 WHERE t1.`dept_id` = t2.`id` AND t1.`join_date` >  '2011-11-11'

 DCL(Data Control Language)数据控制语言

管理用户

添加用户

语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

删除用户

语法:DROP USER '用户名'@'主机名';

权限管理

查询权限

-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'lisi'@'%';

授予权限

-- 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

-- 给张三用户授予所有权限,在任意数据库任意表上
GRANT ALL ON *.* TO 'zhangsan'@'localhost';

撤销权限

-- 撤销权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';

  创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130688.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月14日 上午6:46
下一篇 2022年6月14日 上午6:46


相关推荐

  • 序列化和反序列化的详解[通俗易懂]

    序列化和反序列化的详解[通俗易懂]一、基本概念1、序列化和反序列化的定义:  (1)Java序列化就是指把Java对象转换为字节序列的过程    Java反序列化就是指把字节序列恢复为Java对象的过程。  (2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。    反序列化的最重要的作用:根据字节流中保存的对…

    2022年4月20日
    41
  • 如何制作gif图片

    如何制作gif图片

    2021年10月14日
    63
  • CFileDialog类应用详解

    CFileDialog类应用详解原文地址 http blog csdn net bxwang1 article details 构造函数原型 CFileDialog BOOLbOpenFil nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp LPCTSTRlpszD NULL nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp LPCTSTRlpszF NULL nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp D

    2025年11月9日
    9
  • Dlsym_c=α+βy

    Dlsym_c=α+βy为什么80%的码农都做不了架构师?>>>…

    2025年7月12日
    5
  • centos6 7 zabix grafana安装配置

    centos6 7 zabix grafana安装配置一 安装 zabbix0 关闭 selinuxvim etc selinux configSELINU disabled 设置后需要重启才能生效 shell gt setenforce0 临时关闭 shell gt getenforce 检测 selinux 状态 1 Zabbix 在 CentOS 基本源里不可获得或者获得到的都是老版本的 因此必须配置 Zabbix 官方 r

    2025年7月30日
    7
  • .net core实现aop_redis实时计算

    .net core实现aop_redis实时计算引言  最近工作上有需要使用redis,于是便心血来潮打算自己写一个C#客户端。经过几天的努力,目前该客户端已经基本成型,下面简单介绍一下。通信协议  要想自行实现redisClient,则必须先要了解Redis的socket能信协议。新版统一请求协议在Redis1.2版本中引入,并最终在Redis2.0版本成为Redis服务器通…

    2022年10月12日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号