1. 建表
Create TABLE productionfo(
ProductId varchar2(10),
ProductName varchar2(20),
ProductPrice number(8,2),
Quantity number(10),
Category varchar2(10),
Desperation varchar2(1000),
Origin varchar2(10));
2.插入数据
insert
into productionfo
values ('0240030001','海尔XQB50-918A',1100,29,'0100030002','','中国');
说明如下:
当有多行输入时
可以用:
insert all
into productionfo values ('0240030002','三星WF-R1065S/XSC',3600,12,'0100030002','','中国')
into productionfo values ('0240030003','三星XQB55-T86A/XSC',2500,111,'0100030002','','中国')
select 1 from productionfo1;
每次都有into 表名 values ;.最后加上一句 SELECT 1 FROM DUAL;
注:dual表是一个虚拟表,当from后确切表名时使用
详见本链接;
3.删除
(1)某一值
delete from productionfo where productname='测试';
(2)全部记录(但字段不删除)
delete from productionfo;
(3)删除字段
alter table tablename drop (column);
(4)删除表(所有内容全部删除)
drop table tablename(productionfo);
4.查询(部分查询,以后用到会更新)
- 非空查询常用关键字 is
select * from productionfo where(quantity is null);
- 使用别名查询:
select productid 产品编号,productname 产品名称,productprice 产品价格 from productionfo;
- 使用表达式操作查询字段
查询并按照某种规则输出用“||”连接;要对其进行运算就用as操作。
select productid,productname,productprice ||'*' ||1.25 || '='||productprice*1.25 as new_productprice from productionfo;
结果如下:
这个必须要给出照片,不然说不清楚。
4. 去重查询:
关键字是distinct
select distinct category 产品类型 from productionfo;
- 升降序查询:
(1.)默认查询关键字 order by
select productname,quantity from productionfo order by quantity ;(默认升序)
(2.)降序查询关键字 order by,desc
select productname,quantity from productionfo order by quantity desc;(降序)
**注:NULL类型一般排在首位(升序)。但在降序时NULL排在末尾。 **
(3.)使用别名作为排序字段:
SELECT PRODUCTNAME 产品名称,
QUANTITY 产品数量
FROM productionfo
ORDER BY 产品数量 nulls last;(重点)
注:最后是 nulls 而不是 null ;
**
注: last表示null出现在最末端,还有一个关键字是first表示null出现在最顶端。 使用多个字段排序: 首先按照第一个字段排序,接着按照第二个字段排序,以此类推: select productname,category,quantity from productionfo order by category asc , 3 desc; 表示先按照category排序,接着再按照第三个字段排序。 注:利用多个字段进行排序,可以单独为每个字段指定排序方式,而且可以用别名、表达式和位置排序混用。
6.group by用法:
1.单个字段分组查询:select category 产品类型编码 ,avg(productprice) 平均价格,origin 产地 from productionfo group by category;
2.断字段分组查询:select category 产品类型编码 ,avg(productprice) 平均价格,origin 产地 from productionfo group by category,origin;
3.与where子句合用:select category,avg(productprice)平均价格,origin from productionfo where productprice>1000 group by category,origin;
注:
(1)当查询中存在group by字句时,select 列表中只能存在分组函数,或出现在group by子句中的字段。
(2)group by 子句不允许出现在where条件中,但允许出现在其后,也可以与where条件并列使用。
having子句:
having 子句通常和group by 子句一起使用,限制搜索条件。它和where子句不一样,having子句与组有关,而不与单个的值有关。在group by 子句中,它会作用于group by 创建的组。
注:having与where的区别,having对group by子句负责,而where对from负责。
子查询:
1.any:表示满足子查询结果的任何一个。和<,<= 搭配,表示小于等于列表中的最大值;而和》,>、>=配合时表示大于等于列表中的最小值
2.some:可以认为和any含义相同。只不过any多用于非“=”的环境中。
3.all:表示满足子查询结果的所有结果。和<,<=搭配,表示小于等于列表中的最小值;而和>,>=配合时表示大于等于列表中的最大值。
注:关于笛卡尔积:
笛卡尔积,就是一个表中的每一行与另一个表中的每一行连接在一起,而形成的新表,也就是查询结果。查询结果的记录数就是这两个记录数的乘积。