整理一下sql的关键字,一直都在用,只是很少去整理,所以今天简单整理一下,主要是整理CRUD的一些关键字。

写在前面:sql 不区分大小写

select 简单查询语句

select columnName from tableName where condition group by columnName having condition order by columnName desc asc limit 1;

  1. 需要注意说明:当同时含有where子句、group by 子句 having子句及聚集函数时,执行顺序如下:
  2. 执行where子句查找符合条件的数据;
  3. 使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
  4. having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
  5. having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
  6. having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
  7. where在分组前过滤,having在分组后过滤
  8. having字段必须是查询出来的,where字段必须是数据表存在的。
  9. where 不可以使用字段的别名,having 可以。因为执行WHERE代码时,可能尚未确定列值。

涉及到的关键字:

  • distinct:对查询列进行去重,也可以用在聚合函数中。
  • and:用于并列查询条件,左右两边的条件同时满足时才为真。例如:查询姓名为jason并且年龄为22的学生信息。 select * from student as s where s.name='jason' and s.age=22;
  • or:也用于查询条件,只要满足了左右两边条件中的一个即可,例如:查询姓名为jason或者年龄为22的学生信息。 select * from student as s where s.name='jason' or s.age=22;
  • not:表示对查询条件取反,通常和in,between..and..搭配使用。
  • between..and.. 或者 not between..and.. :用于查询条件,通常为符合某个区间的数值或者日期。
  • in 或者 not in:用于查询条件,表示只要查询的列满足其中的一个即可(not in 相反),例如:查询id为1,2,3的学生信息。select * from student as s where s.id in(1,2,3);
  • is null 或者 is not null:用于查询条件,判断某个字段列是否为空值(is not null 相反),例如:查询姓名不为空的学生信息。select * from student as s where s.name is not null;
  • like 或者 not like 后接通配符:用于查询条件,通常和 %(0或者多个),_(一个)通配符搭配使用,例如:查询姓名为j开头的学生信息。select * from student as s where s.name like 'j%';
  • exists 或者 not exists:用于查询条件,主要是用于判断某个结果是否存在于表中,如果存在则为true,否则为false。数据量很大时适合使用,而in当数据量很大时则不太适用。
  • as:用于为列或者表起别名,也可以使用空格为列或者表起别名,不建议混用。
  • *:表示查询表中符合条件的所有字段信息。
  • with: 常常与as连用,将查询到的结果暂时存储到一张虚表当中,然后再做操作。后面必须紧跟使用这个虚表的sql语句。

    例如:with a as (SELECT * FROM table_a);

    select * from a;
  • `>,<,=,<>,!=:分别表示大于,小于,等于,不等于。
  • union(去重)/union all(不去重):可以将一个或多个 SELECT 语句的结果连接组合成一个结果集,但是必须列类型和列的个数要一致。

    例如:将学生姓名为jason的学生和学生爱好为听歌的学生查询出来(例子不恰当)

    select s.id,s.name,s.addr from student as s where s.name='jason'

    union all

    select d.id,d.name,d.addr from student as d where d.hobby='listen song';
  • intersect/intersect all(交运算,all不去重):表示获取两个查询sql结果的交集。

    类似:

    select s.id,s.name,s.addr from student as s where s.name='jason'

    intersect all

    select d.id,d.name,d.addr from student as d where d.hobby='listen song';
  • except/except all(差运算,all不去重):表示获取两个查询sql结果的差集。

sql多表查询语句

  • inner join on :表示内连接(内连接可用where替换)

    例如:查询a表中在b表中存在id为1的数据信息

    select * from a inner join b on a.id=b.id and a.id=1;

    可以使用where子句替换为:select * from a,b where a.id=b.id and a.id=1;

    有些情况下,可以使用连接来替代子查询。因为使用join,MySQL不需要在内存中创建临时表。

  • left join on(左外连接):表示左外连接

    例如:查询a表中在b表中存在姓名j开头的数据信息(例子不恰当)

    select a.name,b.sex from a left join b on a.id=b.id and a.name like 'j%';

    它的含义是即使b表中没有与a表中匹配的数据信息,a表中的数据信息都会全部查询出来。

    left join on 后跟and和where区别

    (1)ON条件是在生成临时表时使用的条件,它不管ON中的条件是否为真,都会返回左边表中的记录;

    (2)WHERE条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有LEFT JOIN的含义(必须 返回左边表的记录)了,条件不为真的就全部过滤掉;

    (3)AND 是过滤之后再连接,WHERE是连接之后再过滤。

    (4)而inner jion没这个特殊性,则条件放在on中和where中,返回的结果集是相同的。

  • right join on(右外连接):表示右外连接

    select a.name,b.sex from a right join b on a.id=b.id and a.name like 'j%';

    它的含义与左外连接相反。

  • full join(全连接):即使数据没有在两张表中同时存在,也要返回行。

    select a.name,b.sex from a full join b on a.id=b.id and a.name like 'j%';

sql插入语句

insert into tablename(column) values(value);

插入语句有四种方式,单个值插入,多个值插入,全部插入,条件插入

  1. 第一种情况插入指定字段
  2. insert into table_name(column1,column2)values(value1,value2);
  3. 第二种情况插入所有字段:前提条件是字段顺序必须与表中字段顺序一致
  4. insert into table_name values(value1,value2);
  5. 第三种情况批量插入数据
  6. insert into table_name values (value1,value2),(value1,value2);
  7. 也可以指定插入批量数据
  8. insert into table_name(column1,column2) values(value1,value2),(value1,value2);
  9. 第四种情况就是当满足了指定条件时才插入数据
  10. insert into (column1,column2) select value1,value2 from table_name where ...
  11. 也就是后面select子句中查询出来的列作为前面的值插入到表中,但是这个列的个数要和前面的字段个数一致。select子句就可以随便写了。
  12. 例如
  13. insert into dept(deptno,dname,loc) select 11,dept.dname,dept.loc from dept where deptno=22;

sql删除语句

delete from tablename where condition;

sql更新语句

update tablename set column=value where condition;

sql更改表结构

alter table ..add(添加属性)

alter table..drop(删除属性)

sql删除表

drop table

删除表(不可恢复):truncate

sql常见函数

  • avg():表示求平均值
  • min():表示求最小值
  • max():表示求最大值
  • sum():表示求和
  • count():表示计数统计

sql的关键字的更多相关文章

  1. //sql过滤关键字

    //sql过滤关键字 public static bool CheckKeyWord(string sWord) { //过滤关键字 string StrKeyWord = @"select ...

  2. SQL保留关键字不能用作表名

    com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'User' 附近有语法错误. 一看就是SQL语句错误,发现控制台console上打印出来的S ...

  3. 单表:SQL语句关键字的执行顺序

    表和数据: -- 创建表 CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `age` ) ', ` ...

  4. mybatis plus 使用 SQL 保留字(关键字)

    MybatisPlus:使用SQL保留字(关键字)的操作 必须要手动在 entity 的字段上加注解,否则最终会报错,因为 mybatis 或者 mybatis plus 不会自动处理

  5. SQL数据库关键字和列名冲突处理

    在设计SQL数据库的时候可能由于考虑不全,使列名和数据库内关键字冲突,可能导致Query不能被正确识别,对列名要加[]处理.

  6. 容斥原理及SQL in关键字在EF中的应用

    突然意识到文字的重要性,于是开始写了第一个篇博客,博客目的紧紧为记录,以便温故. 同时也希望抛砖能达到引玉的作用,欢迎各位来发表自己的感想与想法,以此达到相互学习促进! 背景: 在做百度地图电子围栏的 ...

  7. 【转】SQL 常用关键字释义和用法

    转自: http://blog.csdn.net/iamwangch/article/details/8093933     下面 是 从网络上整理 出来的 SQL 关键字和 常用函数的 释义和简单用 ...

  8. SQL中关键字的执行顺序

    作为一个SQL新手,看到每种不熟悉的关键字时已经够迷茫了,可往往见到的语句关键字顺序还是各种各样,太难理解了.网上搜索了两篇文章,总结一下: 关于Sql关键字SELECT FROM GROUP ORD ...

  9. SQL基础 关键字

    SQL语言类型 数据定义:create/alter/drop table/trigger/index/function/存储过程/约束/…数据操纵:select/update/insert/delet ...

