首页 > 数据库 >MySql中常用的sql语句大全(工作常用篇)

MySql中常用的sql语句大全(工作常用篇)

时间:2024-08-22 15:53:42浏览次数:18  
标签:表中 常用 users -- MySql 查询 表名 sql select

1. DDL

1.1 操作数据库

--创建库
create database 库名;

--创建库时判断库是否存在,不存在则创建
create database if no exists 库名;

--查看所有数据库
show databases;

--使用指定数据库
use 库名;

--查看当前指定数据库包含的数据表
show tables;

--查看数据库的结构定义信息
show create database 库名;

--删除数据库
drop database 库名;

--修改数据库的字符集为utf8
alter database 库名 character set utf8;

1.2 操作数据表

--创建表
create table 表名(
	字段1 类型1,
    字段2 类型2,
    字段3 类型3,
    ......
);

--查看表结构
desc 表名;

--查看创建表的SQL语句
show create table 表名;

--修改表名
alter table 表名 rename to 新的表名;

--添加一个新的字段
alter table 表名 add 字段;字符类型;

--修改字段名
alter table 表名 rename column 字段名 to 新的字段名;

--修改字段类型(注意类型修改前后数据是否兼容)
alter table 表名 modify column 字段名 新的字段类型;

--删除一个字段
alter table 表名 drop 字段名;

--删除表
drop table 表名;

--删除表时判断表是否存在,若存在则删除
drop table 表名 if exists 表名;

2. DML

2.1 插入数据(insert into)

  • 全字段插入数据(有两种方法,推荐第一种方法)

    --有多少个字段,就要写多少个值,且是一一对应的
    insert into 表名 values(值1,值2...值n);
    
    --此方法要写出所有字段,并一一对应插入值
    insert into 表名(字段1,字段2...字段n) values(值1,值2...值n);
    
  • 部分字段插入数据

    --部分字段插入数据,只写需要插入数据的字段名
    insert into 表名(字段1,字段2...) values (值1,值2...);
    

2.2 删除数据(delete / truncate)

--删除表中所有数据
delete from 表名;

--删除表中指定的数据
delete from 表名 where 字段 = 值;

--删除表中所有数据(先删除整张表,然后创建一张一样的空表,此方法更高效)
truncate table 表名;

2.3 修改数据(update)

--无限制条件的修改,会修改整张表
update 表名 set 字段 = 值;

--有限制条件的修改,只修改特定记录
update 表名 set 字段 = 值 where 条件(字段 = 值);

3. DCL

3.1 管理用户

  • 添加用户

    create user '用户名'@'主机名' identified by '密码';
    
  • 删除用户

    drop user '用户名'@'主机名';
    

3.2 权限管理

  • 查询权限

    show grants for '用户名'@'主机名';
    
  • 授予权限

    --语法
    grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
    
    --授予faker用户所有权限,在任意数据库任意表上
    grant all on *.* to 'faker'@'localhost';
    
  • 撤销权限

    --语法
    revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
    
    --撤销faker用户对test数据库中city数据表的权限
    revoke update on test.city from 'faker'@'localhost';
    

4. DQL

4.1 无条件查询

--查询表中所有数据
select * from 表名;

4.2 查询在…到…之间(between and / && / and)

--查询users表中年龄在18~25岁之间的记录
--方式1 between..and..
select * from users where age between 18 and 25;

--方式2 &&
select * from users where age>=18 && age<=25;

--方式3 and
select * from users where age>=18 and age<=25;

4.3 指定条件查询

  • 单个条件(or / in)

    --查询users表中年龄为18,20,25岁的记录
    --方式1 or
    select * from users where age=18 or age=20 or age=25;
    
    --方式2 in
    select * from users where age in (18,20,25);
    
  • 多个条件(and)

    --查询users表中年龄为23,性别为女,名字为小楠的记录
    select * from users where age=23 and gender='女' and name='小楠';
    

4.4 查询不为NULL值(is not null),为NULL值(is null)

--查询users表中序号不为空的记录
select * from users where id is not null;

--查询user表中序号为空的记录
select * form users where id is null;

4.5 模糊查询(like)

_:单个任意字符
%:多个任意个字符
--查询users表中姓名第一个字为李的记录
select * from users where name = '李%';

--查询users表中姓名第二个字为李的记录
select * from users where name = '_李%';

