SQL(单表常用语句)

目录

SQL通用语法

SQL分类

DDL

操作数据库

操作表

DML

DQL

查询语法

基础查询

条件查询where

排序查询order by

分组查询group by

分页查询limit

SQL通用语法

  1. SQL语句可以单行或者多行书写,以分号结尾。

  2. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

  3. 注释 单行注释:--或#;多行注释/* */

SQL分类

DDL:操作数据库,表

DML:对表中的数据进行增删改

DQL:对表中的数据进行查询

DCL:对数据库进行权限控制

DDL

操作数据库

 show databases;-- 查询数据库
 ​
 create database 数据库名;-- 创建数据库
 create database if not exists 数据库名;-- 创建数据库(如果不存在)
 ​
 drop  database  数据库名;-- 删除数据库
 drop database if exists 数据库名; -- 如果存在才删除
 ​
 use 数据库名称;-- 使用数据库
 select database();-- 查看当前使用的数据库

操作表

查询表

show tables; -- 查询当前数据库下所有表名称

describe/desc 表名称;-- 查询表结构

创建表

create table 表名(

字段名 数据类型,

字段名 数据类型,

..........

字段名 数据类型

);

注意:最后一个不加,

数值类型常用:

例:grade double(0-100成绩 保留两位小数)--->grade double(5,2),

日期时间类型常用:

字符串类型:

char 定长数据类型 存储效率高 浪费空间

varchar 变长数据类型 存储效率低 节约空间

二进制:

删除表

 drop table 表名;-- 删除表
 drop table if exists 表名;-- 如果存在在删除

修改表

 alter table 表名 rename to 新表名;-- 修改表名
 alter table 表名 add 列名 类型;-- 添加一列
 alter table 表名 modify 列名 新类型;-- 修改数据类型
 alter table 表名 change 列名 新列名 新数据类型;-- 修改列名和数据类型
 alter table 表名 drop 列名;-- 删除列

DML

添加数据

 -- 给指定列添加数据
 insert into 表名(列1,列2,...) values(值1,值2);
 ​
 -- 给全部列添加数据,列名列表可以省略
 insert into 表名 values(值1,值2,...);
 ​
  -- 批量添加数据
 insert into 表名(列1,列2,...) values(值1,值2,...),(值1,值2,...)...;
 insert into 表名 value(值1,值2,...),(值1,值2,...)...;

修改表数据

 -- 修改数据
 update 表名 set 列名1=值1,列名1=值1,....[where 条件];

删除数据

 -- 删除数据
 delete from 表名 where 条件;
 -- 不加条件会对所有数据删除

DQL

查询语法

 
select 
     字段列表
 from
     表名列表
 where
     条件查询
 group by
     分组字段
 having
     分组后条件
 order by
     排序字段
 limit
     分页限定

基础查询

 -- 查询指定列
 select 列名1,列名2  from 表名;
 ​
 -- 查询所有(不建议使用*)
 select * form 表名;
 ​
 -- 去除重复记录
 select  distinct  列名1  from  表名;
 ​
 -- 取别名
 select 列名 as 别名,列名 as 别名,..  from 表名;

条件查询where

 select 列名 from 表名 where 条件;

模糊查询LIKE

统配符:1. _ :代表单个任意字符 2. %:代表任意个数字符

排序查询order by

 select 字段列表 from 表名 order by 排序字段1 [排序方式],排序字段1 [排序方式]....;

排序方式:

ASC:升序排列(默认)

DESC:降序排列

注意:如果有多个条件,当前面的条件值一样是,才会根据第二条进行排序

分组查询group by

聚合函数

函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值
 select 聚合函数名(列名) from 表;

注意:null值不参与所欲聚合函数运算

 -- 避免非空的情况1.主键查询 2.下面的方式
 select count(*) from stu;

分组查询

 select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 
[having 分组后条件过滤];

注意:分组后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where和having的区别:

  1. 执行时机不同,where是分组前限定,而having是分组后进行过滤

  2. 判断的条件不同,where不能对聚合函数进行判断,having可以

执行顺序: where>聚合函数>having

例:

 -- 查询男女同学各自的数学平均分
 select sex,avg(math) from stu group by sex;
 ​
 -- 查询男女同学各自的数学平均分,以及各自人数
 select sex,avg(math),count(*) from stu group by sex;
 ​
 -- 查询男女同学各自的数学平均分,以及各自人数;要求:分数大于70才分组
 select sex,avg(math),count(*) from stu where math > 70 group by sex;
 ​
 -- 查询男女同学各自的数学平均分,以及各自人数;要求:分数大于70才分组,分组后人数大于2
 select sex,avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;

分页查询limit

分页语法:

 select 字段列表 from 表名 limit 起始索引,查询条目数;

计算公式:起始索引=(当前页码-1)*每页显示的条目

例:

 -- 从0开始查询,查询3条数据
 select * from stu limit 0 , 3;
 -- 每页显示3条数据,查询第一页的数据
 select * from stu limit 0 , 3;
 -- 每页显示3条数据,查询第二页的数据
 select * from stu limit 3 , 3;
 -- 每页显示3条数据,查询第三页的数据
 select * from stu limit 6 , 3;

tips:

  1. 分页查询limit是MySQL的数据库方言

  2. Oracle分页查询使用rownumber

  3. SQL Server 分页查询使用top

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值