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.注意通配符的位置。
SQL的复习与总结的更多相关文章
- SQL语句复习【专题一】
SQL语句复习[专题一] --创建用户 scott 并设置密码为 tiger create user scott identified by tiger --用户刚刚创建没有任何的权限,连登录的权限都 ...
- SQL语句复习【专题二】
SQL语句复习[专题二] 单行函数(日期.数学.字符串.通用函数.转换函数)多行函数.分组函数.多行数据计算一个结果.一共5个.sum(),avg(),max(),min(),count()分组函数 ...
- SQL语句复习【专题三】
SQL语句复习[专题三] DML 数据操作语言[insert into update delete]创建表 简单的方式[使用查询的结果集来创建一张表]create table temp as sele ...
- SQL语句复习【专题四】
SQL语句复习[专题四] 多表查询 sql 92多表查询 sql92.sql99 标准--查询所有员工的姓名,部门编号,部门名称select * from empselect * from dept- ...
- SQL语句复习【专题五】
SQL语句复习[专题五] 单行子查询:只会得到一个结果的子查询[子查询的内容必须放在小括号中.在查询语句中的查询语句 ]--查询所有比 CLARK 员工 工资高的员工--1.先查询 CLARK 员工的 ...
- SQL语句复习【专题六】
SQL语句复习[专题六] 用户 + 创建表 --创建一个新的用户,然后给新的用户创建一张表,然后给表中添加一些数据.查询表中的数据 --创建用户需要比较大的权限 DBA create user di ...
- SQL语句复习【专题七】
SQL语句复习[专题七] 完整性约束分类1)域完整性约束(非空not null,检查check)2)实体完整性约束(唯一unique,主键primary key)3)参照完整性约束(外键foreign ...
- SQL语句复习【专题八】
SQL语句复习[专题八] 序列 Sequence.数据库对象是 oracle 专有的.作用:可以将某一列的值使用序列,来实现自动增长的功能.访问序列的值.[序列有两个属性 nextval currva ...
- SQL语句复习【专题九】
SQL语句复习[专题九] 视图:View视图的概念:视图是从若干基本表或其他视图构造出来的表.在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据在用户使用视 ...
- sql语法复习:增删查改,各种数据库对象创建和函数使用
推荐工具:机子配置较低的话,可以装Gsql这个工具获得sql执行环境(可作为手册查看内置数据类型 函数和存储过程等) --之前数据库的东西接触不多,虽然基本的语法是了解,但不是很熟悉--最近项目一直在 ...
随机推荐
- HDU 5687 字典树入门
Problem C Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- 【hive】where使用注意的问题
不能再where后边使用别名,group by后边也一样不能使用别名 select id,col1 - col2 from table1 where (col1 - col2) > 1000; ...
- cf 290F. Treeland Tour 最长上升子序列 + 树的回溯 难度:1
F. Treeland Tour time limit per test 5 seconds memory limit per test 256 megabytes input standard in ...
- log4cpp之Appender
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 【javascript基础】JS计算字符串所占字节数
废话不说,直接正题吧. 最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是U ...
- 逐步实现hash算法(基于BKDRhash函数)
哈希(Hash)算法,即散列函数.它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程.同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出.hash算法 ...
- java中的一些执行顺序,代码块,静态,构造,成员。。。。(转的)
Java初始化顺序(转来的) 1在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入) 2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完 ...
- Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议
Django框架的服务器架构一般是 Nginx + uWSGI + Django (1)一些基本概念 1 WSGI协议,uwsgi协议 WSGI协议(通讯协议):Python用于Web开发的协议(用于 ...
- Content-type与json对象/字符串杂谈
这几天在对接项目另一个乙方的下行接口,因为最近一直用php开发,所以当那边接口文档上规定了接口传参类型的 时候,瞬间搞混了,但是这次的出错也让我对http的数据传输有了新的认知. 1.http的数据传 ...
- Apache配置php redis扩展
1.根据phpinfo,下载redis 下载地址:注意php版本号 http://windows.php.net/downloads/pecl/snaps/redis/2.2.5/ http://wi ...