Oracle DB 常用语句
Oracledb SQL 语句:
写语句的时候,先写大体的框架,因为无论后面的条件多复杂,最后一定是可以简化到一条基本语句的。然后,根据你所要求的具体条件(要什么表,要做什么排列,分组什么的),向大的框架中添加(当然还要注意语法)。
推荐还是自己看英文的解释+练习,来得快--------SQL Tutorial
- select distinct 列名称 from 表名称 ,关键词distinct 用于返回唯一不同的值
- SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC, 以逆字母顺序显示公司名称,并以数字顺序显示顺序号
- UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ,为lastname是“Wilson”的人添加firstname为“Fred”
- 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后的表要快得多。
- 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‘;

浙公网安备 33010602011771号