① 谁有SQL语句的视频教程.我是初学的. 所以求详细的经典的视频教程..谢谢!
到电驴里下载啊!搜索赫斌!他得不错。。。
② SQL语句学习大全
创建数据库
创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database 'databaseName' go Create DATABASE database-name
删除数据库
drop database dbname
备份sql server
--- 创建 备份数据的 device USE master EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack
创建新表
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
删除新表
drop table tabname
增加一个列
Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
添加主键
Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col)
创建索引
create [unique] index idxname on tabname(col….) 删除索引:drop index idxname on tabname 注:索引是不可更改的,想更改必须删除重新建。
创建视图
create view viewname as select statement 删除视图:drop view viewname
几个简单的基本的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%’ (所有包含‘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[separator]
几个高级查询运算词
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),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。
使用外连接
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: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
[编辑本段]提升
复制表
(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 1<>1 法二:select top 0 * into b from a
拷贝表
(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b;
跨数据库之间表的拷贝
(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '"&Server.MapPath("."&"\data.mdb" &"' where..
子查询
(表名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)
显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
外连接查询
(表名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
在线视图查询
(表名1:a select * from (Select a,b,c FROM a) T where t.a > 1;
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
in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
删除主表中已经在副表中没有的信息
两张关联表delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1
四表联查问题
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 .....
日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
前10条记录
select top 10 * form table1 where 范围
选择排名
选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
派生结果表
包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表 (select a from tableA except (select a from tableB) except (select a from tableC)
随机取出10条数据
select top 10 * from tablename order by newid()
随机选择记录
select newid()
删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
列出数据库里所有的表名
select name from sysobjects where type='U'
列出表里的所有的
select name from syscolumns where id=object_id('TableName')
列示排列
列示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
初始化表table1
TRUNCATE TABLE table1
选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
数据类型转换
declare @numid int declare @id varchar(50) set @numid=2005 set @id=convert(varchar,@numid) 通过上述语句完成数据类型Int转换成varchar,其他转换类似,可参看convert函数
[编辑本段]技巧
1=1,1=2的使用
在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !=' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere end else begin set @strSQL = 'select count(*) as Total from [' + @tblName + ']' end 我们可以直接写成 set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere
收缩数据库
--重建索引 DBCC REINDEX DBCC INDEXDEFRAG --收缩数据和日志 DBCC SHRINKDB DBCC SHRINKFILE
压缩数据库
dbcc shrinkdatabase(dbname) 转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname' go
检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
修复数据库
Alter DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK GO Alter DATABASE [dvbbs] SET MULTI_USER GO
日志清除
SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE tablename -- 要操作的数据库名 Select @LogicalFileName = 'tablename_log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 1 -- 你想设定的日志文件的大小(M) -- Setup / initialize DECLARE @OriginalSize int Select @OriginalSize = size FROM sysfiles Where name = @LogicalFileName Select 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles Where name = @LogicalFileName Create TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255) Select @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) -- Wrap the log if necessary. WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (Select size FROM sysfiles Where name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop. Select @Counter = 0 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) BEGIN -- update Insert DummyTrans VALUES ('Fill Log') Delete DummyTrans Select @Counter = @Counter + 1 END EXEC (@TruncLog) END Select 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles Where name = @LogicalFileName Drop TABLE DummyTrans SET NOCOUNT OFF
更改某个表
exec sp_changeobjectowner 'tablename','dbo'
存储更改全部表
Create PROCEDURE dbo.User_ChangeObjectOwnerBatch @OldOwner as NVARCHAR(128), @NewOwner as NVARCHAR(128) AS DECLARE @Name as NVARCHAR(128) DECLARE @Owner as NVARCHAR(128) DECLARE @OwnerName as NVARCHAR(128) DECLARE curObject CURSOR FOR select 'Name' = name, 'Owner' = user_name(uid) from sysobjects where user_name(uid)=@OldOwner order by name OPEN curObject FETCH NEXT FROM curObject INTO @Name, @Owner WHILE(@@FETCH_STATUS=0) BEGIN if @Owner=@OldOwner begin set @OwnerName = @OldOwner + '.' + rtrim(@Name) exec sp_changeobjectowner @OwnerName, @NewOwner end -- select @name,@NewOwner,@OldOwner FETCH NEXT FROM curObject INTO @Name, @Owner END close curObject deallocate curObject GO
SQL SERVER中直接循环写入数据
declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 end
③ 结构化查询语言(SQL)是在各种数据库及程序中使用最广泛的数据库操作语言,请使用SQL语句完成以下操作: 教
(1) update 教师 set 年龄来=年龄+1
(2) select * from 教师 where 所属院系自='软件学院' order by 编号
(3) insert into 教师(编号,姓名,性别,年龄,所属院系,职称) values('4331','李艳','女',28,'计算机学院','讲师')
(4) delete from 教师 where 年龄>60
也可以这样写
delete * from 教师 where 年龄>60
④ SQL语句 查询如下教学数据库!!求大神
10. delete student where sdept = 'IS'
9. UPDATE SC SET GRADE = GRADE + (GRADE * 0.1) WHERE CNO = 1
8. UPDATE Student set sage = sage +1
7. insert into sc (sno,cno, grade) values ('200215123',4,88)
insert into sc (sno,cno, grade) values('200215124',1,80)
insert into sc (sno,cno, grade) values('200215125',5,78)
6. insert into student (sno, sname,ssex,sage,sdept) values ('200215125','陈冬回','男答',20,'IS')
⑤ 如何使用sql语句操作“学生课程数据库中的三个关系”
设学生课程数据库中有三个关系:
学生关系S(学号,姓名,年龄,性别)
学习关系SC(学号,课程号,成绩)
课程关系C(课程号,课程名)
其中
S#、C#、SNAME、AGE、SEX、GRADE、CNAME分别表示
学号、课程号、姓名、年龄、性别、成绩和课程名。
用SQL语句表达下列操作
(1).检索选修课程名称为“MATHS”的学生的学号与姓名
SELECT
S.学号,S.姓名
FROM SC INNER JOIN C ON SC.课程号 = C.课程号 INNER JOIN S ON SC.学号 = S.学号
where C.课程名 = 'MATHS'
(2).检索至少学习了课程号为“C1”和“C2”的学生的学号
SELECT 学号,iCount=Sum(iCount) From (
SELECT 学号,iCount=1 FROM SC Where 课程号 = 'C1' OR 课程号 = 'C2'
) A Group by 学号
(3).检索年龄在18到20之间(含18和20)的女生的学号、姓名和年龄
SELECT 学号,姓名,年龄 FROM S WHERE 性别='女' And 年龄 >= 18 And 年龄 <= 20
(4).检索平均成绩超过80分的学生的学号和平均成绩
SELECT * FROM (
SELECT 学号,平均成绩=Avg(成绩) FROM SC Group By 学号
) A WHERE 平均成绩 > 80
(5).检索选修了全部课程的学生姓名
SELECT
S.姓名
FROM
(
SELECT 学号 FROM(SELECT 学号,学习课程总数=Count(课程号),课程总数=Isnull((select count(课程号) From C),0) FROM SC Group By 学号) A Where 学习课程总数 = 课程总数
) L INNER JOIN S ON L.学号 = S.学号
(6).检索选修了三门以上的学生的姓名
SELECT
S.姓名
FROM
(
SELECT 学号 FROM (SELECT 学号,课程数=sum(iCount) FROM (SELECT 学号,iCount=1 FROM SC) A GROUP BY 学号) A WHERE 课程数 > 3
) L INNER JOIN S ON L.学号 = S.学号
⑥ sql语句问题 如图 比如查询条件,12号到13号每个视频总共点击量,如图2所示,请问这个怎么写
可以运行下列SQL语句:
select视频名称,sum(用户点击量回)as用户点击量,
sum(视频点答击量)as视频点击量from表名
where时间between'2016-07-12'and'2016-07-13'
groupby视频名称;
⑦ 谁有详细讲解sql语句视频教程
视频教程一般都是基础的,要高级一些的,只能看相关的书本了
⑧ 求SQL 语句 基础视频教程 哪位大侠有SQL语句的视频教程
http://www.xin3721.com/eschool/SQLxin3721/
⑨ 如何使用sql语句操作“学生课程数据库中的三个关系”
1、
create
table
sc(
学号
char(10),
课程号
char(10),
成绩
float(10)
primary
key(学号,课程号))
2、
alter
table
s
add
地址
char(30),身份证号码
char(20)
3、
select
姓名,年龄
from
s
order
by
年龄
desc
4、
select
*
from
s
where
left(姓名,1)='王'
ps:好版好上课啊
这个是基础中权的基础啊
⑩ 怎么用sql语句查询课程表中的最高课时以及课程名称
select top 1 课时, 课程名称 from 课程表
order by 课时 desc