mysql经典实例和sql经典实例_mysql经典sql语句实例

本文为大家介绍一些mysql经典sql语句实例,包括拷贝表、复制表、交叉查询等,供大家学习参考。

1. 拷贝表(拷贝数据,源表名:A(a,b,c) 目标表名:B)

将A表中NAME,SEX字段插入B表(B表有三个字段分别是CHARNAME,CHARSEX,STAT(默认值:0))

复制代码 代码如下:

mysql> Select * into B from A

mysql> select * into B from A where 1<>1

mysql> insert into B from select name,sex,0 from A;

2. 复制表(只复制结构,源表名:A(a,b,c) 新表名:B) ,并向B中插入一条记录1,2,3

复制代码 代码如下:

mysql> create table admin as (select * from bookinfo.admin);

Insert into B values(1,2,3)

3. 有两个表A和B,均有key和value两个字段,

(1)查询A中所有key在B中对应的value(没有用0代替)

(2)如果B的key在A中也有,就把B的value换成A中对应的value

复制代码 代码如下:

(1)Select A.key,isnull(B.value,0)

From A

Left join B on A.key=B.key

(2)Update B set B.value=A.value

From A,B where A.key=B.key

4. 表 A(ID,Name),查询表A中存在ID重复三次(包括三次)以上的记录

复制代码 代码如下:

Select * From A Where ID in (select id from A Group by ID having count(name)>=3)

5.学生成绩表A

Name kecheng fenshu

张三 语文 81

张三 数学 95

张三 英语 80

李四 语文 75

李四 数学 80

李四 英语 65

王五 语文 42

王五 数学 65

王五 英语 55

…….

(1)用一条SQL语句,查询出每门课都大于80分的学生姓名

(2)转化成以下表(60以下:不及格,60-70 及格,70-80 中,80-90良,90以上 优)

Name pingjunfen kaohe

张三 85 良

李四 73 中

王五 54 不及格

……

复制代码 代码如下:

(1)Select * from A where name not in (select name from A where fenshu<80)

(2)Select name,avg(fenshu) as pingjunfen,

case when avg(fenshu)<60 then '不及格'

when avg(fenshu)>=60 and avg(fenshu)<70 then '及格'

when avg(fenshu)>=70 and avg(fenshu)<80 then '中'

when avg(fenshu)>=80 and avg(fenshu)<90 then '良'

when avg(fenshu)>=90 then '优秀' end as kaohe

From A

Group by name

6.学生表 A

IDX NO NAME KCNO(课程编号) KCNAME(课程名称) fenshu(分数)

1 2005001 张三 0001 数学 69

2 2005002 李四 0001 数学 89

3 2005001 张三 0001 数学 69

……

删除除了自动编号不同,其他都相同的学生冗余信息

复制代码 代码如下:

Delede From A

Where IDX not in (Select min(ID) group by NO,NAME,KCNO,KCNAME,FENSHU)

7.两个结构相同的表A,B(栏位a,b,c)

(1)查询同时存在A和B中的记录

(2)查询存在A中,不存在B中的记录

复制代码 代码如下:

(1)Select * From A,B

Where A.a=B.a and A.b=B.b and A.c=B.c

(2)Select A.* From A

Left join B on A.a=B.a and A.b=B.b and A.c=B.c

where B.a is null

8.玩家登陆表A,登陆一次有一条记录(Id, Logintime)

查询上周内(假设现在时间为周一0点)玩家和玩家登陆次数以及最后登陆日期

复制代码 代码如下:

Select ID,count(Logintime) AS count,max(Logintime) AS LastLogintime

From A where Logintime>=convert(char(10),dateadd(dd,-7,getdate()),20)

And Logintime

9. 本地服务器A,数据库 ADB,表 A1(name)

远程服务器B,数据库 BDB,帐号表B1(ID, name, playtime, logintime, lastip),基本信息表B2 (id, name, lev, gd, guildno), 公会表B3(guildno, guildname),装备表B4(id, data),技能表B5(id, data)

查询出A1中玩家name含有moliyo的所有相关信息(本地数据库用户有能连接远程数据库的权限)

复制代码 代码如下:

Select B1.ID,A1.Name,B1.Logintime,B1.playtime,B1.LastIP,

B2.Lev,B2.GD,B2.guildno,B3.guildname,

B4.data AS data1,B5.data AS data2

From A1

Inner join B.BDB.DBO.B1 on A1.name=B1.name

Inner join B.BDB.DBO.B2 on B1.ID=B2.ID

Inner join B.BDB.DBO.B3 on B2.guildno=B3.guildno

Inner join B.BDB.DBO.B4 on B1.ID=B4.ID

Inner join B.BDB.DBO.B5 on B1.ID=B5.ID

Where A1.name like '%moliyo%'

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值