黑马程序员技术交流社区

标题: 【武汉校区】Java面试需要知道的SQL语句语法 [打印本页]

作者: 武汉分校-小舞    时间: 2017-7-20 14:27
标题: 【武汉校区】Java面试需要知道的SQL语句语法
【武汉校区】Java面试需要知道的SQL语句语法
(本文稿由就业部黄老师提供)

DDL—数据定义语言(Create,Alter,Drop,DECLARE)
DML—数据操纵语言(Select,Delete,Update,Insert)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)

首先,简要介绍基础语句:

1、创建数据库
Create DATABASE database-name

2、删除数据库
drop database dbname

3、备份sql server
--- 创建备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始备份
BACKUP DATABASE pubs TO testBack

4、创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [notnull],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… fromtab_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、几个高级查询运算词
[hide=d1000]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),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。 [/hide]

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:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

13、复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a

14、拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;

15、跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in'"&Server.MapPath(".")&"\data.mdb"&"' where..

16、子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: selecta,b,c from a where a IN
(1,2,3)

17、显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddatefrom
table where table.title=a.title) b

18.外连接查询(表名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

19、在线视图查询(表名1:a )
select * from (Select a,b,c FROM a) T where t.a > 1;

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

21、:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

22、:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where
table1.field1=table2.field1 )

23、四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.cinner join
d on a.a=d.d where .....

24、日程安排提前五分钟提醒
sql: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5

25、一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段
desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

[hide=d1000]26、前10条记录
select top 10 * form table1 where 范围

27、选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用
于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where
tb.b=ta.b)

28、包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个
结果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)

29、随机取出10条数据
select top 10 * from tablename order by newid()

30、随机选择记录
select newid()

31、删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by
col1,col2,...)

32、列出数据库里所有的表名
select name from sysobjects where type='U'

33、列出表里的所有的
select name from syscolumns where id=object_id('TableName')

34、列示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
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3[/hide]
35、初始化表
table1
TRUNCATE TABLE table1

作者: 加油吧——哈哈    时间: 2017-7-21 09:01
好全啊,楼主辛苦了
作者: silenceandxh    时间: 2017-7-21 14:43
谢谢老师分享
作者: 黑马^123    时间: 2017-7-24 17:07
fdsfrgaedsa
作者: qq2454096964    时间: 2017-7-24 23:24
66666666666666

作者: hi_ma    时间: 2017-7-29 22:19
666666666666666666666666666
作者: kangkan    时间: 2017-7-30 10:30
y   b    c67
作者: wx20080501    时间: 2017-7-31 10:13
very good^……
作者: 2906010384    时间: 2017-7-31 17:31
666666666666666666666666666
作者: a151605    时间: 2017-7-31 19:53
看看是什么好东西
作者: dinghehe    时间: 2017-8-10 16:11
看看看看
作者: MosLY    时间: 2017-8-10 17:36
厉害啦~~~~
作者: @211    时间: 2017-8-10 19:18
正在学习!!!!!!!
作者: wangrong    时间: 2017-8-13 10:10
谢谢分享
作者: peijian    时间: 2017-8-14 13:38
回复什么的真讨厌

作者: 张文建    时间: 2017-8-14 15:25
学习一下。
作者: zxc164205    时间: 2017-8-14 19:25
收藏收藏收藏收藏收藏收藏收藏收藏收藏
作者: zjc11    时间: 2017-8-14 20:33
谢谢分享

作者: k1453711238    时间: 2017-8-14 21:57
谢谢老师分享
作者: 学渣小弟    时间: 2017-8-15 10:49
学习参考
作者: _HHHQAQ    时间: 2017-8-15 13:23
好全,辛苦楼主
作者: 天空之城~    时间: 2017-8-18 11:29
3333333333333333333333333
作者: guojiewan8    时间: 2017-8-18 14:13
aaaaaaaaaaaa

作者: guojiewan8    时间: 2017-8-18 14:25
aaaaaaaaaa

作者: bobo_tkb    时间: 2017-8-18 15:10
啊奥,这是什么东东
作者: xk1973    时间: 2017-8-18 15:43
谢谢分享 好好学习天天向上

作者: future。    时间: 2017-9-6 23:03
喜欢  滴
作者: liu_123    时间: 2017-9-7 19:53
老师辛苦了,很全
作者: mmx0315    时间: 2017-9-7 22:30
dfgsdzxZxZx
作者: 15861175765    时间: 2017-9-10 11:22
看看看看扩扩扩扩扩扩扩扩扩扩
作者: 暗夜意轩    时间: 2017-9-10 22:06
值得学习
作者: bran_q    时间: 2017-9-19 19:00
最近心好塞呀
作者: huoshuijie    时间: 2017-9-21 15:56
6666666666666666666666
作者: majia123    时间: 2017-9-21 20:07
666666666666666666666
作者: longda_1    时间: 2017-9-21 22:57
deeeeeeeeeeeeeee
作者: 469616526    时间: 2017-9-27 23:19
谢谢老师分享。
作者: 烟雨沐晨苏    时间: 2017-9-28 08:45
短发啊是的发顺丰暗示法啊发生发生地方
作者: 哼哈二将    时间: 2017-9-28 12:02
11111111111111111111111111
作者: xgwhsgws    时间: 2017-9-28 22:20
很有用,值得学习,感谢楼主分享
作者: wyfddh    时间: 2017-9-29 14:56
大神5555666666
作者: 花花公子777    时间: 2017-9-29 20:02
谢谢分享
作者: 0.0.c    时间: 2017-9-29 21:38
66666666666
作者: 榕树长枫叶    时间: 2017-10-6 11:42
不错         
作者: newu    时间: 2017-10-6 12:02
very good^……
作者: 12321123    时间: 2017-10-11 19:43

