sql语句总结!!!

 数据操纵语言:Data manipulation language (DML) select、insert、delete、update、merge 数据定义语言:Data definition language (DDL) create、alter、drop、rename、truncate、comment 数据控制语言:Data control language (DCL) grant、revoke 事务控制:Transaction control commit、rollback、savepoint -------------------------------------------------------- select from where group by having order by 6 1 2 3 4 5 --查询语句的执行顺序。1和6是必须的,其它语句为可选。 -------------------------------------------------------- 当和NULL进行+、-、*、/运算后的结果全是NULL。当和NULL进行||操作后的结果是它自己。 别名用双引号,||字符串用单引号包围。 where子句里面不可以使用别名。order by子句里面可以使用别名。 -------------------------------------------------------- select 列1 from 表 where 列2 like '%a%'; --包含"a"字母的。 select 列1 from 表 where 列2 like '%a'; --"a"字母结尾的。 select 列1 from 表 where 列2 like 'a%'; --"a"字母开头的。 select 列1 from 表 where 列2 like '_a'; --包含"a"字母的任意两个字符。 -------------------------------------------------------- select 列1 from 表 where 列2 is not null; --测试列2不为空的情况。 select 列1 from 表 where 列2 is null; --测试列2为空的情况。 select 列1 from 表 where sal > any(100,800,900); --大于最小的值。 select 列1 from 表 where sal > all(100,800,900); --大于最大的值。 -------------------------------------------------------- --聚合函数 select count(列名) from 表名; --计数 select sum(列名) from 表名; --合计 select avg(列名) from 表名; --平均值 select max(列名) from 表名; --最大值 select min(列名) from 表名; --最小值 -------------------------------------------------------- --字符函数 select lower(ename) from emp; --转换为小写 select upper(ename) from emp; --转换为大写 select initcap(ename) from emp; --单词首字母大写 select concat(ename,'你好') from emp; --字符串连接 select substr(ename,2,3) from emp; --截取字串(第1个字母下标为1) select length(ename) from emp; --返回字符串长度 select instr('abc','ab') from dual; --定位子串 select lpad(ename,10,'*') from emp; --左侧填充 select rpad(ename,10,'*') from emp; --右侧填充 select trim(' a b c ') from dual; --过滤空格 select replace('abc','a','d') from dual; --替换 -------------------------------------------------------- --数值函数 select abs(-1) from dual; --取绝对值 select round(3.1415926) from dual; --4舍5入 select round(3.1415926,3) from dual; select round(33.1415926,-1) from dual; select trunc(33.1415926,3) from dual; --截断 select ceil(3.14) from dual; --向上取整 select floor(3.14) from dual; --向下取整 select sign(-3.14) from dual; --判断数值正负 select mod(10,2) from dual; --取模 -------------------------------------------------------- --日期函数 select to_char(sysdate,'hh24') hour, --获得小时(24小时制) to_char(sysdate,'mi') min, --获得分钟 to_char(sysdate,'ss') sec, --获得秒 to_char(sysdate,'dd') day, --获得日期(天) to_char(sysdate,'mm') mth, --获得月 to_char(sysdate,'yyyy') year --获得年 from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; select to_date('2011-05-18 18:45:55','yyyy-mm-dd hh24:mi:ss') from dual; -------------------------------------------------------- --通用函数 nvl(表达试1,表达试2) --如果表达试1的值为null,则返回表达试2的值,否则返回表达试1的值 nvl2(表达试1,表达试2,表达试3) --如果表达试1的不值为null,返回表达试2的值,否则返回表达试3的值 nullif(表达试1,表达试2) --如果表达试1与表达试2的值相等则返回null,否则返回表达试1的值 -------------------------------------------------------- --多表联接查询:内联接、外联接、交叉联接。 --内联接:inner join ... on ... --使用像=或<>之类的比较运算符,包括相等联接、自然联接。内联接是指使用比较运算符根据每个表共有的所有的列的值匹配两个表中的行。 select t1.column,t2.column from table1 t1,table2 t2 where t1.column1 = t2.column2; --oracle中写法 select t1.column,t2.column from table1 t1 join table2 t2 on t1.column1 = t2.column2; --外联接: --左外联接:left outer join ... on ... 结果集包含左表中的所有行。 --右外联接:right outer join ... on ... 结果集包含右表中的所有行。 --全外联接:full outer join ... on ... 结果集包含左、右两表中的所有行。 --left outer join:(oracle中写法) select t1.column,t2.column from table1 t1 join table2 t2 on t1.column1 = t2.column2(+); --right outer join:(oracle中写法) select t1.column,t2.column from table1 t1 join table2 t2 on t1.column1(+) = t2.column2; --交叉联接(笛卡儿积): --交叉联接返回表中的所有行,左表中的每一行与右表中的所有行组合。 select t1.column,t2.column from table1 t1,table2 t2; --oracle中写法 select t1.column,t2.column from table1 t1 cross join table2 t2 on t1.column1 = t2.column2; -------------------------------------------------------- CREATE USER user IDENTIFIED BY password; CREATE USER scott IDENTIFIED BY tiger; --创建用户 GRANT create session,create table, create view,create sequence to scott; --用户授权 CREATE ROLE manager; --创建角色 GRANT create session,create table, create view,create sequence to manager; --角色授权 GRANT manager to scott; --角色授权给用户 alter user scott identified by password; --修改密码 revoke create session from scott; --撤销权限 revoke manager from scott;

你可能感兴趣的:(高级SQL)