--查询users表中姓名含有李字的记录
select * from users where name = '%李%';

--查询users表中姓名是两个字的记录
select * from users where name = '__';

4.6 去除重复记录查询(distinct)

--查询users表中所在城市不相同的记录
--select distinct 字段 from 表名;

select distinct city from users;

4.7 排序查询(order by)

  • 单个条件

    --查询users表中记录,并以年龄升序排序
    select * from users order by age;
     
    --查询users表中记录,并以年龄降序排序
    select * from users order by age desc;
    
  • 多个条件

    注意:多个排序条件时,只有当第一个排序条件值一样,才会执行第二个排序条件,以此类推

    --查询users表中记录,并体育成绩降序,年龄降序
    select * from users order by PE desc, age desc;
    

4.8 聚合函数

  • 计算和(sum)

    select sum(字段) (as sumvalue) from 表名;
    
  • 计算最大值(max)

    select max(字段) (as maxvalue) from 表名;
    
  • 计算最小值(min)

    select min(字段) (as minvalue) from 表名;
    
  • 计算平均值(avg)

    select avg(字段) (as avgvalue) from 表名;
    
  • 计算个数(count)

    select count(字段)(as totalcout) from 表名;
    

4.9 分组查询(group by)

--查询users表中的记录,按照性别分组,查询男,女的体育成绩平均分
select gender,avg(PE) from users group by gender;

--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数
select gender,avg(PE),count(id) from users group by gender;

--查询users表中的记录, 按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组
select gender,avg(PE),count(id) from users where PE>60 group by gender;

 --查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组,分组之后,人数要大于2个人
select gender,avg(PE),count(id) from users where PE>60 group by gender having count(id)>2;

4.10 分页查询(limit)

注意:第一条记录的索引是0

--查询users表中的前10行条记录
select * from users limit 10;

--查询users表中第2~11条记录 (从第2条记录开始累加10条记录)
select * from users limit 1,10;

--查询users表中第5~17条记录 (从第5条记录开始累加13条记录)
select * from users limit 4,16;

4.11 内连接查询

如果查询数据的来源来自多张表,则必须对这些表进行连接查询,连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理,连接查询分为内连接和外连接

语法格式

--语法1 (隐式内连接)
select 字段1,字段2...
from 表1,表2...
where 过滤条件;
 
--语法2 (显式内连接)
select 字段1,字段2...
from 表1 inner join 表2 ...
on 过滤条件;

e.g 有两张表:user表和city表

user表:

idname
001小红
002小蓝
003小白
004小黄
005小绿
006小青

city表:

idaddress
001深圳
002广州
003北京
004上海
005汕头
006潮州
007揭阳

重合的部分就叫做内连接查询,例如下面过滤条件指的就是当两个表的id相等时才符合连接查询的条件

  • 隐式内连接

    select user.name,city.address
    from user,city
    where user.id = city.id;
    

    结果为:

    nameaddress
    小红深圳
    小蓝广州
    小白北京
    小黄上海
    效率汕头
    小青潮州
  • 显式内连接

    select user.name,city.address
    from user inner join city
    on user.id = city.id;
    

4.12 外连接查询

外连接查询分为左外连接查询和右外连接查询

语法

--左外连接
select 字段1,字段2..
from 表1 left outer join 表2 on 过滤条件;

--右外连接
select 字段1,字段2..
from 表1 right outer join 表2 on 过滤条件;

左外连接和右外连接有一点区别:

左外连接:是表1和表2的交集再并上表1的其他数据

右外连接:是表1和表2的交集再并上表2的其他数据

e.g: 上面两张表的左外链接结果

select user.name,city.address
from city left outer join user
on user.id = city.id;

结果为:

nameaddress
小红深圳
小蓝广州
小白北京
小黄上海
效率汕头
小青潮州
NULL揭阳

简单点说就是求交集之后并上city的其他数据,没有匹配的为NULL

右外连接结果:

select user.name,city.address
from city right outer join user
on user.id = city.id;

结果为:

nameaddress
小红深圳
小蓝广州
小白北京
小黄上海
效率汕头
小青潮州

简单点说就是求交集之后并上user的其他数据,没有匹配的为NULL

4.13 子查询

当我们进⾏语句查询的时候,总会遇到我们需要的条件需要通过另⼀个查询语句查询出来后才能进⾏,就是说A 查询语句需要依赖B 查询语句的查询结果,B 查询就是⼦查询,A 查询语句就是主查询,⼀个SQL语句可以包含多个⼦查询。

