- SQL常用命令
1、order by 对结果集 排序。ASC:升序(默认),DESC:降序。
Select * from A order by age desc,id ASC //age降序,id升序
group by 根据一定规则对数据进行分组,将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。用group by all 多列分组。常和 sum,max,min ,count 等聚合函数一起使用,与group by联用的having子句是筛选满足条件的组,与where不同的是在分组之后过滤数据
比如一个表中,有a、b、c三种类别,每个类别不同的数量,可以用
select 类别,数量 from 表名 group by 类别
返回的结果实际就是分类汇总a、b、c三种对应的数量
select 类别,数量 from 表名 group by 类别 having 数量>20
在结果里显示分组数量>20的结果
CREATE TABLE Student(
ID int PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL);//建表
CREATE VIEW view_name AS
Select * FROM Table_name;//建视图
CreateUNIQUEINDEXindex_nameONTableName(col_name);//建索引
//插入
INSERT INTO tablename {字段1,字段2,字段3 …} values(值1,值2,值3 …);
insert into 目标数据表 select * from 源数据表 //把源数据表的记录添加到目标数据表
//插入视图
INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);
//更新数据
update table1
SET 字段名=字段值 where 条件表达式 ;
update table1 SET 字段1=值1,字段2=值2...字段n=值n where 条件表达式;
|
//查询
select * from tablename where 字段名=值 order by 字段名 desc
select * from tablename where 字段名 like '% 值 %'
select * from tablename where 字段名 in ('值1','值2','值3')
select * from tablename where 字段名 between 值1 and 值2
//删除
DELETE FROM Table WHERE ...;
delete from tablename; //将数据表所有记录删除 注意表还在,DROP 是永久性删除一个数据表
GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT OPTION];//授权
REVOKE (权限表) ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权
|
Select E.NAME, S.NAME FROM EMPLOYEE E S
WHERE E.SUPERName=S.Name //列出工作人员及其领导的名字
//列出不同的值 distinct
select
distinct name from A //作用于单列,只有name不同的行被显示
select distinct name, id from A //作用于多列,name+id都不同的行被显示
//规定返回的行数 top
Select
TOP 2 *FROM A //TOP n 说明返回n行
Select
TOP 20 PERCENT
* FROM A //;TOP n PERCENT说明返回的行数等于总行数的百分之几
//合并或多个 SELECT 语句的结果集 UNION
select name from table_name1
UNION
select name from table_name2
select name from table_name1
UNION ALL
select name from table_name2
注意:UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL
//连接
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
内连接:等值连接、不等连接、自然连接
外连接:左外连接、右外连接、全连接
交叉连接:也称迪卡尔积
内连接
//等值连接 在连接条件中使用等于号(=),结果包括重复列
select * from A,B where A.Id = B.Id
等同于
select * from A
inner join B on A.Id = B.Id
//不等连接 >、<、<>、>=、<=、!>和!<
select * from A
inner join B on A.Id <> B.Id
//自然连接 使用=,结果不能重复
外连接
//左连接 返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值
select * from A
left join
B on
A.Id = B.Id
//右连接
select * from A
right join B on A.Id = B.Id
//全连接 返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值
select * from A
full join B on A.Id = B.Id
交叉连接
//返回结果的行数等于两个表行数的乘积,m×n
select *from A
cross join B