赞
踩
cast(列名 as bigint)
select count(distinct 商品种类)
from Products;
SELECT SUM(cast(销售单价 as bigint)), SUM(DISTINCT cast(销售单价 as bigint))
FROM Products;
结果中以不确定行(空行)形式表现出来
把表分为几组再进行汇总处理。其中group by子句中指定的列称为聚合键/分组列
select 列名1,列名2,列名3,...
from 表名
group by 列名1,列名2,列名3,...
例:
select 商品种类,count(*) as count
from Products
group by 商品种类
子句的书写顺序(暂定)
使用WHERE子句和GROUP BY子句进行汇总处理:
根据where指定的条件过滤再进行汇总
select 列名1,列名2,列名3,...
from 表名
where 条件
group by 列名1,列名2,列名3,...
select 销售单价,count(*) as count
from Products
where 商品种类='衣服'
group by 销售单价;
常见错误:
1.使用GROUP BY子句时,SELECT子句中不能出现聚合键之外的列名。
2.在GROUP BY子句中不能使用SELECT子句中定义的别名。
3.GROUP BY子句结果的显示是无序的。
写在group by字句之后,可用于指定组的条件
having 子句可跟聚合键、聚合函数、常数
例:
select 进货单价,count(*) as count
from Products
group by 进货单价;
select 进货单价,count(*) as count
from Products
group by 进货单价
having 进货单价>500;
区分:where用于指定行的条件,having用于指定组的条件
select 列名1,列名2,列名3,...
from 表名
order by 排序基准列1 (ASC/DESC),排序基准列2 (ASC/DESC)...----写在select语句末尾
使用 HAVING 子句时 SELECT 语句的顺序
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
可使用group by,having,order by语句
回忆:建立数据表:create table语句
insert into 表名 (列名1,列名2,...) values ('值1','值2',...)
insert into 表名 values ('值1','值2','值3',...)
直接在值清单中插入即可(此时对应的列不能设置农not null约束)
需在创建表时指定默认值约束
create table productins
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER DEFAULT 0,
purchase_price INTEGER ,
regist_date DATE ,
PRIMARY KEY (product_id));
INSERT INTO productins (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES ('0007', '擦菜板', '厨房用具', DEFAULT, 790, '2009-04-28');
insert into 目标表 (目标表列名1,列名2,...)
select 要复制的各列名
from 原有数据表
insert into ProductCopy(商品名称,商品种类,销售单价,进货单价,登记日期)
select 商品名称,商品种类,销售单价,进货单价,登记日期
from Products; -------将表Products中的数据复制到新表ProductCopy中
delete from 表名;
delete from 表名 where 条件;
delete from Products
where 进货单价 is null; ---删除进货单价为空的行
update 表名 set 表名='xxx';
update Products
set 登记日期='2009-10-10'
update 表名
set 表名='xxx'
where 条件;
update Products
set 进货单价=进货单价*10 -----更新方式/内容
where 商品种类='厨房用具'; ----指定更新对象
update Products
set 登记日期='NULL'
where 商品种类='衣服'
update Products
set 列1=更新1
列2=更新2
...
where 商品种类='厨房用具'; ----指定更新对象
update Products
set (列1,列2,...)=(更新1,更新2,...)
...
where 商品种类='厨房用具'; ----指定更新对象
定义:是需要在同一个处理单元中执行的一系列更新处理的集合。
begin transaction; -------事务开始语句
DML语句1;
DML语句2;
DML语句3;
...
commit; -------事务结束语句
例:
begin transaction;
----运动T恤的销售单价降低1000
update Products
set 销售单价=销售单价-1000
where 商品名称='运动T恤';
-----运动T恤销售单价上浮1000
update Products
set 销售单价=销售单价+500
where 商品名称='运动T恤';
commit;
begin transaction;
DML语句1;
DML语句2;
DML语句3;
...
rollback;
事务的ACID特性
1.A原子性——事务执行结束后所有更新处理将全部执行/不执行,不存在部分执行的情况
2.C一致性(完整性)——事务执行中包含的处理需男足数据库提前设置的约束,如主键约束、NOT NULL 约束
3.I隔离性——不同事务之间互不干扰,独立进行
4.D持久性——事务提交后该时间点的数据状态会被保存。即使由于系
统故障导致数据丢失,数据库也一定能通过某种手段进行恢复
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。