SQL的复习与总结
检索数据
关键字:
SELECT DISTINCT LIMIT OFFSET FROM
SELECT与FROM用于基础的检索,基本语法为:
SELECT column_name,column_name,column_name...column_name FROM table_name;
注:默认不排序;sql不区分大小写,但是建议SQL关键字使用大写,本文遵守此规则;建议每个SQL写完后跟上“;”,本文遵守此规则。
检索所有列:
SELECT * FROM table_name;
注:*会默认返回所有列的内容,不建议使用*,因为会检索所有内容造成不必要的性能浪费。
检索不同值:
SELECT DISTINCT column_name,column_name...column_name FROM table_name;
注:DISTINCT关键字作用于所有列,既对所有检索的列名都进行排它。
限制结果:
SELECT column_name FROM table_name LIMIT x; SELECT column_name FROM table_name LIMIT x OFFSET y;
注:LIMIT表示检索多少行,OFFSET表示从第几行数据开始(第一行数据的下标为0),x与y都是数字(int)
排序检索数据
关键字:
ORDER BY
ORDER BY的基本用法:
SELECT column_name FROM table_name ORDER BY column_name;
注:数据库本身的查询顺序是无意义的(虽然大部分会按照默认顺序排列,但是随着数据的删除等操作,会导致顺序最终无意义,所以就默认为无意义的)
子句:由SQL的关键字与对应的数据组成。例如SELECT子句与FROM子句。
ORDER BY子句的位置应该为SELECT的最后(除正序、倒序关键字外)
ORDER BY也可以对非选择列(不是SELECT子句检索的列)进行排序。
进行多个列检索时:
SELECT column_name FROM table_name ORDER BY column1_name, column2_name;
注:仅当column1_name一致时才会对column2_name进行排序,如果column1_name都是唯一的相当于仅对column1_name排序。
升降序检索:
SELECT column_name FROM table_name ORDER BY column_name DESC/ASC, column2_name;
注:降序:DESC 升序:ASC 默认就是升序的。
升降序关键字仅影响其前面的列。
过滤数据
关键字:
where
操作符:= != >= <= > < BETWEEN(AND) IS NULL
仅对单个值过滤
SELECT column_name FROM table_name WHERE column_name OPERATION condition;
注:condition何时使用引号呢? 仅限限定字符串时才需要使用引号,一般使用单引号即可。
BETWEEN condition1 AND condition2 在限定范围时,该关键字包含限定的两个条件。
高级数据过滤
关键字:
WHERE AND OR IN NOT
多个限定条件的过滤:
SELECT column_name FROM table_name WHERE () AND/OR ();
注:()表示限定的条件。
AND要求两个条件都符合。
OR要求两者符合其一即可,多数DBMS在OR满足条件1时就不在计算第二个条件了。
AND与OR会有默认的求值顺序,即AND操作符优于OR操作符,当过滤条件>=3个的时候就要注意操作符顺序了,可以使用()来强制要求顺序,好习惯就是忽略默认顺序,优先使用()。
IN操作符的用法:
SELECT column_name FROM table_name WHERE column_name IN (condition1, confition2, ..., conditionN);
IN操作符与OR的作用是相同的,但是具有以下优点:
1.语法更加直观清晰。
2.求值顺序更加容易管理。
3.IN操作符比一组OR操作顺序快。
4.IN可以包含其他SELECT语句(后面同步)。
NOT操作符的用法:
SELECT column_name FROM table_name WHERE NOT ();
NOT仅否定跟在其后的条件。NOT与IN联合使用时会更有优势。
用通配符进行过滤
关键字:
LIKE %
概念:
通配符:用来匹配值得一部分的特殊字符。
搜索模式:由字面值和通配符或两者组合构成的搜索条件。
注:使用通配符必须配合LIKE操作符。
百分号(%)通配符:
SELECT column_name FROM table_name WHERE column_name LIKE 'String%'
注:上面的语句将检索column_name以String内容开头的数据。
‘%String’: 匹配以String内容结尾的数据
'%String%': 匹配包含String内容的数据
'String%String' 匹配以String内容开始,以String结尾内容的数据
%匹配0、1和多个字符。且不能匹配到NULL。
下划线(_)通配符:
注:下划线与%的作用相同,但是仅匹配单个字符。
通配符使用注意事项:
1.通配符使用要适度。
2.尽量不要在搜索的开头使用通配符。
3.注意通配符的位置。
最新文章
- java读取项目根路径下和任意磁盘位置下的properties文件
- iShare.js分享插件
- df,du,mount
- .net程序员的学习计划
- Java Concurrency - 浅析 Phaser 的用法
- Android_Menu_contextMenu
- 无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本。
- 自动安装Redis服务端与PHP扩展Redis
- Python【第四课】 装饰器
- phpexcel 使用说明
- JavaScript深入之变量对象
- html5 - Storage 本地存储
- POJ 3177 Redundant Paths (边双连通+缩点)
- [日常] go语言圣经-声明,变量,赋值,类型,包和文件习题
- bash基本功能 -命令的别名和快捷键
- snmp 简单的网络管理协议
- 修改BUG心得
- ceph luminous 新功能之内置 dashboard
- 浅谈nodejs中HTTP模块应用
- 关于Python的装饰器(2)
热门文章
- Java截取图片的一部分并保存为40*40的图片
- day5-logging模块
- HTML5页面,用JS 禁止弹出手机键盘
- section和div
- 005——数组(五)array_diff_ukey()array_diff_uassoc()array_intersect()array_intersect_assoc()array_intersect_key()array_intersect_ukey()array_intersect_uassoc()
- ubuntu12.04+openni+nit+SensorKinect环境搭建
- XML方式实现Spring的AOP
- pulltoRefresh类图
- LINUX系统下的shell命令---grep、sed、awk
- Kotlin Reference (二) Idioms