欢迎光临!      本网站已被浏览  次,       
   
  首  页 课程简介 教学大纲 章节辅导 操作练习 习题评讲 在线测试 在线练习 等级考试 在线留言  
 

 当前位置 >> 习题评讲:SQL 语句简介

 
 
  章节目录    
     
 
  • 计算机基础知识部分
  • Windows操作系统基本操作部分
  • Word文字处理基本操作部分
  • Excel表格处理基本操作部分
  • PPT演示文稿制作基本操作部分
  • 计算机网络基础知识部分
  • 计算机等级考试一级MS Office
  • 计算机等级考试二级VFP
  • SQL 语句简介
  •  
         

    SQL 语句简介


    SQL 查询语句

    SQL 的SELECT 语句用来查询、排序、筛选数据,其语法如下:

    SELECT 字段列表

    FROM 表名

    [WHERE 条件表达式]

    [ORDER BY 字段名 [DESC]]

    说明:

    (1) 字段列表为要查询的字段名,若查询多个字段,字段名之间必须用“,”分隔;

    (2) 表名指要查询的关系表或视图表的名称;

    (3) 条件表达式用于定义筛选条件;

    (4) ORDER BY 用于设置对查询到的结果的排序方式,默认为升序排列,如果加上 DESC 表示降序排列。

    1、(1) 查询“职工”表中所有字段的数据

    SELECT * FROM 职工

       (2) 如果“职工”表中仅包含三个字段:编号、姓名、工资,也可用下面的语句查询“职工”表中的所有记录

    SELECT 编号,姓名,工资 FROM 职工

       (3) 从“职工”表中查询所有“工资”值

    SELETE 工资 FROM 职工

       (4) 如果要去除查询中得到的重复值,则应指定 DISTINCT 语句

    SELETE DISTINCT 工资 FROM 职工

    2、查询“职工”表所有记录中的姓名、工资两个字段的值

    SELECT 姓名,工资 FROM 职工

    3、查询“职工”表中“工资 > 2350”的职工编号

    SELECT 编号 FROM 职工 WHERE 工资 > 2350

    4、(1) 查询“成绩”表中班级为“运输”且语文成绩高于 80 分的学生姓名(成绩表中的字段有:学号、姓名、班级、语文、数学)

    SELETE 姓名 FROM 成绩 WHERE 班级="运输" AND 语文>=80

       (2) 查询“职工”表中工资高于 2000 的所有记录,并按降序排列

    SELECT * FROM 职工 WHERE 工资 >=2000 ORDER BY 工资 DESC

    5、查询在仓库“CK1”或“CK2”工作且“工资 < 1200”的职工号

    SELECT 职工号 FROM 职工;

      WHERE 工资 < 1200 AND (仓库号="CK1" OR 仓库号="CK2")

    注:这里“;”为行续接符号。

    6、查询“工资 > 2350”的职工号及其所在城市(注:仓库的属性有仓库号、城市、面积)

    SELECT 职工号,城市 FROM 职工,仓库;

      WHERE (工资 > 2350) AND (职工.仓库号=仓库.仓库号)

    7、查询工作在面积大于 100 的仓库的职工号及所在城市

    SELECT 职工号,城市 FROM 仓库,职工;

      WHERE (面积 > 400) AND (职工.仓库号=仓库.仓库号)

    8、查询职工工资为 1250 元的仓库所在城市

    SELECT 城市 FROM 仓库 WHERE 仓库号 IN;

      (SELECT 仓库号 FROM 职工 WHERE 工资 = 1250)

    9、查询所有职工工资都大于 1250 元的仓库的所有信息(即查询所有职工工资都少于或等于 1210 元的仓库的信息)

    SELECT * FROM 仓库 WHERE 仓库号 NOT IN;

      (SELECT 仓库号 FROM 职工 WHERE 工资 <= 1250)

    10、查询工资与职工号“A031”的工资相同的所有职工

    SELECT 职工号 FROM 职工 WHERE 工资 =;

      (SELECT 工资 FROM 职工 WHERE 职工号 = "A031")

    11、查询工资在 1200 元至 2000 元之间的职工信息

    SELECT * FROM 职工 WHERE 工资 BRTWEEN 1200 AND 2000

    注:BETWEEN…AND 表示“在…和…之间”,该查询条件等价于:  (工资 >= 1200) AND (工资 <= 2000)

    12、从“供应商”表中查询在“供应商名”字段中包含“公司”的全部记录

    SELECT * FROM 供应商 WHERE 供应商名 LIKE "%公司"

    13、查询所在地不在北京的所有供应商的信息

    SELECT * FROM 供应商 WHERE 地址 ! ="北京"

    注:在 SQL 中,“!=”表示“不等于”,该语句也可用否定运算符 NOT 表示为:

    SELECT * FROM 供应商 WHERE NOT(地址 ="北京")

    14、按职工工资升序查询所有职工的信息

    SELECT * FROM 职工 ORDER BY 工资

    注:“ORDER BY 字段名”表示按指定字段对查询到的记录进行排序,如果按降序排序,则为:

    SELECT * FROM 职工 ORDER BY 工资 DESC

    15、以仓库号为主要关键字,以职工工资为第二关键字排序查询所有职工的信息

    SELECT * FROM 职工 ORDER BY 仓库号,工资

    16、按地址查询供应商所在地的数量

    SELECT COUNT(DISTINCT 地址) FROM 供应商

    17、计算查询到的所有职工工资的总额

    SELECT SUM(工资) FROM 职工

    18、计算所在地在北京和上海的仓库的职工工资的总额

    SELECT SUM(工资) FROM 职工 WHERE 仓库号 IN;

      (SELECT 仓库号 FROM 仓库 WHERE 城市="北京" OR 城市="上海")

    19、计算在全部职工中工资都高于 1200 元的仓库的平均面积

    SELECT AVG(面积) FROM 仓库 WHERE 仓库号 NOT IN;

      (SELECT 仓库号 FROM 职工 WHERE 工资 <= 1200);

    20、(1) 计算在仓库号为“CK2”的仓库工作的职工的最高工资

    SELECT MAX(工资) FROM 职工 WHERE 仓库号="CK2"

       (2) 计算指定仓库的职工的最低工资

    SELECT MIN(工资) FROM 职工 WHERE 仓库号="CK2"

    21、计算每个仓库的职工的平均工资

    SELECT 仓库号,AVG(工资) FROM 职工 GROUP BY 仓库号

    注:“GROUP BY 字段名”用于对指定字段进行分组,然后再查询每个组的相应值进行计算。

    22、计算职工人数至少多于 2 人的仓库的人均工资

    SELECT 仓库号, COUNT( * ),AVG(工资) FROM 职工;

      GROUP BY 仓库号 HAVING COUNT( * ) >=2

    23、查询未注明供应商的订购单

    SELECT * FROM 订购单 WHERE 供应商号 IS NULL

    注:查询空值时要使用 IS NULL,而不能使用 =NULL。

    24、查询已注明供应商的订购单

    SELECT * FROM 订购单 WHERE 供应商号 IS NOT NULL

    25、查询职员表中职员的主管领导的相关信息

    SELECT S.职员姓名."领导",E.职员姓名 FROM 职员 S.职员 E;

      WHERE S.职员号 =E.经理

    26、查询每个职员经手的最高金额的订购单信息

    SELECT out.职员号,out.供应商号,out.订购单号,out.订购日期,out.总金额;

      FROM 订购单 out WHERE 总金额 =;

        (SELECT MAX(总金额) FROM 订购单 inner1;

          WHERE out.职员号 =inner1.职员号)

    27、查询没有职工的仓库信息

    SELECT * FROM 仓库 WHERE 仓库号 NOT IN (SELECT 仓库号 FROM 职工)

    28、查询至少有一个职工的仓库信息

    SELECT * FROM 仓库 WHERE EXISTS;

        (SELECT * FROM 职工 WHERE 仓库号=仓库.仓库号)

    29、查询工资高于或等于仓库 CK1 的任何一位职工工资的仓库号

    SELECT DISTINCT 仓库号 FROM 职工 WHERE 工资 >=ANY;

      (SELECT 工资 FROM 职工 WHERE 仓库号="CK1")

    30、查询工资高于或等于仓库 CK1 的所有职工工资的仓库号

    SELECT DISTINCT 仓库号 FROM 职工 WHERE 工资 >=ALL;

      (SELECT 工资 FROM 职工 WHERE 仓库号="CK1")

    31、普通连接(即查询的结果仅列出满足连接条件的记录)

    SELECT 仓库.仓库号,城市,面积,职工号,工资;

      FROM 仓库 JOIN 职工;

        ON 仓库.仓库号=职工.仓库号

    32、左连接(即查询的结果不仅显示出满足条件的记录,也包括第一个表中不满足条件的记录)

    SELECT 仓库.仓库号,城市,面积,职工号,工资;

      FROM 仓库 LEFT JOIN 职工 ON 仓库.仓库号=职工.仓库号

    33、右连接(即查询的结果不仅显示出满足条件的记录,也包括第二个表中不满足条件的记录)

    SELECT 仓库.仓库号,城市,面积,职工号,工资;

      FROM 仓库 RIGHT JOIN 职工 ON 仓库.仓库号=职工.仓库号

    34、全连接(即查询的结果不仅显示出满足条件的记录,也包括两个表中不满足条件的记录)

    SELECT 仓库.仓库号,城市,面积,职工号,工资;

      FROM 仓库 FULL JOIN 职工 ON 仓库.仓库号=职工.仓库号

    35、查询城市为北京和上海的仓库信息

    SELECT * FROM 仓库 WHERE 城市="北京";

    UNION;

    SELECT * FROM 仓库 WHERE 城市="上海"

    36、(1) 查询“职工”表中工资最高的前三位职工的信息

    SELECT * TOP 3 FROM 职工 ORDER BY 工资 DESC

       (2) 查询“成绩”表中语文成绩前五位的学生信息

    SELECT TOP 5 * FROM 成绩 ORDER BY 语文 DESC

       (3) 查询“职工”表中工资最低的那 30% 的职工的信息

    SELECT * TOP 30 PERCENT FROM 职工 ORDER BY 工资

    37、查询“职工”表中的所有信息,将查询到的信息存放在临时的 .DBF 库文件 tmp 表中

    SELECT * FROM 职工 INTO CURSOR tmp

    38、查询“职工”表中工资最高的三位职工的信息,将查询结果存放到永久的 .DBF 库文件的 highsal 表中

    SELECT * TOP 3 FROM 职工 INTO TABLE highsal ORDER BY 工资 DESC

    39、查询“职工”表中工资最高的三位职工的信息,将查询结果存放到文本文件 tmp.txt 中

    SELECT * TOP 3 FROM 职工 TO FILE tmp ORDER BY 工资 DESC

    40、将“成绩”表中的“姓名”字段名改为“Name”,“语文”字段名改为“Chi”,“数学”字段名改为“Math”

    SELECT 姓名 AS Name, 语文 AS Chi, 数学 AS Math FROM 成绩

    41、计算“成绩”表中“语文”和“数学”的和,将其指定给“总分”,再查询所有学生的姓名和总分

    SELECT 姓名, 语文+数学 AS 总分 FROM 成绩 ORDER BY 语文+数学

    42、查询“成绩”表中语文成绩介于 60~100 之间的所有记录

    SELECT * FROM 成绩 WHERE 语文 BETWEEN 60 AND 100

    43、(1) 查询“成绩”表中姓名为“张三”、“李四”、“王五”的记录

    SELECT * FROM 成绩 WHERE 姓名 IN("张三","李四","王五")

       (2) 查询“成绩”表中姓名不为“张三”的记录

    SELECT * FROM 成绩 WHERE 姓名 NOT IN("张三")

       (3) 查询“新闻”表中“标题”以“通知”开头的记录

    SELECT * FROM 新闻 WHERE 标题 LIKE "通知%"

       (4) 查询“新闻”表中“标题”以“纪要”结尾的记录

    SELECT * FROM 新闻 WHERE 标题 LIKE "%纪要"

       (5) 查询“成绩”表中“姓名”中包含“小”的记录

    SELECT * FROM 成绩 WHERE 姓名 LIKE "%小%"

    插入数据

    SQL 的 INSERT 语句用于添加数据到指定的表,其语法如下:

    INSERT INTO 表名(字段名1,字段名2,…) VALUES(字段名1的值,字段名2的值,…)

    说明:在添加的记录时,数据表中的字段必须与添加的字段值相对应。

    1、在“订购单”表中插入一条完整的记录(即该记录各字段值都存在)

    INSERT INTO 订购单 VALUES("E7","S4","OR01",|2010-05-25|)

    注:语句中使用的标点符号均为英文半角符号,字符串必须加""。

    2、在“订购单”表中插入一条仅包含部分字段的记录

    INSERT INTO 订购单(职工号,订购单号) VALUES("E7","OR01")

    在“职工”表中添加编号为“006”、姓名为“李四”、工资为“1200”的记录

    INSERT INTO 职工(编号,姓名,工资) VALUES("006","李四",1200)

    如果“职工”表中的记录编号为自动编号,则上句也可写为

    INSERT INTO 职工(姓名,工资) VALUES("李四",1200)

    3、在“产品表”中添加编号为“B003”、产品名称为“彩电”、单价为“2700”、数量为“32”的记录

    INSERT INTO 产品表(编号,产品名称,单价,数量)VALUES("B003","彩电",2700,32)

    4、INSERT INTO…FROM ARRAY 的用法

    * 打开订购单

    USE 订购单

    * 将当前记录读取到数组 arr1

    SCATTER to arr1

    * 复制订购单表的结构到 ord2

    COPY STRUCTUER TO ord2

    * 从数组 arr1 插入一条记录到 ord2

    INSERT INTO ord2 FROM ARRAY arr1

    * 切换到 ord2 的工作区

    SELECT ord2

    * 用 BROWSE 命令验证插入的结果

    BROWSE

    * 关闭并删除 ord2.dbf 文件

    USE

    DELETE FILE ord2.dbf

    5、INSERT INTO…FROM MEMVAR 的用法

    * 打开订购单

    USE 订购单

    * 将当前记录读到内存变量(变量名与字段名同名)

    SCATTER MEMVAR

    * 复制订购单表的结构到 ord2

    COPY STRCTURE TO ord2

    * 从内存变量插入一条记录到 ord2

    INSERT INTO ord2 FROM MEMVAR

    * 切换到 ord2 的工作区

    SELECT ord2

    * 用 BROWSE 命令验证插入的结果

    BROWSE

    * 关闭并删除 ord2.dbf 文件

    USE

    DELETE FILE ord2.dbf

    更新数据

    SQL 的 UPDATE 语句用于修改指定表中的指定数据,其语法如下:

    UPDATE 表名

    SET 字段1=字段1的值,字段2=字段2的值,…

    WHERE 条件表达式

    1、将仓库 CK1 的职工工资提高 10% 。

    UPDATE 职工 SET 工资 = 工资 * 1.10;

      WHERE 仓库号="CK1"

    2、修改“产品表”中产品编号为“A013”的产品信息

    UPDATE 产品表 SET 产品名称="洗衣机",单价=1750,数量=27 WHERE 产品编号="A013"

    3、将“职工”表中编号为“004”的职工姓名修改为“王五”、工资修改为“2300”

    UPDATE 职工

    SET 姓名="王五", 工资=2300

    WHERE 编号="004"

    删除数据

    SQL 的 DELETE 语句用于删除指定表中的指定数据,其语法如下:

    DELETE FROM 表名

    [WHERE 条件表达式]

    1、删除“产品表”中产品编号为“A013”的产品信息

    DELETE FROM 产品表 WHERE 产品编号="A013"

    2、删除“职工”表中编号为“006”的职工信息

    DELETE FROM 职工 WHERE 编号="006"

     
     

    CopyRight © 2012. tutujx.com 版权所有.

    未经许可,请勿复制或建立镜像,否则将依法追究相关责任. 浏览本网站信息建议将屏幕分辨率设置在1024*768及以上.

    蜀ICP备12008711号    网站设计制作:tutu824@126.com

    川公网安备 51010602000399号