语法

select username
from user
where age =(
	select avg(age)
    from userInfo
)

例如:要查询工资大于10号部门的平均工资的非10号部门的员工信息

查询10号部门的平均工资

select avg(sal) from emp where deptno = 10;

那么工资大于10号部门的平均工资的非10号部门的员工信息为

select * from emp 
where deptno!=10 and sal>(
	select avg(sal)
    from emp
    where deptno = 10;
)

一些子查询的实例

查询在2022年8月9日销售的产品信息

select *
from dbo.product
where pno in (
	select pno from dbo.prd
    where odate = '2022/'
)

标签:表中,常用,users,--,MySql,查询,表名,sql,select
From: https://blog.csdn.net/weixin_53249168/article/details/141423358

相关文章

  • Linux常用命令
    首先登陆linux系统,输入账号xxxx回车,再输入密码:xxxxLinux常用命令如下:[root@localhost~]# cd ..  --- 返回上一级目录[root@localhost/]#ls     ---查看目录信息(有很多目录)[root@localhost/]#cd-  --返回上次所在的目录  [root@localhost/]#cdhom......
  • 如何避免Mysql RR 隔离级别下的 INSERT 死锁
    背景       我们公司架构师,在使用Mysql做分布式锁的时候,因insert唯一键冲突,造成死锁。引起我对这部分知识点的兴趣和研究。       死锁日志的详细信息如下:LATESTDETECTEDDEADLOCK------------------------2024-08-1916:32:450x7f92b0ca2700***......
  • 常用算法 -- 回溯算法
    1简介        回溯算法是一种基于试错思想的搜索算法,也是一种重要的编程技巧,常用于解决组合、排列、切割等问题。它通过不断尝试解决问题的每一步,一旦发现当前步骤不能得到有效的正确解,就会返回上一步或多步,并尝试其他可能的分步解决方案。这种策略使得回溯算法能够......
  • MySQL高可用方案
    1.https://vitess.io/zh/2.orchestrator主从方案基于二进制日志文件和位置的复制原理:从服务器根据主服务器的二进制日志(binlog)中的文件名和位置进行复制。配置:在从服务器上配置主服务器的binlog文件名和位置。故障转移:手动介入:一旦主服务器故障,需要手动重新配置新的主服......
  • Mysql
    1、时间差(秒级别)selectcreatime,updatime,TIMESTAMPDIFF(MICROSECOND,creatime,updatime)/1000000  AS time_diff  from  表名whereapplicationlike'%17%'and creatime>"2024-06-1414:41:29.803"andclient_idin("LSW12345678901223") ......
  • 链表的一些常用函数
    本文用一个相同的主函数和结构体来讲述链表的14种常见函数主函数和结构体#include<stdio.h>#include<stdlib.h>typedefstructnode{ intnum; structnode*p_next;}node;typedefstruct{ nodehead; nodetail;}link;intmain(){ linklnk={0}; li......
  • ado.net 操作sqlite
    新建控制台项目安装nuget包Microsoft.Data.Sqlite数据库名字和链接stringdbName="test.db";SqliteConnection?connection=null;try{//创建链接connection=newSqliteConnection($"DataSource={dbName}");//打开链接connection.Open();......
  • 【溯源系列】使用Wireshark分析日志文件:发现有人对网站进行了SQL注入,分析日志找到该IP
    工具Wireshark某公司安全工程师在维护网站时发现有人对网站进行了SQL注入,分析日志找到该IP地址。要点SQL.log文件主要显示具体的sql语句】access.log文件主要是记录web页面操作数据库的请求解题很简单,直接打开access.log文件,一步到位,检索sql注入的常见关键词select、un......
  • Pycharm连接mysql数据库
    importpymysql1、需要使用pymysql在三方库;importpymysqlconfig={'user':'investbank_newforp','password':'m@H2wp4B@7e9','host':'192.168.154.241','port':15213,......
  • windows常用命令
    一、CMD运行常用命令1.打开windows启动文件--C:\ProgramData\Microsoft\Windows\StartMenu\Programs\StartUpshell:startup2.防火墙高级设置fw.msc3.注册文件gpedit.msc4.磁盘管理diskmgmt.msc5.安全策略secpol.msc二、查询常用1.安装telnet客服端后,仍无法使......