1. 列标题和数据的默认格式


问题:由于字符集的不同而使不同的日期数据的显示有问题.


alter session set NLS_DATE_LANGUAGE = ‘AMERICAN’;


2. 如何在sql语句中使用算术表达式


注意运算符的优先级:


select empno,ename,sal,500+sal


from emp;


3. 如何在sql语句中使用列名


目的:让非计算机人员能够看懂表结构


方法:只需要在列名和别名之间放AS或者空格就可以了


select empno as "Employee Number",


ename name,(500+sal)*12 "Annual Salary"


from emp;


结果:


sqlite3 按日期排序取第一个数据_数据的排序


4. 链接运算符


说明:连接运算符用两条竖线(||)表示,用于把一个或者多个列或字符串连接在一起.


在实际公司中老板可能会让你显示完整的句子,更容易理解.


select ename ||' 年薪为: '||(500+sal)*12 “员工的年薪”


from emp;


sqlite3 按日期排序取第一个数据_数据的排序_02


5. DISTINCT运算符


说明:去掉重复的行


注意:在查询比较大的表时我们应该尽量避免使用DISTINCT,因为这可能会造成Oracle数据库效率降低,它是通过排序的方式来完成DISTINCT这一功能的,可以查询唯一的那个.


select distinct deptno


from emp;


sqlite3 按日期排序取第一个数据_数据的排序_03


6. 如何限制所选的数据行(选择操作)


说明:where关键字,其后是限制的条件.


条件是由列名,字符串,算数表达式,常量和比较运算符组成的.


select empno,ename,sal


from emp


where sal >= 1500;


sqlite3 按日期排序取第一个数据_限制性查询_04


7. 如何使用BETWEEN AND比较运算符


说明:该运算符用于测试指定的数据范围,不但可以用于数字类型还能用于日期型数据,但是数据必须用单引号括起来,如何在前面加NOT则是不在这个范围内的.


select empno,ename,sal,hiredate


from emp


where hiredate BETWEEN ‘01-JAN-81’ AND ‘31-MAY-82’;


sqlite3 按日期排序取第一个数据_简单查询_05


8. 在sql语句中使用字符串和日期


说明:在where子句中的字符串是严格区分大小写的,一定要注意.


select empno,ename,job


from emp


where job = ‘SALESMAN’;


sqlite3 按日期排序取第一个数据_数据的排序_06


9. 使用in比较运算符


说明:它是一个sql语句中很有用的,IN是用来测试某些值是否在这个列表中相反NOT则不在这个列表中


select empno,ename,sal,job


from emp


where job NOT IN('ANALYST','PRESIDENT');


sqlite3 按日期排序取第一个数据_限制性查询_07


10. 使用LIKE比较运算符


说明:模糊查询,有两个通配符"%"和"_"


%代表0个或者多个字符


_代表一个且只能有一个字符


select empno,ename,sal,job


from emp


where job LIKE'S_L_S%';


sqlite3 按日期排序取第一个数据_sqlite3 按日期排序取第一个数据_08


11. ORDER BY 排序


说明:一般默认是从小到大的如果要降序则用DESC,注意使用ORDER BY 后,该子句就是SQL语句的最后一个子句.


select empno,ename,sal


from emp


where sal >= 1500


ORDER BY sal DESC;


sqlite3 按日期排序取第一个数据_限制性查询_09


在order by中也可以使用别名或者表达式


select empno AS "Employee Number,ename name,(500+sal)*12 "Annual Salary"


from emp


order by "Annual Salary" DESC;


sqlite3 按日期排序取第一个数据_运算符_10


ORDER BY 子句中使用列号及使用多列


比如老板让你按职位A到Z排序之后再按工资按高到低排序


select ename,job,sal


from emp


order by job,sal DESC;


sqlite3 按日期排序取第一个数据_数据的排序_11


这种用法用的不多,易读性太差了