SQL语句小总结
无论是面试过程中,还是未来工作中,SQL都是一定会考到和用到的。所以,在此对之前看过的一些SQL知识点进行一下总结和记录,算是起到一个笔记本的作用。没有深入学习过SQL的和对SQL印象不太深的朋友可以看一下,起到一个快速使用SQL语句的作用(针对有一点SQL知识的人的)。
首先,SQL最基础的就是语句的使用,SQL根据功能分为查询语句、插入语句、修改语句和删除语句,这里用到最多的便是查询语句,首先便总结一下查询语句的用法:
1.简单查询
(1).select name from table;
意思是在table这张表里查询一个名为name的列,它会将表中name下的所有数据查询出来。
(2).select id,name from table;
表示在table中查询出id和name列下的所有数据,两个被查询的列名之间用逗号分隔。
(3).select * from table;
*号表示所有,意思是查询出table表中的所有内容;
注:这样查询出的语句没有过滤也没有排序,是最简单的查询结果;SQL中不区分大小写;且SQL语句可以分成多行写,很多人认为这样更方便阅读和调试,结尾要用“;”号。
2.不同值查询
一个表中存储的数据肯定不会全都不同,查询出来的很多也都是相同的值,如果你不想显示重复值的话,可以在查询时使用“DISTINCT”关键字,作用是去重;
例:select distinct name from table;
意思查询table表中的name一列,并把不出现重复后的结果显示出来,比如一开始的查询结果是 x,x,x,y,y,z,z,z,z,去重之后的结果就是x,y,z。
3.限制结果查询
一般来说限制结果查询会在分页当中用到,因为限制结果查询的用处就是,让查询结果按你想要的行数显示出来,只简单介绍Oracle和MySQL的语句:
(1).select name from table where rownum<=5;
Oracle中使用rownum关键字表示结果限制;
(2).select name from table limit 5;
MySQL中使用limit关键字限制结果;
两者都表示查询table表中name列下的数据,但只显示前五行数据。
4.排序查询
笔试中都会出到的升序降序问题,SQL可以根据不同的条件,按想要的方式对查询结果进行排列,默认是升序排列,这里用到关键字“Order by”,且只是显示结果改变,并未改变数据存放结构。
select id,name from table order by name;
意思就是查找table表中id和name两列的数据并按name的A-Z升序排列显示。
select id,name from table order by name desc;
结果就是降序排列显示,需要在order by的属性后面加上关键字“desc”。
5.过滤数据查询
数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会根据特定操作或报告的需要提取表数据的子集。想要使用不同的条件,就需要使用到“where”关键字,在“where”后面加各式的条件以达到目的。
(1).select * from table where id=1;
意思是查询出table中id列为1的这一行的所有数据。另外还有大于(>)、小于(<)、不等于(!=)这一系列操作符。
(2).select * from table where price between 5 and 10;
意思是查询table中 价格在5到10之间的所有数据,用“between”关键字和“and” 一起使用,多条件查询也可以用“and”、“or”连接查询条件,表示“并且”和“或者”。
(3).select name, price from table where (id = '1' or id = '01') and price>=10;
意思是查询出table表中id为1或者01 且价格大于等于10的数据的name和price;这里涉及到优先级,and的优先级要高于or,所以要加括号,括号的优先级更高,不然结果就只会显示价格高于10的情况。
(4).select id,name from table where name like "f%";
意思是查询table表中name以“f”开头的所有行的id和name数据。 这里用到了“like”关键字和通配符“%”,通配符可以表示其后的所有字符,若是“%f%”则代表name中包含“f”的意思。"f%y"代表“f”开头“y”结尾的意思。
(5).select id as idd from table order by id;
意思是查询table表中的id并升序排列且查询出的结果赋予一个新的列名为“idd”,可以用“as”关键字实现,表示另命名。
6.聚集函数查询
聚集函数分为Avg()、Max()、Min()、Sum()、Count()分别表示返回某列的平均值、返回某列的最大值、返回某列的最小值、返回某列的值之和、返回某列的行数。
(1).select avg(price) as new_price from table;
意思是返回table表中 价格属性的平均值并另命名为new_price。
(2).select count(*) as new from table;
意思是对table表中的行数进行统计,不管表中包含空值还是非空,而count(name),表示统计name列的行数,但是忽略了null值。其余三个函数用法相同,这里就不一一写明。
7.分组数据查询
使用分组可以将数据分为多个组,对每个组进行运算更方便。
(1).select name, count(*) as num from table GROUP BY name;
意思是对table中的name进行分组和计算,例如
name num
A 3
B 2
C 4
可以看到他对name为ABC的数据行进行了统计并分组。
(2).select id, COUNT(*) AS orders FROM table GROUP BY id HAVING COUNT(*) >= 2;
意思是对table中的id进行分组,并统计每组数,这里也用到了过滤数据,要求统计数目大于等于2,这里的关键字HAVING可以代替“where”的作用,但是平常应使用“where”,HAVING是结合Group By使用的。
8.子查询
可以把select的查询结果用于另一条select的where子句中,以实现一条语句直接完成多条件查询的功能。
SELECT cust_id FROM table WHERE order_num IN (SELECT order_num FROM Order WHERE prod_id = '01’);
可以拆分来看,先看括号里是查询order表中的order_num,条件是id为01;而括号外的意思是查询table中的id,条件是num为什么,这里num为括号里查询到的结果。用关键字“IN”来连接子句,执行了两个查询操作,同样可以在括号里再嵌套一个IN(),里面同样可以再添加查询语句。
9.表连接
SQL 最强大的功能之一就是能在数据查询的执行中联结(join)表。联结是利用 SQL 的 SELECT 能执行的最重要的操作,很好地理解联结及其语法是学习 SQL 的极为重要的部分。
SELECT vend_name, prod_name FROM Vendors, Products WHERE Vendors.vend_id = Products.vend_id;
意思是查询Vendor和Product表中的两个name列,且两表的id相等。
目前为止使用的联结称为等值联结(equijoin),它基于两个表之间的相等测试。这种联结也称为内联结(inner join)。其实,可以对这种联结使用稍微不同的语法,明确指定联结的类型。另外还有左外连接等。
当下,是我对于SQL查询语句的一个总结,并不是相当细致和深入,但也算是对查询语句的一个小的学习笔记,都是我一点一点打出来的,也算是原创吧,希望可以帮助到我自己和其他看到的人。另外插入语句和删除、更新语句之后有时间会再写一篇,2016年12月3日。
SQL语句小总结的更多相关文章
- sql语句小记录
测试过程中,需要去数据库中查询一些结果,比如验证码 常用的是查询 更新比较少用 删除一般不用 sql查询语句的嵌套用法,比较实用 比如in的用法:第一种:查询多个值时 SELECT "栏位名 ...
- sql语句小练习一
create database aaa go use aaa go create table student( sno varchar(3), sname varchar(4) not null ...
- SQL语句小tips(持续更新)
统计非法数据 判断people_id是否是32为字母组成的,统计不满足要求的数据 SELECT COUNT(IF(BINARY people_id NOT REGEXP '^[0-9a-z]{32}' ...
- 拼接Sql语句小心得
在往数据库插入数据时,需要根据数据和数据库中的列信息进行拼接,在本篇文章中,输出小心得.使用语言为 python. 拼接原始列信息 比如待插入数据库列信息为 deptNo,dName, Locate, ...
- sql语句小练习二
1.创建一个数据库StudentManage, 初始化大小10M,不足以1M每次增长 create database StudentManage on ( name = 'StudentManag ...
- SQL语句小练习
一.创建如下表结构(t_book) Id 主键 自增一 bookName 可变长 20 Price 小数 Author 可变长20 bookTypeId 图书类 ...
- sql语句 小记录
select Name '姓名',Age '年龄',(select LessonName + ',' from Lesson where StudentId=s1.Id FOR XML PATH('' ...
- 一个自动生成插入与更新SQL语句的小类
无需关注字段类型,只要传入字段名与值的集合,自动生成Ms sql server SQL语句.详见Test()方法 using System; namespace Fan.iData.SqlUtilit ...
- (小技巧)Sql server查看sql语句的执行时间(转)
转自CSDN: 在写数据库sql的时候,我们往往很关心该sql语句的执行效率,如下小技巧可以帮助程序员简单快速的得到某条或某几条sql的执行时间. declare @d datetime set @d ...
随机推荐
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- [转]OC与JS的交互详解
事情的起因还是因为项目需求驱动.折腾了两天,由于之前没有UIWebView与JS交互的经历,并且觉得这次在功能上有一定的创造性,特此留下一点文字,方便日后回顾. 我要实现这样一个需求:按照本地的CSS ...
- C#读取大文本文件
今天偶遇一同事抱怨,sqlserver导出的CSV,明明有1000W条,但用excel打开就只剩100W了,足足消失了90%,所以她怀疑文件是足量的1000W条,是excel捣了鬼.可是文件容量有2G ...
- MP3播放器团队项目
一.设计思路 程序要求能播放MP3文件,因此需调用库中的播放方法:右键工具箱选择项,添加com组件,选择window media player后工具箱就会多一个控件,然后拖到窗体中就OK了.另在窗体中 ...
- Guid和Sequence做主键的比较
记得A项目组是一个物流管理系统,后台采用了Oracle数据库.在系统中的核心表托运单表中,关于主键采用何种数据类型,是 sequence 还是用GUID , 大家起了争论. 从网络搜索得到的结论看,一 ...
- windows下scrapy安装
C:\users\XXXX>easy_install scrapy 出现错误 fatal error C1083: Cannot open include file: 'openssl/aes. ...
- C++调用V8与JS交互
C++访问JS函数 C++部分: /** * COMPILE foo.js AT THE FIRST COMMAND PROMPT TO RUN foo.js */ #include <v8.h ...
- 用VC调用EXCEL简单代码(转载自越长大越孤单,觉得很好)
首先在stdafx.h里加入对IDispatch接口提供支持的头文件: #include <afxDisp.h> 再在应用程序类的InitInstance()函数里加入: AfxOleIn ...
- 背景建模post_processing常用opencv函数(怒了)
1.saturate_cast<uchar>来说,就是把数据转换成8bit的0~255区间,负值变成0,大于255的变成255.如果是浮点型的数据,变成round最近的整数 2.cv::M ...
- SQLAutoCode - error when attempting to generate schema
I'm trying to auto generate a schema for use in SQLalchemy, I'm using sqlautocode to do this, I use ...