ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:23.39KB ,
资源ID:10550697      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10550697.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MYSQLSQL排序语句.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MYSQLSQL排序语句.docx

1、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:mssql7

2、backupmynwind_1.dat? - 开始 备份 backup database pubs to testback 4、说明:创建新表 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

3、 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 注:索

4、引是不可更改的,想更改必须删除重新建。 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

5、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

6、(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

7、 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 =

8、 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

9、 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 wher

10、e 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 * fro

11、m (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、说明:两张关联表,删除主表

12、中已经在副表中没有的信息 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开始时间

13、,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最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c fr

14、om 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

15、 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可以方便地实现多重选择

16、,类似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 ta

17、ble 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 salgrad

18、e ( 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,adm

19、in,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); ins

20、ert 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

21、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.练习: 查询雇员表中工资最高的雇员的员工号、员工

22、姓名、工资和部门号。 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; 说明:此句基本上

23、包含了sql语句的子语句和排列顺序:select(要查询的字段)->from(从哪一张或哪几张表或视图)->where(过滤条件)->group by(having)(分组及条件)->order by(按哪个或哪几个字段进行升序或降序排列)。 注意:sqlserver4.1中可能不支持在order语句中使用组函数avg,报错说:invalid use of group function(错误提示和现象有点对不上) 解决办法:给avg(sal)起个别名avg_sal,这样在order语句中就直接使用这个别名 等值连接: 查询每个雇员和其所在的部门名 select enam

24、e,dname from emp,dept where (emp.deptno = dept.deptno); 或者(推荐)(on中就写连接条件,where中就写过滤条件,各司其职) select ename,dname from emp join dept on(emp.deptno = dept.deptno); 非等值连接: 查询每个雇员姓名及其工资所在的等级 select ename,grade from emp e join salgrade s on(e.sal between s.losal and s.hisal); 查询雇员名第2个字母不是a的雇员的姓名、所在的组名、工资所在

25、的等级。 三张表的连接查询(先连接,再加上where语句进行过滤) select ename,dname,grade from emp e join dept d on(e.deptno = d.deptno) join salgrade s on(e.sal between s.losal and s.hisal) where ename not like _a%; 查询每个雇员和其经理的姓名 自连接:(事实上只有一张表,但把它当成两张表来用,使用别名来进行区分) select e1.ename,e2.ename from emp e1,emp e2 where (e1.mgr = e2.e

26、mpno); 或者:(推荐用join语句) select e1.ename,e2.ename from emp e1 join emp e2 on(e1.mgr = e2.empno); 查询每个雇员和其经理的姓名(包括公司老板本身(他上面没有经理) 左外连接(会把左表中不符合连接条件的记录也显示出来): select e1.ename,e2.ename from emp e1 left join emp e2 on(e1.mgr = e2.empno); 查询每个雇员的姓名及其所在部门的部门名(包括没有雇员的部门) 右外连接(会把右表中不符合连接条件的记录也显示出来): select ena

27、me,dname from emp e right join dept d on(e.deptno = d.deptno); 子查询1:查询每个部门中工资最高的人的姓名、薪水和部门编号 先求出每个部门中的最高工资: select max(sal) max_sal,deptno from emp group by deptno 在使用连接查询: select ename,sal,e.deptno from emp e join (select max(sal) max_sal,deptno from emp group by deptno) t on(e.sal = t.max_sal and

28、e.deptno = t.deptno); 子查询2:查询每个部门平均工资所在的等级 select deptno,avg_sal,grade from salgrade join(select deptno,avg(sal) avg_sal from emp group by deptno) t on(t.avg_sal between salgrade.losal and salgrade.hisal); 或者: select deptno,avg_sal,grade from (select deptno,avg(sal) avg_sal from emp group by deptno)

29、 t join salgrade s on(t.avg_sal between s.losal and s.hisal); ?子查询3:查询每个部门内平均的薪水等级 先求每个人的薪水等级 select ename,deptno,grade from emp join salgrade s on(emp.sal between s.losal and s.hisal); 再按组进行分组求平均 select deptno,avg(grade) from (select ename,deptno,grade from emp join salgrade s on(emp.sal between s.losal and s.hisal) t group by deptno; ?子查询4:查询雇员中有哪些人是经理人: select ename from emp where empno in(select distinct mgr from emp); 或者: select ename from emp join (select distinct mgr from emp) t

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1