这几天回顾了一下SQL,下面为整理出来的学习笔记(其中的sql函数及语句适用与ORACLE,在其他SQL解释器中可能有不兼容!)
SELECT
1、 检索表中所有数据:
SQL>SELECT * FROM dept;
2、 检索表中指定列:
SQL>SELECT id,name FROM students;
3、 替换列名检索:
SQL>SELECT id 学号,name X姓名 FROM students;
4、 检索返回不重复数据:
SQL>SELECT DISTNCT * FROM students;
5、 返回两个查询中的公共行:
SQL>SELECT id FROM students1 INTERSECT SELECT id FROM students2;
SELECT 函数
1、 汇总函数
COUNT: SQL>SELECT COUNT(列名/*) FROM students WHERE AGE <15;(汇总所有年龄小于15岁的学生人数)
SUM: SQL>SELECT SUM(列名/*),SUM(列名2/*) FROM students WHERE…(求指定列的和 SUM只能处理数字!)
AVG: 返回某列的平均值)
MAX/MIN: 返回某列的最大/最小值)
VARIANCE/STDDEN: (返回某列的方差/标准差)
2、 日期/时间函数
ADD_MONTHS: SQL>SELECT begin_date, end_date ADD_MONTHS(end_date,2) FROM…(将指定列的日期加2个月)
LAST_DAY(): (返回指定月份的最后一天)
NEXT_DAY(): (返回与指定日期在同一个星期或一个星期内的所要求的星期天数的确切日期) SQL>SELECT begin_date, NEXT_DAY(begin_date,’FRIDAY’) FROM…(查询begin_date的下个星期五是几号)
3、 数学函数
ABS(): (返回指定数字的绝对值)
CEIL/FLOOR: (CEIL返回与给定参数相等或较小的最小整数,FLOOR与之相反)
EXP(): (返回以参数为指数,以e为底数的幂值)
POWER(): (返回第一个参数对另一个参数的幂,POWER(A,B)=)
SIGN: (参数为负时返回-1,为正时返回1,为零时返回0)
4、 字符函数
CHR: (返回与所给数值参数相等的字符)
CONCAT/||: (链接字符串)
INITCAP: (将参数的第一个字母转成大写,其他全部转成小写)
LOWER/UPPER: (将参数全部转换成 小写/大写)
LPAD/RPAD: (LPAD(name,15,’*’) 将name用*填充左扩充成宽15)
LTRIM/RTRIM: (左/右剪除指定列的指定字符,默认为剪除空格)
REPLACE: SQL>REPLACE(name,’st’,’**’) FROM…(将name中’st’替换成’**’)
SUBSTR(name,2,3) FROM… : 从第二个字符开始输出长度为3的字符串
TRANSLATE(A,B,’C’): 将A和B中都出现的字符替换成’C’(区分大小写)
INSTR: 搜索特定位置的特定字符串
LENGTH: 计算字符串长度
5、 转换函数
TO_CHAR(数字转换为字符)
TO_NUMBER(字符串数字转换成数值型)
GREATEST/LEAST(返回几个表达式中最大/最小的)
USER(返回当前使用数据库的用户的名字)
SQL子句
1、 WHERE
STRING WITH: 与LIKE功能类似检索包含指定字符的数据(其中’%’为通配符’_’为位置标记符)
ORDER BY: (排序,查询结果默认以级别高低升序排列,加参数DESC则以降序排列)
GROUP BY: (分组,注意SELECT 检索的列必须在GROUP BY 中给出)
HAVING: (因汇总函数无法工作在WHERE子句中,需用HAVING)
SQL>SELECT AVG(salary) FROM org GROUP BY team HAVING AVG(salary)<3800;
多表联合
1、 外部/内部联合 JOIN…ON
SQL>SELECT P.PARTNUM,P.PRICE,O.NAME,O.PARTNUM FROM PART P JOIN ORDERS O ON ORDER.PARTNUM=54
2、 外部右联合 RIGHT OUTER JOIN
(它令SQL返回右边表集内全部记录,当ORDER.PARTNUM<>54则补以空值)
子查询(内嵌的SQL子句)
SQL>SELECT O.ORPEREDON,P.DESCRIPTION FROM ORDERS O,PART P
WHERE O.PARTNUM=P.PARTNUM
AND O.PARTNUM=(SELECT PARTNUM FROM PART WHERE DESCRIPTION=”ROAD”)
子查询中使用汇总函数
EXISTS,ANY,ALL的使用
EXISTS:如子查询返回内容为空是返回false,否则返回true
操作数据
SQL 对于操作数据提供了三条语句
INSERT 语句有二个变体INSERT VALUES 可以插入一个记录而INSERT SELECT
则可以根据给定的一个或多个表来插入一个或多个记录SELECT 语句可以归并多个表
并把归并的结果加入到另外一个表中
UPDATE 语句可以改变符合条件列的值UPDATE 语句可以用计算或表达式的结果作
为需要更新的内容
DELETE 语句是这三个语句中最简单的它会删除符合WHERE 条件的所有记录如
果没有WHERE 子句它会删除表中的所有记录
INSERT 插入语句(数字和空值NULL无需引号,字符型需要)
SQL>INSERT INTO COLLECTION(ITEM,WORTH,REMARKS)
VALUES(‘SUPERMANS’,25000,’TUGGED’);
INSERT SELECT(外部表导入数据)
SQL>INSERT INTO table_name(col1,col2…) SELECT col1,col2…
FROM table_name WHERE search_condition;
UPDATE
SQL>UPDATE table_name SET col1=value1,col2=value2,…WHERE searchcondition;
DELETE
SQL>DELETE FROM COLLECTION WHERE WORTH<275;
SQL>DELETE FROM COLLECTION;(删除COLLECTION中所有行)