SQL 与 Oracle SQL常用语句

SQL 与 Oracle SQL常用语句

SQL

SQL定义:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL由以下五大块组成:
- DQL: Data QueryLanguage 数据查询语言
- DDL: Data Definition Language 数据库模式定义语言
- DML: Data Manipulation Language 数据操作语言
- DCL: Data Control Language 数据控制语言
- TCL: Transaction Control Language 事务控制语言

如下列表,详细显示了其语言以及操作关键字:
这里写图片描述


Oracle SQL常用语句

–创建测试表空间
CREATE TABLESPACE TestDBXUPT datafile’F:\app\Administrator\oradata\orcl\TestDBXUPT.dbf’ size 20M;

–删除测试表空间
drop TABLESPACE TestDBXUPT INCLUDING contents and datafiles CASCADE CONSTRAINTS;

–创建user表
create table xuptuser(
userid int primary key not null,
username varchar2(32)
);

–插入数据
–全列插入
insert into PlatUser values(‘0001’,’user0001’);

–指定列插入
insert into PlatUser(PlatUserID,PlatUserName) values(‘0002’,’user0002’);

–查询数据
–全列查询
select * from PlatUser;

–限定列查询,作用是限定列
select columnname from tablename;

–条件查询,作用是限定行
select * from tablename where columnname =’xxx’;

–修改数据
update tablename set columnname = ‘XXX’;

update tablename set columnname = ‘xxx’ where columnname =’xxx’;

–删除数据
DELETE tablename;//删除所有行 !警惕

DELETE tablename where columnname = ‘xxx’;

使用外连接

    A、left (outer) join:
        左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。
        SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    B:rightouterjoin:
        右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
    C:full/crossouterjoin:
        全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
    D:多路查询
        select * from tablename 
            left / right  jion tablename1 on condition
            left / right  jion tablename2 on condition
            where ...(other sql sentences)
****************连接查询*****************

将两个及两个以上的表连接起来选取所需数据。
1)内连接查询:
当两个表中具有相同意义的字段值相等时,就查询出该条记录。
实例:
复制代码 代码如下:
select num,name,employee.d_id,age,d_name from employee,department where employee.d_id = department.d_id
因字段名相同,所以取d_id字段值时最好指定哪张表的字段。
2)外连接查询
select 属性名列表 from 表名1 left|right join 表名2 on 表名1.属性名1=表名2.属性名2;
左连接查询:
进行左连接查询时,可以查出表名1中所指的表中所有记录。而表名2所指表中,只能查询出匹配的记录。
实例:
复制代码 代码如下:

select num,name,employee.d_id,age,d_name from employee left join department on employee.d_id = department.d_id;
右连接查询:
与左连接相反,可以查询出表名2中的的所有记录,而表名1中所指的表中,只查询出匹配的记录。
//****************************************

分组:Group by:
分组查询 group by
group by 属性名 [having 条件表达式][ with rollup]
“属性名 ”指按照该字段值进行分组;“having 条件表达式 ”用来限制分组后的显示,满足条件的结果将被显示;with rollup 将会在所有记录的最后加上一条记录,该记录是上 面所有记录的总和。
一张表,一旦分组完成后,查询后只能得到组相关的信息。
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
在selecte统计函数中的字段,不能和普通的字段放在一起;

–分组查询时,列投影必须是分组列;使用非分组列作为列投影时,必须使用组函数。
select REGION , sex ,count(PLATUSERID) from FRIEND
GROUP BY REGION , sex;

-重点内容-分页查询

–rownum是一个伪列,用来统计行序号。
select PlatUserID , rownum from PlatUser;

–查出第二页结果集,每页2条
SELECT PlatUserID , ROWNUM FROM PlatUser WHERE ROWNUM <= 4;
–查出第1页结果集,每页2条
select PlatUserID , rownum from PlatUser where ROWNUM <= 2;

–查出第二页

/***********************************************

很明显:第二种分页查询方式更好,如果数据量相当大的时候,第二种查询方式所消耗的查询内存可想而知,相比第一种就小很多

************************************************/

 SELECT  PlatUserID , ROWNUM  FROM PlatUser  WHERE  ROWNUM  <= 4  AND PlatUserID NOT  IN (
                select  PlatUserID   from PlatUser  where  ROWNUM  <= 2 );


SELECT  *  FROM  PlatUser 
            where  PlatUserID  in (

             SELECT  PlatUserID   FROM PlatUser  WHERE  ROWNUM  <= 4  AND PlatUserID NOT  IN (
                select  PlatUserID   from PlatUser  where  ROWNUM  <= 2 )

                );

第三种查询:

select columnname, rownum from XUPTUSER where rownum between row_lo and row_hi;
    select * from tablename 
        where table_pri_ID in
        (
            select table_pri_ID, rownum from table_name
            where rownum between row_lo and row_hi
        );
简单的表空间、表操作
/*********************************************************


Note one:
    查看默认表空间:select default_tablespace from user_users;
    查看所有表空间:select tablespace_name from user_tablespace;//或者dba_tablespace
    查看:DEFAULT_TABLESPACE字段
Note two:
    创建表指定表空间(如果没有置顶表空间,默认为users)
        crate table tablename (//user table name
            ... ...//user feild
        )tablespace tablespacename;//user tablespace name
Note three:
    增加列:alter table tablename add tablecolumn columntype ... ...;
    删除列:alter table tablename drop column columnname;
    修改列名:alter table tablename rename column oldcolumn_name to newcolumn_name;
    重命名表:alter tablename rename to newtablename;
    修改表空间:alter table tablename move tablespace newtablespace;
    删除表:drop table tablename;
    清空表内容(truncate,清空数据不能回滚):truncate table tablename;
    约束:
        NOT NULL 非空
        FOREIGN KEY 外键
        UNIQUE  唯一
        PRIMARY KEY 主键
        CHECK 检查
Note four:
    关系查询:
        a:比较运算符 = 等于, < 小于 <= 小于等于 <>、!= 不等 > 大于 >= 大于等于
        b:范围条件BETWEEN ... AND ...;NOT BETWEEN ... AND ...;
        c:逻辑条件:NOT、AND、OR优先级依次降低
    字符匹配符:% 0-多个字符
            _ 一个字符
    列表运算符:IN、NOT IN
    未知值条件:IS NULL 或者IS NOT NULL;
    排序查询:ORDER BY column_name ASC-- 升序 -- / DESC -- 降序 --
    筛选查询:HAVING 简介:HAVING子句与WHERE子句非常相似(效果和使用方法均类似),不同的是WHERE子句是对表中数据进行限定过滤,而HAVING是对WHERE或者GROUP BY子句查询的结果集进行限定过滤的。
    数据更新:update tablename set columnnmae = vol_value where yourlimiters;   


*********************************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值