zoukankan      html  css  js  c++  java
  • sql 基础知识

    1 sql当中的group by 其实是已经distinct之后的查询了

    2 多行插入数据库

    insert into T_Login (userName,userPwd)

    values(1,1),values(2,2)

    3 插入一块数据

    insert into T_Login(userName,userPwd)

    select * From TableName

    4 创建临时表

    declare @Mytable Table

    {

      userName varchar(15)

    userPwd   varchar(16)

    }

    5 full join 返回所有的记录,没有的为null crose join 交叉链接,返回的是两个表中的笛卡儿积

    6 我想引用b数据库的C表 就是这样引用 b.dbo.C(dbo是拥有者,数据库所有者,所有的登陆名都可以用)

    7 exec sp_helpdb '数据库名' 返还的是数据库的数据与日志的信息和该数据库磁盘文件的信息

    8在已经存在表上创建逐渐约束 alter table TableName

    add constraint PK_Id

    primary key(id) //给id添加主键

    9 派生表 如果要查找预定套餐和预定会议室的会员id 我这样写的话,select T_Meeting.memId from T_Meeting as M inner join on T_OrderMeal as O 

    10 在数据库中进行数据的转换 可以使用cast 和convert 不同的是convert 支持日期的转换

     cast cast(memNum as varchar) 这样我就把memNum转换为string类型了

    11 megre 命令  可以将多个语句煮成一个 比如把insert update ,放一起

    SQL Server 2008 开始支持 MERGE语句 
     
    -- 源表
    CREATE TABLE test_from (id INT, val VARCHAR(20));
     
    -- 目标表
    CREATE TABLE test_to (id INT, val VARCHAR(20));
     
    -- 插入源表
    INSERT INTO test_from VALUES (1, 'A');
    INSERT INTO test_from VALUES (2, 'B');
     
    -- 合并 源表到目标表
    MERGE test_to USING test_from
    ON ( test_to.id = test_from.id )    -- 条件是 id 相同
    WHEN MATCHED THEN UPDATE SET test_to.val = test_from.val   -- 匹配的时候,更新
    WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
    WHEN NOT MATCHED BY SOURCE THEN DELETE-- 目标表有,源表没有,目标表该数据删除.
     
    -- 第一次检查 目标表数据.
    SELECT FROM test_to;
     
    id          val
    ----------- --------------------
              1 A
              2 B
     
     
    -- 更新源表
    UPDATE test_from SET val = 'A2' WHERE id = 1;
    -- 删除源表
    DELETE FROM test_from WHERE id = 2;
    -- 插入源表
    INSERT INTO test_from VALUES (3, 'C');
     
     
    -- 合并 源表到目标表
    MERGE test_to USING test_from
    ON ( test_to.id = test_from.id )    -- 条件是 id 相同
    WHEN MATCHED THEN UPDATE SET test_to.val = test_from.val   -- 匹配的时候,更新
    WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入
    WHEN NOT MATCHED BY SOURCE THEN DELETE-- 目标表有,源表没有,目标表该数据删除.
     
    -- 再次检查 目标表数据.
    SELECT FROM test_to;
     
    id          val
    ----------- --------------------
              1 A2
              3 C

     12   你对表所做的记录一般都保存任务表了 比如你插入数据库 可以查询inserted 表 等等要查询操作的记录就得用到output,实际上就相当于是select

    output $action

    inserted

    13 处理数据的时候,能提前过滤掉的,就提前过滤

    14 exist 比 in 的效率高 可以考虑用exist

    一般来说,exists的效率依赖于匹配度,它对主表的每行记录会对子表进行扫描,若匹配则返回。举个极端情况,如果子表每次都要进行全表扫描才能找到匹配,这时exists的效率就比较低。
    而用inner join 则效率比较稳定,若对子表匹配度不了解的情况下建议用inner join。
    如果连接字段不是主键/外键形式的,还注意索引的建立

  • 相关阅读:
    SQL学习
    FOR XML PATH
    IOS学习网址
    weak nonatomic strong等介绍(ios)
    UVALive3045 POJ2000 ZOJ2345 Gold Coins
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA713 UVALive5539 POJ1504 ZOJ2001 Adding Reversed Numbers
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA439 POJ2243 HDU1372 ZOJ1091 Knight Moves【BFS】
    UVA10905 Children's Game
  • 原文地址:https://www.cnblogs.com/http-www/p/3475820.html
Copyright © 2011-2022 走看看