文章标题

来源:互联网 发布:dvp_60es编程 编辑:程序博客网 时间:2024/06/05 20:06

SQL笔记

一、DDL
1.数据类型
字符 varchar2(可变长度) char(固定长度)
数字 number(数字) float(小数)
日期 date(精确到秒)

2.数据定义语言

    CREAT TABLE productinfo    (    productID varchar2(10),    productName varchar2(10)    )
ALTER TABLE productinfoADD remark varchar2(200);MODIFY remark number(2,2);DROP column remark;

3.约束

    CREAT TABLE productinfo    (productID varchar2(10),    primary key(productID)    )
之后添加约束ALTER TABLE productinfoADD CONSTRAINTS pk_productinfo PRIMARY KEY(productID)

二、DML&DQL简单介绍
添加数据用INSERT

    INSERT INTO productinfo(productID,productName) values(a,a);    INSERT INTO productinfo(productID,productName) select x1,x2 FROM table2;    CREAT TABLE productinfo2 AS SELECT productID,productName FROM productinfo;    修改数据用UPDATE    UPDATE productinfo SET productID=a,productName=a WHERE ...;    删除数据用DELETE    DELETE FROM productinfo WHERE ...    查询数据用SELECT    SELECT * FROM productinfo where productID='a';    无条件删除全表记录 TURNCATE TABLE productinfo     [同时进行增加和修改MERGE
MERGE INTO productinfo    USING productinfo2    ON ()    WHEN MATCHED THEN merge_update_clause    WHEN NOT MATCHED THEN merge_insert_clause;]
三、SELECT简单检索
SELECT DISTINCT productName FROM productinfoWHERE...

“`
使用别名替代字段名
SELECT productID 产品编号,productName AS 产品名称 FROM productinfo;
输出结果调整
SELECT productID,productprice || ‘’ || 1.25 || ‘’ || productprice*1.25 AS new_productprice FROM productinfo;
去重
SELECT distinct(category) 产品类型 FROM productinfo;
排序(ASC DESC NULL值默认最小,表达式,字段位置可作为排序字段)
SELECT productName,quantity FROM productinfo ORDER BY quantity DESC;
SELECT productName,quantity FROM productinfo ORDER BY quantity DESC NULLS LAST;
多字段排序(第一字段相同按第二字段再排序)
SELECT productName,category,quantity FROM productinfo ORDER BY category ASC,3 DESC;
要求产品前6位是024003
…WHERE SUBSTR(productID,1,6) = ‘024003’;
多个条件用BETWEEN AND,AND,OR
模糊查询‘_’替代一个字符,’%’替代多个字符
SELECT productName,productprice FROM productinfo WHERE productName LIKE ‘%三星%’;
用IN查询
SELECT…FROM productinfo
WHERE category NOT IN(‘123’,’345’);
针对NULL数据
…WHERE quantity IS NOT NULL;
分组(不允许放在WHERE语句里面,可以放在后面)
SELECT category,AVG(productprice) 平均价格 FROM productinfo GROUP BY category;
计算出不同类型产品的平均价格列出高于2000的(WHERE对FROM负责,HAVING对GROUP负责)
…GROUP BY category HAVING AVG(productprice)>2000;
子查询(ANY,SOME,ALL)
SELECT productName,productprice FROM productinfo
WHERE productprice =
some (SELECT productprice FROM productinfo WHERE category = ‘0100’) AND category <> ‘0101’;

四、连接查询
内连接

五、常用函数
SIGN()取符号,正数1,00,负数-1,FLOAT和DOUBLE或者NaN时都会返回1
CEIL(n)返回大于等于n的最小整数
FLOOR(n)返回小于等于n的最大整数
ROUND(100.12345,4)四舍五入成4位小数,即100.1235,n为负数则为100.1
TRUNC()函数与ROUND类似,不进行四舍五入,直接截取
LENGTH()获取字符长度
SUBSTR()截取字符
SELECT SUBSTR(Store_Name, 3)
FROM Geography
WHERE Store_Name = ‘Los Angeles’;
输出结果 ‘an D’
REPLACE()替换字符串
RPAD()字符串填充
TRIM()删除字符串首尾指定字符

六、日期部分
SYSDATE得到系统当前日期
SYSTIMESTAMP得到系统时间
LAST_DAY()返回参数指定日期对应月份的最后一天
NEXT_DAY(SYSDATE,‘星期一’)当前日期向后一周的星期一的日期
EXTRACT()得到指定的日期部分
MONTHS_BETWEEN()

原创粉丝点击