Oracle DB 常用语句

Oracledb SQL 语句: 

写语句的时候,先写大体的框架,因为无论后面的条件多复杂,最后一定是可以简化到一条基本语句的。然后,根据你所要求的具体条件(要什么表,要做什么排列,分组什么的),向大的框架中添加(当然还要注意语法)。 

推荐还是自己看英文的解释+练习,来得快--------SQL Tutorial

  1. select distinct 列名称 from 表名称 ,关键词distinct 用于返回唯一不同的值
  2. SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC, 以逆字母顺序显示公司名称,并以数字顺序显示顺序号
  3. UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ,为lastname是“Wilson”的人添加firstname为“Fred”
  4. Delete from 表名称 where 列名称 = 值。 可以在不删除表的情况下删除所有的行,删除后表的结构、属性和索引都是完整的,即delete from table_name 或者delete * from table_name             truncate table tbname 删除内容,释放空间但不删除定义,即保留表的数据结构                  drop table tbname删除内容和定义,释放空间,即是把整个表去掉,以后不能新增数据除非新增一个表。        区别:可以对delete 操作进行roll back,而truncate不能被撤销;truncate比delete速度快,且使用的系统和事务日志资源少;当表被清空后表和表的索引被重新设置成初始大小,而delete不能。Truncate 重新设置高水平线和所有索引,经过truncate操作后的表比delete后的表要快得多。
  5.  Select column_name(s) from table_name where rownum <=number, 

select top 2(50 percent) * from Persons 从“Persons”表中选取头两条(50%的)记录

  6. Select * from Persons where City like ‘N%’(‘%g’) 从“Persons”表选取所住城市以N开头(以g结尾)的人                like ‘_eorge’第一个字符之后是“eorge”的人                 like ‘[ALN%]’以“A”或“L”或“N”开头的         like ‘[!ALN%]’不以xxxxx开头的

  7. Select * from persons where lastname in (‘Adams’,Carter’’)选取姓氏为Adams和Carter的人

  8. SELECT po.OrderID, p.LastName, p.FirstName

FROM Persons AS p, Product_Orders AS po

WHERE p.LastName='Adams' AND p.FirstName='John'

有两张表persons和product_orders,列出John Adams的所有订单

  9. Select persons.lastname, persons.firstname, orders.orderno

From persons

Inner join orders

on persons.id_p = orders.id_p Order by persons.lastname     从两个表获取数据,列出所有人的订购

  10. Select persons.lastname, persons.firstname, orders.orderno from persons

Left join orders

On persons.id_p = orders.id_p order by persons.lastname   会从左表(persons)返回所有的行,即使在右表(orders)没有匹配的行                    右连接同理

  11. SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

FROM Persons

FULL JOIN Orders

ON Persons.Id_P=Orders.Id_P

ORDER BY Persons.LastName    如果“persons“中的行在表”orders中没有匹配,或者相反,这些行同样会列出。

  12. select e_name from employees_china union

select e_name from employees_usa  列出所有在中国和美国的不同的雇员名

union all 和union几乎是同理的,不过union all 会列出所有的值

   13. select * into persons_backup from persons 制作”persons”表的备份复件

select * into persons in ‘backup.mdb’ from persons      IN子句可用于向另一个数据库中拷贝表

   14. select persons.lastname, orders.orderno

into persons_order_backup

from persons

inner join orders on persons.id_p = orders.id_p  创建一个名为“persons_order_backup“的表,其中包含了从persons和orders两个表取得的信息

   15. create database my_db   创建一个名为”my_db”的数据库

                  用CREATE TABLE 来添加数据库表

   16. create index personIndex

on person (lastname)   在person表的lastname列创建一个索引

create unique index personIndex … 唯一索引,不允许向表中插入任何重复值

… on person (lastname,firstname) 索引不止一列,聚簇索引

 

   17. 通过drop语句,可以轻松删除索引,表及数据库(上面有)                    drop index index_name on table_name

   18. Alter table table_name

Add column_name datatype 在表中添加列

Atler table table_name

Drop column column_name 删除表中的列

… alter column column_name datatype 改变表中列的数据类型

   19. Create sequence seq_person

Minvalue 1

Start with 1

Increment by 1

Cache 10  创建名为seq_person的序列对象。

Insert into persons (p_id, firstname, lastname)

Values (seq_person.nextval, ‘Lars’,’Monsen’)   在“persons“表中插入一条新纪录。P_id的赋值来自seq_person序列的下一个数字。”firstname“会被设置为”Bill“,”Lastname“列会被设置为”Gates”。

   20. Create view [category sales for 1997] as

Select distinct categoryname.,sum(productsales) as categorysales

From [product sales for 1997] group by categoryname 

可以像这样查询上面的视图 select * from [category sales for 1997]

可以通过drop view来删除视图  drop view view_name

   21. Select min(orderprice) as smallestorderprice from orders

Select sum(orderprice) as OrderTotal from orders

Select customer, orderdata,sum(orderprice) from orders group by customer, orderdate

   22. 使用HAVING子句,因为WHERE关键字无法与合计函数一起使用

Select xx,yy from table_name where …group by column_name having …

Select customer,sum(orderprice) from orders where customer=’Bush’ or customer =’Ad’

Group by customer  having sum(orderprice) >1500

   23. Select ucase(lastname) as lastname, firstname from persons 转换为大写 lcase(小写)

Select mid(city,1,3) as smallcity from persons 从city 列提取3个字符

Select len(city) as legthofcity from persons 去的city列的各个值的长度

Select productname,round(unitprice,0) as unitprice from products  0:规定要返回的小数位数是0.

Select productname, unitprice, now() as perdata from products  now显示当前时间

Select productname,unitprice, format(now(),’YYYY-MM-DD’) as predate from products

  Format(column_name,format) 需要格式化的字段,规定的格式

   24. TRIM函数。LTRIM将所有字串起头的空白移除

Select trim(‘    simple   ’);  select ltrim(‘  sample’);  select rtrim(‘  sample  ’);

   25. Update ‘article’ set title=replace(title,’xxx’,’hel’) 将表article中title字段里的xxx字符串替换成hel

Select concat(id,name,work_date) as new_column from employees; 将表中所有行的姓名、id、工作日连接起来

   26.  Rollback 用于撤销尚未保存到数据库中的事务; 只能撤销自上次commit命令或者rollback命令执行以来的事务。撤消后,即不会度数据库产生影响。

SAVEPOINT是事务中的一个状态点,我们可以将事务回滚到特定的点,而不是撤销整个事务。

Savepoint savepoint_name;  只能在事务语句之间创建保存点

Roolback to point_name; 回滚至某一保存点

Release savepoint savepoint_name 删除之前创建的保存点

 

   27. AND, OR and NOT

Select * from customers

        where country =’Germany’ and (city =’Berlin’ r city =’chen’);

select * from customers

       where not country =’Germany’ and not country =’’USA‘;

posted @ 2017-09-26 21:18  nightwac  阅读(170)  评论(0)    收藏  举报