sql常用语句大全

一、创建,删除,更新表

create table product(
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));

--创建表格,主键为product_id,sale_price设置了default 0,故它的默认值为0

drop table product;

--删除表格

alter table product

add column product_name_pinyin varchar(100);

--添加列

alter table product

drop column product_name_pinyin;

--删除列

alter table product

rename to productbk;

--表的重命名

二、查询基础select,where

select product_id

as "商品编号"

from product;

--取中文别名

select "商品"

as string,product_id

from product;

--同时取常数与列

select distinct product_id

from product;

--去重

/*多行注释,

不会执行。*/

三、运算符与括号

NULL与任何值运算后仍然是NULL;

select *

from t_hh

where (not value and quality <> 192;

select *

from t_hh

where not (value and quality <> 192);

--括号内的语句优先执行

四、函数与distinct去重

select count(*)

from product;

--查询行数

select count(purchase_price)

from product;

--查询purchase_price中的非空行数

select sum(sale_price),avg(purchase_price),max(sale_price),min(purchase_price)

from product;

--求和,求均值,求最大值,求最小值

select count(distinct product_type)

from product;

--计算product_type种类数

五、group by分组

select product_type,count(*)

from product

group by product_type;

--按照product_type分组,但注意select后面的列或值必须随product_type变化而变化

select product_type,purchase_price

from product

group by product_type,purchase_price;

--可以按照两个列检索

书写顺序:select,from,where,group by,having

执行顺序:from,where,group by,select

group by中不能使用别名,where中不可以使用函数,having中可以筛选函数值

六、having子句

select groupid,state

from tobtask_feedback

group by groupid,state

having count(groupid) > 10;

--筛选出数量大于10的groupid与state的组合,注意,此处的having字句后的字段必须从出现在group by后的字段中选取

七、order by子句

select groupid,state

from tobtask_feedback

order by groupid,state;

--按照groupid排序的条件下,在groupid的相同值下再按照state排序,注意,order by可以使用别名,也可以使用select未选择的列

八、insert into填充数值

insert into product(product_id,product_name,product_type,sale_price,purchase_price,regist_date) values('0001','T恤','衣服',1000,500,'2009-09-20');

--填充数值

insert into product

values('0002','打孔器','办公用品',500,320,'2009-09-11');

--填充全列数值时,可以省略列清单

insert into product

values('0003','运动T恤','衣服',4000,2800,null),('0004','菜刀','厨房用具',3000,2800,'2009-09-20'),('0005','高压锅','厨房用具',6800,5000,'2009-09-15');

--填充多个值时,只需用括号与逗号隔开,插入null的直接在values中对应位置写入null,但创建表时不能设置not null约束

insert into product

values('0007','擦菜板','厨房用具',default,790,'2009-04-28');

--如果创建表时,对列设置了default值,在values中添加default可以自动插入默认值,这叫显式默认值

insert into product(product_id,product_name,product_type,purchase_price,regist_date)

values('0007','擦菜板','厨房用具',790,'2009-04-28');

--如果不对该列填充,会自动插入默认值,这叫隐式默认值

insert into product

values('0007','擦菜板','厨房用具',default,790,'2009-04-28');

--如果创建表时,未对该列设置default值,在values中对其添加default会自动插入null

insert into productcopy(product_id,product_name,product_type,sale_price,purchase_price,regist_date)

select product_id,product_name,product_type,sale_price,purchase_price,regist_date

from product;

--将product表中的内容复制给productcopy表

create table producttype(

product_type varchar(32) not null,sum_sale_price integer,sum_purchase_price integer,primary key (product_type));

--创建producttype表

insert into producttype(product_type,sum_sale_price,sum_purchase_price)

select product_type,sum(sale_price),sum(purchase_price)

from product

group by product_type;

--利用product中各列的函数值对新表producttype进行填充

create table temp(employee_id char(4),employee_name varchar(100),salary integer,bonus integer);

insert into temp values('0001','tom',11000,25000);

delete from temp;

--删除表中的行数据,但保留表的结构,即保留表的列

drop table temp;

--直接删除表格

delete from productcopy where sale_price > 3000;

--删除sale_price>3000的行,注意,delete不能使用order by,having与group by 子句

truncate productcopy;

--删除productcopy表中所有的行,速度比delete更快

update productcopy set regist_date = '2009-10-10';

--更新regist_date为常数'2009-10-10'

十、一些实际操作

SELECT program_name, f_datetime, f_value
	FROM public.kyq_10min_all where f_datetime between to_date('2021-04-04 00:00:00','YYYY-mm-dd hh24:mi:ss') 
    and to_date('2021-05-10 23:59:59','YYYY-mm-dd hh24:mi:ss') 
    and to_char(f_datetime,'hh24:mi:ss') between '09:00:00' and '21:00:00';

--选择出2021-04-04 00:00:00到2021-05-10 23:59:59这个时间段中,每天里09:00:00到21:00:00这个时间段的数据

你可能感兴趣的:(计算机杂谈,sql,数据库,java)