sql命令题(共4篇)
篇1:sql命令题
Access课堂练习
Access课堂练习六
姓名 学号
SQL命令查询书面练习
已知教师管理系统中的2个表分别为:
教师(教师编号,姓名,性别,部门编号,出生时间,工作时间,职称,基础工资,岗位工资,绩效工资)部门(部门编号,部门名称,担任职务,办公室电话(0571-6018845),业余爱好)
完成下列问题的SQL命令的表示:
1.查询教师表中出所有教师的姓名、性别和职称。
2.查询所有教师的姓名,性别,部门名称,担任职务和职称。3.查询教师表中姓名,性别,工龄和职称。4.查询教师表中姓名,性别,职称和工资总额。5.查询所有教授的姓名,部门名称和担任职务。6.查询55岁及上的教师姓名和性别。
7.查询教师表中工龄在10年到20的教师信息。
8.查询部门名称为“人事处”、“英语系”、“计算机系”的教师信息。9.查询按基础工资排序的教师信息。10.查询按职称分类的平均绩效工资。11.查询业余爱好中含有“运动”的教师信息。
12.查询部门表中办公室电话升级后(0571-86018845)的部门信息。
1.select 姓名,性别,职称 from 教师
2.select 姓名,性别,部门名称,担任职务,职称 from 教师,部门 3.select 姓名,性别,year(date(0))-year(工作时间)as 工龄 from 教师
4.select 姓名,性别,职称,基础工资+岗位工资+绩效工资 as 工资总额from 教师 5.select 姓名,部门名称,担任职务 from 教师,部门where 职称=”教授” 6.select 姓名,性别 from 教师 where year(date(0)-year(出生时间))>=55 浙江大学城市学院
Access课堂练习
浙江大学城市学院
篇2:sql命令题
几年前做的一个QQ站现在把资料整过来了,但是发现有些litpic缩略图中的路么地址不对了,以前我都是使用phpmyadmin替换,今天我发现可以直接使用SQL命令运行器来解决,下面来看我一个替换litpic中指定路径地址.
查询指定 archives 表:
代码如下:select * from 你的表前缀_archives limit 1
这个表是主表了,我们查询一条出来看看,结果如下.
运行SQL:select * from 你的表前缀_archives where id =1466,共有1条记录,最大返回100条.
记录:1
id:1466
typeid:110
typeid2:0
sortrank:1238913636
flag:c,p
ismake:1
channel:1
arcrank:0
click:33119
money:0
title:可爱的动态nomoQQ表情图片
shorttitle:
color:
writer:
source:
litpic:upload.jb51.net/allimg/c090405/123Y13349440-1SH6.jpg
pubdate:1238913636
senddate:1238913636
现在我们可以锁定到id =1466 记录:
代码如下:select litpic from 你的表前缀_archives where id =1466;
执行结果:
运行SQL:
代码如下:select litpic from 你的表前缀_archives where id =1466;
共有1条记录,最大返回100条.记录:1
litpic:upload.jb51.net/allimg/c090405/123Y13349440-1SH6.jpg
好了现在我们需要把litpic 字段中的upload.jb51.net 替换成 /uploads/ 这种,这些我们可以使用update replace来实现.
例子:
代码如下:update 你的表前缀_archives set `litpic`=replace(litpic, ‘upload.jb51.net‘, ‘/uploads‘) WHERE id=1466
我们来执行看看结果,成功执行1个SQL语句,好现在我们来查询一下执行结果是不是我们想要的,再执行:
代码如下:select litpic from 你的表前缀_archives where id =1466;
确定执行提示:
运行SQL:
代码如下:select litpic from 你的表前缀_archives where id =1466;
共有1条记录,最大返回100条.记录:1
litpic:/uploads/allimg/c090405/123Y13349440-1SH6.jpg
看提示没有错误,我们在地址栏看看图片正确,查看是没有问题了,现在我们来批量替换.
代码如下:select litpic from 你的表前缀_archives where litpic like ‘%upload.jb51.net%‘
这样我们查一下是为了防止后面替换不会替换没有upload.jb51.net了,也防止了sql出错导致数据库全部替换掉了.
代码如下:update 你的表前缀_archives set `litpic`=replace(litpic, ‘upload.jb51.net‘, ‘/uploads‘) where litpic like ‘%upload.jb51.net%‘
成功执行1个SQL语句,我们再查一下看.
运行SQL:
代码如下:select litpic from 你的表前缀_archives where litpic like ‘%upload.jb51.net%‘
无返回记录!篇3:sql命令题
计算机网络已普及到社会各个领域,各种类型的网站迅速增长。这些网站给人们带来各种便利的同时,它们自身可能隐藏着众多的安全隐患,可能会造成不堪设想的后果。因此,网站安全是一个网站开发人员必须重视的问题。
2 网页代码中执行SQL命令的安全隐患及对策
2.1 数据验证不严格
如果网站开发者在网站的开发过程中进行网页程序代码设计时不严谨,那么,网站就可能存在数据库被他人非法入侵及控制的安全隐患。请看下面的网页代码:
显而易见,这段代码用来修改用户口令。假如网站入侵者浏览该页面时在网页的用户名文本框中输入这样的一个用户:mm’;exec sp_addlogin'xixi,同时在密码文本框中输入要修改的新密码:xinmima,那么,上面的代码实际运行时会是什么样的情况呢?执行时变量Sqlstring中的值为:update yongh set password='xinmima'where name=mm’;exec sp_addlogin'xixi'。也就是说,入侵者随意输入的用户名mm在数据库中根本不存在,因此也就不存密码被修改的问题。但是,入侵者在mm后面输入的内容’;exec sp_addlogin'xixi才是其本意。此语句执行时,在毫无察觉的情况下,网站数据库已经被添加了一个新的登录名:xixi。实际上,对上面实例中输入的用户名稍加修改就可以运行任何sql语句,比如添加登录用户,然后就可以进行诸如数据的删除、口令的存取等非法操作。该案例可以看出,程序设计不严密可能带来的后果是多么可怕。
上面示例存在的安全隐患是完全可以预防的。如果在网页代码中要使用参数,尤其是用户输入的参数,就必须在网页代码中对其数据类型、数据长度、甚至数据内容按照一定的要求进行严格检查,从而避免上述情况的发生。
2.2 万能密码漏洞
请阅读分析下面的网页功能代码:
上面代码段的功能是实现登录,其中同样存在着严重的安全隐患。假如入侵者在用户名和密码文本框中分别输入Admin和sy'or'1'='1,那么,上述页面代码在执行时Sqlstrin的值为:select name,password from yonghu where name='admin and password='sy'or'1'='1'。条件表达式name='Admin'and password='sy'or'1'='1'恒成立。于是,网站入侵者就可以这样的万能密码轻易地登录网站系统并进行非法操作。
预防万能密码攻击的正确代码可以这样编写:
2.3 SQL injection攻击
2.3.1 SQL injection
SQL injection利用网站提供的数据检验不严谨的数据输入接口来达到入侵网站的目的。很多情况下,动态网站的某些功能会需要用户输入一些数据,比如,用户注册、登录、数据查询等。但遗憾的是,很多网站却没能做到对网站使用者输入的这些数据进行严格的检验,此类网站就很容易受到SQL injection攻击。
请看下面的语句:
命令中,变量User_Name和Pass中存储登录用户输入的名称和口令。显然,此语句实现的是网站对登录用户输入的登录名及口令数据进行验证的功能。这种数据验证的方式在实际应用中很常见,可能不觉得有什么问题。然而,如果仔细分析,就会发现此语句中存在严重的安全隐患。
假设在网站数据库中存在一个合法的管理员用户,其名称和口令分别是:uuu和ppp。若网站入侵者已经获知数据库中存在这个名为“uuu”的管理员。此时,如果该入侵者在网页登录页面中输入登录名和口令:uuu’—和***后(***代表任意的字符串),上述语句执行时就成了下面的形式:
SQL语句中“--”表示此符号后面的部分为注释语,因此,该命令实际上就绕开了对登录口令的判断直接成功登录。同样道理,如果网站入侵者预先知道数据库系统中存在大家都很熟悉的管理员账户:Admin,登录时只需输入Admin'—,即可不需要密码登录系统。
2.3.2 SQL injection防御
可以利用SQL中的存储过程来对上述攻击进行防御。比如编制下面的存储过程:
该存储过程中定义了两个varchar类型的输入参数@Us er_Name和@Pass。输入参数用于实现存储过程的调用者把数据传递到存储过程中,传递过程中这些被传递的数据是独立的。上述存储过程被调用执行时,入侵者输入的数据uuu’--将被整体独立地传递给@User_Name,即name被赋值:uuu’--,同时,密码***也被整体独立地传递给@Pass,即password被赋值:***。用这种方式传递数据就避免了输入数据的重新组合。于是,上例数据验证语句就正确地表示成:select*from yongh where name=’uuu—’and password=’***’。通过上例可以看到,存储过程不仅可以实现对数据库的高效访问,而且也很好地实现了对SQL injection的防御。同时在使用存储过程时还可以对其访问权进行设置,这样可以进一步保障网站代码的安全。
3 结语
网页代码中执行SQL命令可能存在的安全隐患是网站开发者必须要认真加以对待的问题。网站开发人员只有具备了专业的开发技术、高度的安全意识、严谨的开发过程,才能最大限度地保证网站系统的安全。
摘要:计算机网络的应用已经进入各行各业,动态网站的数量迅速增长,众多网站中存在着大量的安全隐患。通过几个实例,对网页代码中执行SQL命令时存在的安全隐患进行分析,并给出解决问题的对策。
关键词:网页代码,SQL命令,安全隐患,对策
参考文献
[1]武淑鹏.网站中的SQL注入攻击及防范措施.消费电子,2013,(16).
[2]许礼捷.网站安全防范技术的研究.沙洲职业工学院学报,2013,(2).
篇4:sql命令题
关键词:SQL命令;Visual FoxPro 6.0;使用技巧
中图分类号:TP311.13 文献标识码:A文章编号:1009-3044(2007)16-30906-02
Utilization of SQL Order in Visual FoxPro 6.0 Programmings
YE Hua-qiao
(Wuhan ship Vocational Technical College,Wuhan 430050,China)
Abstract:This paper introduces SQL the concept and the characteristic, Introduces in with emphasis visual Foxpro through the example the SQLorder classification, the usage and the use skill.
Key words:SQL order;Visual FoxPro 6.0;use skill
1 引言
SQL (Structured QueryLanguage) 结构化查询语言,因其结构简洁,功能强大,简单易学,得到了广泛的应用。Visual FoxPro 6.0提供功能完善的集成环境和丰富的开发工具, 利用 Rushmore 技术优化性能,支持SQL命令。掌握SQL命令是Visual FoxPro 6.0程序设计的基础,同时SQL命令也是全国计算机等级考试Visual FoxPro二级考试的重点考查内容之一。
2 SQL的概念
SQL全称是“结构化查询语言(Structured QueryLanguage)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像VisualFoxporo, PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。1986年10月,美国国家标准局(ANSI)的数据库委员会批准了SQL作为关系数据库语言的美国标准。1987年6月国际标准化组织(ISO)将其采纳为国际标准。这个标准也称为“SQL86”。随着SQL标准化工作的不断进行,相继出现了“SQL89”、“SQL2”(1992)和“SQL3”(1993)。SQL成为国际标准后,对数据库以外的领域也产生很大影响,不少软件产品将SQL语言的数据查询功能与图形功能、软件工程工具、软件开发工具、人工智能程序结合起来。
3 SQL的优点
SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。
3.1 非过程化语言
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。
3.2 统一的语言
SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL命令只需很少时间就能学会,最高级的命令在几天内便可掌握。 SQL为许多任务提供了命令,包括:
(1)查询数据
(2)在表中插入、修改和删除记录
(3)建立、修改和删除数据对象
(4)控制对数据和数据对象的存取
(5)保证数据库一致性和完整性
4 Visual FoxPro 6.0中的SQL命令
假设有人事管理数据库,包含三个表:
部门.DBF: 部门号 C(3),部门名 C(12),负责人 C(6),电话 C(12)
职工.DBF: 部门号 C(3),职工号 C(4),姓名 C(6),性别 C(2),出生日期 D
工资.DBF: 职工号 C(4),基本工资 N(8,2),津贴 N(8,2),奖金 N(8,2),扣除 N(8,2)
4.1 查询命令SQL-SELECT
SQL-SELECT语法格式如下:
SELECT 查询目标 FROM 表1,表2,…[WHERE条件表达式];
[GROUP BY 分组列名[HAVING[组选择条件表达式]][ORDERBY排序项[序]]
其中,SELECT子句说明要查询的数据,可以用以下格式表示:
[ALL|DISTINCT][别名.]<表达式>[,<表达式>]…
表达式可以是由属性、库函数和常量用算术运算符组成的公式;
FROM子句说明要查询的数据来自哪个或哪些表,可以对单个表或多个表进行查询;
WHERE子句说明查询条件,即选择元组的条件;
GROUP BY 短语用于对查询结果进行分组,可以利用它进行分组汇总;
HAVING短语必须跟随GROUP BY使用,它用来限定分组必须满足的条件;
ORDER BY 短语用来对查询的结果进行排序。
例1:查询职工实发工资并按实发工资降序排列
SELECT 姓名,(基本工资+津贴+奖金-扣除) AS 实发工资FROM 职工, 工资;
WHERE职工.职工号=工资.职工号ORDERBY实发工资 DESC
例2:查询有10名以上(含10名)职工的部门信息(部门名和职工人数),并按职工人数降序排列。
SELECT 部门名, COUNT(职工号) AS 职工人数 FROM 部门, 职工 ;
WHERE 部门.部门号=职工.部门号GROUP BY 部门名HAVINGCOUNT(*)>=10 ;ORDER BY 职工人数 DESC
使用技巧:①由于排序是对查询结果的排序,因此 Order By 子句中的字段必须是 Select 子句中出现的字段。另外, Order By 子句允许用位标号给出排序字段,这些位标号是指 Select 子句中出现的序号.如例1中“ORDER BY实发工资 DESC”可改为“ORDER BY2DESC”。当 Select 子句包含了用户定义函数或 FoxPro 函数时,用位标号来给出排序字段显得十分方便。
②WHERE子句中不能使用字段别名。
③HAVING子句和WHERE子句同时存在时,先用WHERE子句限定元组,然后进行分组,最后再用HAVING子句限定分组。
4.2 数据定义
SQL数据定义功能是指定义数据库的结构,包括定义基本表、定义视图、定义索引三个部分。用SQL可以定义、扩充和取消基本表。定义一个基本表相当于建立一个新的关系模式,但尚未输入数据,只是一个空的关系框架,如Access中的设计视图。定义基本表就是创建一个基本表,对表名及它所包括的各个属性及其数据类型作出具体规定。
(1)创建一个基本表
命令格式:CREATE TABLE 表名(字段名1 类型(宽度,小数),字段名2 类型(宽度,小数)…)
例3: 建立一个新职工表:职工1(职工号,姓名,性别,婚否,家庭住址)。
CREATE TABLE 职工1(职工号 C(4),姓名 C(6),性别 C(2),婚否 L,家庭住址 C(20))
使用技巧:对基本表的结构描述放在括号里,表名在括号之间用空格分开;字段名与类型之间也必须有空格;各个字段这间用逗号分开否则将产生语法错误。对于系统默认的字段宽度可以缺省。
(2)修改基本表
例4:为“工资”表增加一个“实发工资”字段。
ALTER TABLE 工资 ADD 实发工资 N(9,2)
例5:将职工表中的姓名字段宽度由原来的6改为8.
ALTER TABLE 职工ALTER姓名 C(8)
例6:将工资表中的“津贴”字段改为“岗位津贴”
ALTER TABLE工资RENAMECOLUMN 津贴TO 岗位津贴
(3)删除基本表
DROP TABLE 表名
例7:删除职工1表
DROP TABLE职工1
使用技巧:DROPTABLE 直接从磁盘上删除表名所对应的dbf文件。如果表名是数据库中的表,最好应使数据库为当前打开的数据库。
4.3 数据操纵
(1)插入数据
命令格式: INSERT INTO 表名(字段名1,字段名2…)VALUES(表达式1,表达式2…)
例8:向职工表中插入一条新记录。
INSERTINTO职工(部门号,职工号 ,姓名 ,性别)VALUES("301","3018","王大明","男")
使用技巧:如果插入的是完整的记录时,表名后的字段名可以省略;没有指定属性值的字段为空值。
(2)更新数据
命令格式:
UPDATE〈表名〉 SET〈更新表达式〉 [WHERE〈条件〉];
例9:修改部门号为101的部门负责人及电话。
UPDATE 部门 SET 负责人="李小强", 电话="13901234567" WHERE 部门号="101";
使用技巧:WHERE子句用于指定更新条件,如果不使用WHERE子句,则更新全部记录。
(3)删除数据
命令格式:
DELETE FROM〈表名〉 WHERE〈条件〉;
例10: 删除职工号为“1005”的职工工资信息。
DELETE FROM 工资 WHERE 职工号="1005";
使用技巧:本删除语句为逻辑删除。缺省条件语句是删除表中全部记录。
SQL包含数据查询、数据定义、数据操纵和数据控制等功能,由于Visual FoxPro自身在安全控制方面的缺陷,所以Visual FoxPro没有提供数据控制功能。
参考文献:
[1]胡维华.Visual FoxPro程序设计教程[M].杭州:浙江科学技术出版社,2000.
[2]陈华生.Visual FoxPro教程[M].苏州大学出版社.
[3]教育部考试中心.全国计算机等级考试二级教程――Visual Foxpro程序设计[M].高等教育出版社,2001.
[4]http://www.zk168.com.cn/INFO/Study/FreeThesis/In ...[EB/OL].2006.