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.

     

     

     

  • 相关阅读:
    oracle日志总结
    UIScrollView,contentOffset,contentInsert的各自特点和区别?
    js动态增加表格
    判断某个对象是不是DOM对象
    IOS 中frame与bounds的区别
    删除重复项,只取其中一条数据
    NSBundle
    React
    HTML5 postMessage 和 onmessage API 详解
    SonarQube
  • 原文地址:https://www.cnblogs.com/KeenLeung/p/2696549.html
Copyright © 2011-2022 走看看