作者: 一骑绝尘1    时间: 2017-10-11 20:39
1111丹东市档案局
作者: 诸暨天    时间: 2017-10-11 21:20
谢谢指导
作者: 后来的我们丶    时间: 2017-10-11 21:26
66666666666666666
作者: HAHAA    时间: 2017-10-12 09:23
谢谢分享
作者: 随风521    时间: 2017-10-12 09:36
正在学习mySQL
作者: 破风车    时间: 2017-10-12 11:05
支持一下,学习了
作者: 王某人    时间: 2017-10-12 23:11
sql底子差 来学习了!
作者: 小小的我    时间: 2017-10-15 10:48
谢谢了。
作者: 北方少年    时间: 2017-10-15 10:52
感谢楼主分享

作者: hpuwangzhiwei    时间: 2017-10-15 20:24
谢谢老师

作者: StevenLi    时间: 2017-10-18 17:27
666666666666666
作者: 北冥有渔    时间: 2017-10-18 19:44

作者: hzxszq@qq.com    时间: 2017-10-18 20:56
人格的两个耳光二个人
作者: 970617703    时间: 2017-10-22 22:09
1111111111111111
作者: 似水流年1    时间: 2017-10-23 00:54
ggdhjjfdgj

作者: 不败娜美    时间: 2017-10-23 11:33
66666666666666666666666666666
作者: zgb296    时间: 2017-10-23 12:56

谢谢分享
作者: 张全蛋尼玛    时间: 2017-10-23 15:47
的点点滴滴
作者: 无心睡眠u    时间: 2017-10-24 18:16
谢谢总结

作者: LIUDEHUA    时间: 2017-10-25 19:40
谢谢你谢谢你谢谢你
作者: dukasvan    时间: 2017-10-27 09:42
非常感谢
作者: hhhhhhhhhhhh    时间: 2017-10-28 08:34
看一看,学习
作者: lgylgy    时间: 2017-10-29 12:51
我哈      我下月     要学习
作者: baxi84yy    时间: 2017-10-31 23:29
6666666666666666666
作者: nyx    时间: 2017-11-1 00:20
可以的  加油
作者: zgb296    时间: 2017-11-1 08:21

感谢分享
作者: shadow16    时间: 2017-11-1 14:00
看看...........

作者: yuyangzhou1994    时间: 2017-11-1 18:11
马上要找工作啦
作者: 浮生光影    时间: 2017-11-2 11:26
很全面的sql语句解析
作者: Elroy    时间: 2017-11-4 23:38
感谢分享

作者: 55666    时间: 2017-11-5 00:35
hao 阿双方都是
作者: 55666    时间: 2017-11-5 00:36
很好 借鉴了下
作者: iyi    时间: 2017-11-5 20:13
谢谢 学习 sql
select  form from
from
作者: 超哥1016    时间: 2017-11-5 22:01
。。。。。。。。。。。。。。。。。
作者: zhousl    时间: 2017-11-7 17:37
学习学习
作者: chc2525775    时间: 2017-11-8 03:57
看看 好奇有些什么 学习学习
作者: level    时间: 2017-11-8 06:49
非常好的sql语句噢
作者: seofz    时间: 2017-11-8 16:25
6666666666666666
作者: 做个坏的程序员    时间: 2017-11-8 16:59
小小黑马
作者: jimzhang15    时间: 2017-11-8 21:10
666666666666
作者: wlw11    时间: 2017-11-10 15:17
抱着学习态度,不知道有没有学习的劲头        
作者: ruozhu    时间: 2017-11-16 10:17
6666666666666666
作者: pleiry    时间: 2017-11-19 17:15

谢谢老师分享
作者: InputBUG    时间: 2017-11-20 11:44
12345678910
作者: 情种    时间: 2017-11-21 14:06
快毕业了  需要这个  谢谢分享
作者: 刘某人。    时间: 2017-11-22 21:40
顶顶顶顶
作者: L564142122    时间: 2017-11-24 10:30
66666666666666666666666
作者: 黑马小黄人    时间: 2017-11-24 10:40
SQL语句总是很容易遗忘
作者: ljia3344    时间: 2017-11-24 13:18
学习学习
作者: king_back在、    时间: 2017-11-24 18:27
好好看看
作者: 尹哈哈哈    时间: 2017-11-29 15:50
必须收藏!
作者: 406245159    时间: 2017-11-30 16:49
dingdingding
作者: 独吟    时间: 2017-12-1 14:44
感谢分享,学习了
作者: gyz0623    时间: 2017-12-1 23:01
这些都是经验啊
作者: 可可豆    时间: 2017-12-2 09:26
xianlaikankan




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2