数据库降序排序语句
MYSQLSQL排序语句
mysql:常用基本sql语句小结(转载)
sql分类:
ddl—数据定义语言(create,alter,drop,declare)
dml—数据操纵语言(select,delete,update,insert)
首先,简要介绍基础语句:
1、说明:创建数据库
create database database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
use master
exec
sp_addumpdevice ?disk?, ?testback?, ?c:mssql7backupmynwind
_1.dat? --- 开始 备份
backup database pubs to testback
4、说明:创建新
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
create table tabname(col1 type1 [not null] [primary key],col2
type2 [not null],..) 根据已有的表创建新表:
a:create table tab_new like tab_old (使用旧表创建新表)
b:create table tab_new as select col1,col2… from tab_old
definition only
5、说明:
删除新表:drop table tabname
6、说明:
增加一个列:alter table tabname add column col type
注:列增加后将不能删除。db2中列加上后数据类型也不
能改变,唯一能改变的是增加varchar类型的长度。
7、说明:
添加主键:alter table tabname add primary key(col)
说明:
删除主键:alter table tabname drop primary key(col)
8、说明:
创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:
创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ?%value1%? ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count * as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
a: union 运算符
union 运算符通过组合其他两个结果表(例如 table1 和
table2)并消去表中任何重复行而派生出一个结果表。当 all
随 union 一起使用时(即 union
all),不消除重复行。两种情况下,派生表的每一行不是
来自 table1 就是来自 table2。b: except 运算符
except 运算符通过包括所有在 table1 中但不在 table2
中的行并消除所有重复行而派生出一个结果表。当 all 随
except 一起使用时 (except all),不消除重复行。c: intersect
运算符
intersect 运算符通过只包括 table1 和 table2 中都有的行
并消除所有重复行而派生出一个结果表。当 all 随 intersect 一起使用时 (intersect all),不消除重复行。注:使用运算词
的几个查询结果行必须是一致的。
12、说明:使用外连接
a、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也
包括左连接表的所有行。 sql: select a.a, a.b, a.c, b.c, b.d, b.f
from a left out join b on a.a = b.c b:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,
也包括右连接表的所有行。 c:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连
接表中的所有记录。 其次,大家来看一些不错的sql语句
1、说明:复制表(只复制结构,源表名:a 新表名:b) (access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径)
(access可用)
insert into b(a, b, c) select d,e,f from b in ?具体数据库?
where 条件例子:..from b
in ?&server.mappath(.)&data.mdb &? where..
4、说明:子查询(表名1:a 表名2:b)
select a,b,c from a where a in (select d from b ) 或者: select
a,b,c from a where a in (1,2,3)
5、说明:显示文(转载于:mysqlsql排序语句)章、提交人和
最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a left out join b on a.a =
b.c
7、说明:在线视图查询(表名1:a )
select * from (select a,b,c from a) t where t.a > 1;
8、说明:between的用法,between限制查询数据范围时包
括了边界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数
值2
9、说明:in 的使用方法
select * from table1 where a [not] in (?值1?,?值2?,?值4?,?值6?)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2
where
table1.field1=table2.field1 )
11、说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c
on a.a=c.c inner join d on a.a=d.d where .....
12、说明:日程安排提前五分钟提醒
sql: select * from 日程安排 where datediff(?minute?,f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 tablea 中但不在 tableb和tablec 中
的行并消除所有重复行而派生出一个结果表
(select a from tablea ) except (select a from tableb) except (select a from tablec)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type=?u?
21、说明:列出表里的所有的
select name from syscolumns where
id=object_id(?tablename?)
22、说明:列示type、vender、pcs字段,以type字段排
列,case可以方便地实现多重选择,类似select 中的case。
select type,sum(case vender when ?a? then pcs else 0 end),sum(case vender when ?c? then pcs else 0 end),sum(case
vender when ?b? then pcs else 0 end) from tablename group by
type
显示结果:
type vender pcs
电脑 a 1
电脑 a 1篇二:mysql sql语句练习
mysql sql语句练习:
1.建库建表
--create tables
--部门表
create table dept
(deptno int(3) primary key,
dname varchar(14),
loc varchar(13));
--雇员表
create table emp
(
empno int(4) not null primary key,
ename varchar(10),
job varchar(10),
mgr int(4),
hiredate datetime,
sal double,
deptno int(3),
foreign key(deptno) references dept(deptno)
);
--工资级别表
create table salgrade
(
grade int(3) primary key,
losal int(3),
hisal int(3)
);
-----------------------------------------------------------------------------
-----------------------------------------------------------
2.插入数据(进行初始化)
--往部门表中查数据
insert into dept values(10,accounting,new york);
insert into dept values(20,research,dallas);
insert into dept values(30,sales,chicago);
insert into dept values(40,operations,boston);
insert into dept values(50,admin,washing);
--往雇员表中插数据
insert into emp
values(7369,smith,clerk,7902,1980-12-17,800,0,20);insert into emp values(7499,allen,salesman,7698,1981-2-20,1600,300,30);
insert into emp
values(7844,turner,salesman,7499,1981-9-8,1500,0,30); insert
into emp values(7698,tom,manager,0,1981-9-8,6100,600,40); insert into emp
values(7876,adams,clerk,7900,1987-5-23,1100,0,20); insert into emp values(7900,james,clerk,7698,1981-12-3,2400,0,30); insert into emp
values(7902,ford,analyst,7698,1981-12-3,3000,null,20); insert into emp values(7901,kik,clerk,7900,1981-12-3,1900,0,30); --往
工资级别表中插数据insert into salgrade values(1,700,1200);
insert into salgrade values(2,1201,1400);
insert into salgrade values(3,1401,2000);
insert into salgrade values(4,2001,3000);
insert into salgrade values(5,3001,5000);
insert into salgrade values(6,5001,10000);
-----------------------------------------------------------------------------
-------------------------------------------------------
3.必会的5个组函数:max,min,avg,sum,count 要牢牢记住
-----------------------------------------------------------------------------
------------------------------------------------------
4.练习:
?查询雇员表中工资最高的雇员的员工号、员工姓名、工
资和部门号。
select empno,ename,sal,deptno from emp
where sal = (select max(sal) from emp);
?单条查询语句综合练习题:
薪水大于1200的雇员,按照部门编号进行分组,分组后
的平均薪水必须大于1500,查询各分组的平均工资,按照工
资的倒序进行排列。
select avg(sal) avg_sal, deptno
from emp
where sal > 1200
group by deptno
having avg_sal > 1500
order by avg_sal desc;
说明:此句基本上包含了sql语句的子语句和排列顺序:
select(要查询的字段)->from(从哪一张或哪几张表或视
图)->where(过滤条件)->group by(having)(分组及
条件)->order by(按哪个或哪几个字段进行升序或降序
排列)。
注意:sqlserver4.1中可能不支持在order语句中使用组函
数avg,报错说:invalid use of group function(错误提示和现
象有点对不上)
解决办法:给avg(sal)起个别名avg_sal,这样在order语
句中就直接使用这个别名 ?等值连接:
查询每个雇员和其所在的部门名
select ename,dname from emp,dept where (emp.deptno =
dept.deptno); 或者(推荐)(on中就写连接条件,where中就
写过滤条件,各司其职)
select ename,dname from emp join dept on(emp.deptno =
dept.deptno); ?非等值连接:
查询每个雇员姓名及其工资所在的等级