zoukankan      html  css  js  c++  java
  • SQL:基本查询

    1.SELECT语句

       基本语法:

                    SELETE select_list FROM table_name

       select_list:选择一个列或多个列(多列时以逗号分隔)

       table_name:为查询的表名

    (1)使用计算列

    可以使用算式运算符(如:+、-、*、/等)使之成为计算列

    exp:

         SELECT title,

                     price*num

        FROM titles

    (2)定义列别名

    ①使用AS关键字

       SELECT name AS 姓名 FROM student 

    ②带双引号的列别名

       SELECT math "数学成绩" FROM stu_score

    ③带单引号的列别名

       SELECT math '数学成绩' FROM stu_score

    ④不带引号的列别名

        SELECT math 数学成绩 FROM stu_score

     

    2.定义批处理(begin...end语句)

     执行多个SQL语句,已完成特定的任务,这就需要将多个SQL语句视为一个整体来执行,即执行批处理

     基本语法:

                  GEGIN

                  {...代码...}

                  END

    该语句用于把多个SQL语句组合成为一个逻辑块

    使用情况:

         ①while循环内包含的语句块

         case()函数的元素包含的语句块

         if或else子句中包含的语句块

    exp:

    View Code
     1 USE db_sql2000
     2 GO
     3 --声明变量
     4 DECLARE @name varchar(200),@price money,@introduction varchar(200)
     5 SELECT @name=b_name,@price=b_price,@introduction=b_intro
     6 FROM dbo.Bookinfo2
     7 WHERE b_name='SQL深入编程' 
     8 --根究条件输出
     9 IF @price>20
    10 BEGIN
    11 PRINT '书名 :'+@name
    12 PRINT '内容介绍: '+@introduction
    13 END
    14 ELSE
    15 PRINT '此书价格小于20'
    16 GO

    3. 查询指定行数据(TOP语句) 

    使用TOP关键字查询前n条记录,使用GO命令结束批处理

    基本语法:

    SELECT TOP n [PERCENT]

    FROM table

    WHERE....

    ORDER BY ....

    说明:

    n  :  返回满足WHERE条件的前N条记录,N为整数

    percent : 为可选项,从结果集中返回百分之N的记录,而不是N行

    注意:如果缺少ORDER BY语句,TOP n 返回瞒住WHERE子句的前N条记录。如果满足条件的记录小于N,那么仅返回满足条件的记录。

            如果包含ORDER BY子句,TOP n 返回满足查询的前n行,当不删除重复组,这样可能输出大于n条的记录

    exp:

    View Code
    1 USE db_sql2000
    2 GO
    3 --返回价格大于20的前2条数据
    4 SELECT TOP 2 *
    5 FROM dbo.Bookinfo2
    6 WHERE b_price>20
    7 ORDER BY b_price DESC
    8 GO
    View Code
    1 USE db_sql2000
    2 GO
    3 SELECT TOP 1 *
    4 --返回价格大于30的前1条数据
    5 FROM (SELECT TOP 2 * FROM dbo.Bookinfo2 WHERE b_price>20) AS good2
    6 WHERE b_price>30
    7 ORDER BY b_price DESC
    8 GO

    4.去除结果集中的重复的行或列数据(DISTINCT语句)

     基本语法:

                  SELECT [DISTINCT|ALL] select_list 

    说明:

    未使用DISTINCT关键字,在查询结果中不会消除重复的记录。

    使用ALL关键字可以明确指示保留重复记录,此项为默认的行为

    注意:

    一个SELECT语句中只有一个DISTINCT

    exp:

    View Code
    1 USE db_sql2000
    2 GO
    3 SELECT DISTINCT ord_id AS 订单号,
    4        user_name AS 用户名,
    5        g_num AS 数量
    6        --g_lprice AS 单价
    7        --ord_date AS 订单时间                     
    8 FROM dbo.Order_new
    9 GO
    View Code
    1 USE db_sql2000
    2 GO
    3 SELECT COUNT(*) AS 客户数量           
    4 FROM (SELECT DISTINCT ord_id FROM dbo.Order_new) AS 订单
    5 GO

    5.计算数据在结果集中的行号(ROW_NUMBER()函数):SQL 2005版本或以上

    基本语法:

    ROW_NUMBER() OVER([<partition_by_clause>]<order_by_clause>)]

    说明:

    <partition_by_clause>:将FROM子句生成的结果集合添加到应用了ROW_NUMBER()函数的分区

    <order_by_clause>:确定应用了ROW_NUMBER()函数的分区中行的顺序。即指定分区内排序的字段和方式

    EXP:

    View Code
    1 USE db_sql2000
    2 GO
    3 SELECT ROW_NUMBER() OVER(ORDER BY ord_id DESC) AS 用户号码,
    4                     ord_id AS 用户订单
    5 FROM(SELECT DISTINCT ord_id From dbo.Order_new) AS 用户订单
    6 GO

    6.随机查询n行数据(NEWID()函数)

     NEWID()函数:

     用于创建uniqueidentifier类型的惟一值,该函数返回的类型是uniqueidentifier。uniqueidentifier数据类型用于存储16字节的二进制值,该值的使用与全局惟一标识符(GUID)一样。

    exp:

    View Code
    1 --使用NEWID()函数获得uniqueidentifier列的GUID值
    2 DECLARE @var uniqueidentifier
    3 SET @var=NEWID()
    4 PRINT '@VAR变量的值为: '+CONVERT(varchar(255),@var) 
    View Code
     1 USE db_sql2000
     2 GO 
     3 --创建一个表Sales2
     4 CREATE TABLE Sales3
     5 (
     6    sal_id uniqueidentifier NOT NULL DEFAULT NEWID(),
     7    book_code char(30) NOT NULL,
     8    book_price money NOT NULL,
     9    sal_num int NOT NULL default 1,
    10    sal_tot as book_price*sal_num
    11 )
    12 GO
    13 --向表中插入数据
    14 INSERT Sales3 SELECT NEWID(),'ABCD',29,12
    15 INSERT Sales3 SELECT NEWID(),'ABCE',19.5,10
    16 INSERT Sales3 SELECT NEWID(),'ABCF',11,9
    17 INSERT Sales3 SELECT NEWID(),'ABCG',32,15
    18 GO
    19 --随机返回2行数据
    20 SELECT TOP 2 *
    21 FROM Sales3
    22 ORDER BY NEWID()
    23 GO

    7.

     

     

     

  • 相关阅读:
    poj 1328 Radar Installation (贪心)
    hdu 2037 今年暑假不AC (贪心)
    poj 2965 The Pilots Brothers' refrigerator (dfs)
    poj 1753 Flip Game (dfs)
    hdu 2838 Cow Sorting (树状数组)
    hdu 1058 Humble Numbers (DP)
    hdu 1069 Monkey and Banana (DP)
    hdu 1087 Super Jumping! Jumping! Jumping! (DP)
    必须知道的.NET FrameWork
    使用记事本+CSC编译程序
  • 原文地址:https://www.cnblogs.com/KeenLeung/p/2696549.html
Copyright © 2011-2022 走看看