sql基础


1 -------------------------------------
2 CREATE DATABASE 数据库名; --创建数据库
3 drop database <数据库名>; --删除数据库
4 use 数据库名    --使用指定数据库
5 -- 查看所有表
6     SHOW TABLES[ LIKE 'pattern']
7     SHOW TABLES FROM 表名
8 -- 查看表结构
9     SHOW CREATE TABLE 表名    (信息更详细)  -- 查看指定表建表语句
SQL 常用函数
字符函数
--字符函数接受字符输入,并返回字符或数值。
LOWER(char)        转换为小写
SELECT LOWER('AAAAA') FROM DUAL; -返回结果是 aaaaa
?
UPPER(char)        转换为大写
SELECT LOWER('aaaaa') FROM DUAL; -返回结果是 AAAAA
?
CONCAT(char1, char2)            连接字符串
SELECT CONCAT('AA','BB') FROM DUAL; --返回结果是 'AABB'  
?
LENGTH(char)        返回字符串长度
SELECT LENGTH('AAAAAA') FROM DUAL; --返回结果是 6
?
REPLACE(C1,C2,C3)  将C1字符串中的C2替换成C3,如果C3为空,则删除C2 
Select Replace('WWhhhhhaT is tHis w W', 'W', '-') From Dual;  --返回 --hhhhhaT is tHis w -
?
SUBSTR(c1,n1,n2) 截取指定长度的字符串。稍不注意就可能充满了陷阱的函数。
n1=开始长度;
n2=截取的字符串长度,如果为空,默认截取到字符串结尾;
SELECT SUBSTR('CHENXIANQI',1,2) FROM DUAL; --返回CH
?
----------------------------------数字函数
--3、数字函数
--数字函数接受数字输入并返回数值作为输出结果。
ROUND(m, n)    小数点后精度四舍五入
SELECT ROUND('123456.123456',3) FROM DUAL;  --返回结果是 123456.123
?
TRUNC(m, n)    小数点后精度截断
SELECT TRUNC('123456.123456',2) FROM DUAL;  --返回结果是 123456.12 日期函数
---注意 日期 可以用来做数字运算 
CURRENT_DATE 返回当前 session 所在时区的默认时间
?
--alter session set nls_date_format = 'mm-dd-yyyy' ; --修改当前 日期格式
 select current_date from dual;
?
SYSDATE --返回系统时间
SELECT SYSDATE FROM DUAL;
?
TRUNC(SYSDATE,X)
 1.select trunc(sysdate) from dual  --2011-3-18  今天的日期为2011-3-18
 2.select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回当月第一天.
 3.select trunc(sysdate,'yy') from dual  --2011-1-1       返回当年第一天
 4.select trunc(sysdate,'dd') from dual  --2011-3-18    返回当前年月日
 5.select trunc(sysdate,'yyyy') from dual  --2011-1-1   返回当年第一天
 6.select trunc(sysdate,'d') from dual  --2011-3-13 (星期天)返回当前星期的第一天
 7.select trunc(sysdate, 'hh') from dual   --2011-3-18 14:00:00   当前时间为14:41   
 8.select trunc(sysdate, 'mi') from dual  --2011-3-18 14:41:00   当前分钟
 
ROUND(d[,fmt])
?
【功能】返回一个以fmt为格式的四舍五入日期值 
【参数】d是日期,fmt是格式 模型。默认fmt为DDD,即月中的某一天。 
?
      如果fmt为“YEAR”则舍入到某年的1月1日,即前半年舍去,后半年作为下 一年
      如果fmt为“MONTH”则舍入到某月的1日,即前月舍去,后半月作为下一 月
      默认为“DDD”,即月中的某一天,最靠近的天,前半天舍去,后半天作为第二天
      如果fmt为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周作为下 一周周日
 select sysdate,
        round(sysdate),
        round(sysdate, 'ddd'),     
        round(sysdate, 'day'),
        round(sysdate, 'm