随机推荐

  1. Android ROM适配

    Android是开源的,不同的手机厂商都有自己定制的系统,所以这就给开发者带来了ROM适配难题.在一些群里面经常看到有人因为手机适配问题,说这个手机坑,那个手机坑,其实那是没有对ROM定制系统的一些变 ...

  2. H5和原生APP之间的区别

    最近项目中因各种客观因素,移动端都是默认用的纯H5 APP,感受最深的就是各种坑啊,好大的坑啊.产品上线后,带着各种坑后的总结原因方发现很多人都说纯H5 APP一次编写就能支持android和IOS两 ...

  3. C语言中函数strcpy ,strncpy ,strlcpy的用法

    strcpy ,strncpy ,strlcpy的用法 好多人已经知道利用strncpy替代strcpy来防止缓冲区越界. 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式. 1. s ...

  4. centos7最小安装怎么安装防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,需要事先关闭. 关闭firewall: 1 2 3 systemctl stop firewalld.service systemctl d ...

  5. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法

    笔记 3.登录检验JWT实战之封装通用方法     讲解:引入相关依赖并开发JWT工具类 1.加入相关依赖 <!-- JWT相关 -->             <dependenc ...

  6. Python的一个bug,记录一下

    安装报错:E:\webpy-master>python setup.py installTraceback (most recent call last): File "setup.p ...

  7. intellij idea如何将web项目打成war包

    1.点击[File]->[Project Structure]菜单(或使用Shift+Ctrl+Alt+S快捷键),打开[Project Structure]窗口.如下图: 2.在[Projec ...

  8. Vim的强大配置文件

    我的vim配置主要有以下优点: 1.按F5可以直接编译并执行C.C++.java代码以及执行shell脚本,按“F8”可进行C.C++代码的调试 2.自动插入文件头 ,新建C.C++源文件时自动插入表 ...

  9. R语言与概率统计(五) 聚类分析

    #########################################0808聚类分析 X<-data.frame( x1=c(2959.19, 2459.77, 1495.63, ...

  10. 前端学习(一) html介绍和head标签

    HTML 一. HTML 介绍 1. HTML概述:html全称Hyper Text Mackeup Language, 翻译为超文本标记语言, 它不是一种编程语言, 是一种描述性的标记语言, 用于描 ...