C#SqlServer学习(六)

1.SqlHelper的封装

    ->参数化处理
    ->DRY原则
        ->ExcuteNonQuery()
        ->ExcuteScalar()
        ->ExcuteReader()
        ->ExcuteTable()
       SqlHelper + app.config 
    


2.Case的用法

    ->使用方法一:(类似C#中的Case的用法)
        ->语法:
            Case  表达式
                when 值1  then  返回值
                when 值1  then  返回值
                ....
            End
        
    ->使用方法二:(类似C#中的多个if else)
        ->语法
            Case 
                When 表达式 then 返回值
                When 表达式 then 返回值
                else 值
            end              

3.SQL控制语句

    ->定义变量:declare
        ->给变量赋值:
            ->set @参数名=值
            ->select @参数名=值
        
    ->打印 : Print
    ->IF ELSE
        ->语法格式:
        if(表达式) 
        begin 
            SQL语句
        end   
        else 
        begin 
            语句
        end        
    ->WHILE
        ->语法:
            While(表达式)
            begin
                SQL语句
            end

4.子查询

    ->把一个查询结果作为一个表来使用,就是子查询
    
    ->把一个查询结果作为 一个 表达式进行使用就是子查询。
    
    案例:        
        --查询顾客表中属于同一家公司超过两个顾客的公司名称        
        
        select CompanyName,count(*) as 个数  from SalesLT.Customer group by CompanyName having count(*)>2

        --查询顾客表中  相同公司人数最多的 顾客信息
        
                select * from SalesLT.Customer where CompanyName=(
            select top 1 CompanyName from SalesLT.Customer group by CompanyName order by count(*) desc
        )

        --查询 相同公司人数最多的顾客的订单信息
        select * from SalesLT.SalesOrderHeader where CustomerID
            in(
                select CustomerID from SalesLT.Customer where CompanyName=(
            select top 1 CompanyName from SalesLT.Customer group by CompanyName order by count(*) desc)
            )

        --查询山东省的所有的城市信息
        use 0413DB
        go

        select areaId from AreaFull where AreaPId =(select AreaId from AreaFull where AreaName=N'山东省')
        --查询山东省中所有县级市的
        select * from AreaFull where AreaPId in(
            select areaId from AreaFull where AreaPId =(select AreaId from AreaFull where AreaName=N'山东省')
        )

        --查询山东省中的所有的县
        select * from AreaFull where AreaPId in(
            select areaId from AreaFull where AreaPId =(select AreaId from AreaFull where AreaName=N'山东省')
        ) and AreaName like N'%县'

 

5.分页SQL语句

    ->Row_Number函数的分页使用
    ->双Order排序 分页法【越过多少条,取多少条数据】
    
    

6.表链接

    ->Inner Join
        ->查询员工出差的信息。
    ->Right Join
        ->查询所有员工的信息,如果有出差信息则显示出差信息。
    ->Left Join
    ->Full Join
        ->查询所有员工的信息和所有的出差信息,
    ->Cross Join
        ->查询所有员工和所有职位的组合情况


7.索引

    ->索引就是表的目录。 提高查询效率。
    ->创建索引        
        ->索引的分类
            ->聚簇索引:索引的存储顺序跟数据的存储顺序一致。
            ->非聚簇索引:索引指向聚簇索引或者是数据存储的磁盘位置。
        ->语法
            ->非聚集索引
                ->CREATE  INDEX  索引名  ON 表名(列名)
            ->创建唯一非聚集索引
                ->CREATE UNIQUE INDEX 索引名 ON 表名(列名)
            ->创建聚集索引
                ->CREATE TABLE t1 (a int, b int, c AS a/b); 
                CREATE UNIQUE CLUSTERED INDEX Idx1 ON t1(c); 
                INSERT INTO t1 VALUES (1, 0);
            
    ->使用索引的条件:
        ->经常查询的字段,经常进行数据筛选的列
    
    ->索引失效:
        ->where条件后面使用了 <> 、not in 、not exist、!= 、Or等
        ->对列使用了函数处理 类型转换函数 convert  cast
        ->隐式转换使索引失效:
            ->错误的例子:select * from test where tu_mdn=13333333333;
            ->正确的例子:select * from test where tu_mdn='13333333333';
        ->对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)
            ->错误的例子:select * from test where id-1=9;
            ->正确的例子:select * from test where id=10;
        ->like查询是以%开头
        ->在Where子句中使用IS NULL或者IS NOT NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挑战不可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值