SQL数据库基本操作

1.数据库的基本操作:

1)备份还原:备份后的文件后缀为.bak  2)  还原时,当前的management中不能有同名的数据库 3)数据文件和日志文件必须在一起

4).标识列必须为int类型,并且标识列一般作为主键

5).不提倡两列以上的复合主键

6).建库—>建表—>建约束—>建数据

7).数字类型的可以不加' ',其余的都加' ' (字符,日期)

8)一个表可以定义多check约束,但是一个字段只能定义一个约束

9)主键

a.很难保证业务主键不会重复(如身份证)

b.逻辑主键(流水号) 完全是给程序看的

10)一个服务器上可以装多个SQL server实例


2.表的增删改查

1)delete时是整行删除

2)truncated比delete删除整个表的速度快

3)update 客户信息 set  email=’....‘    where  客户编号=..   //update一般是对table中数据进行更新

   alter   table 客户信息  //alter一般是对表的结构进行更改

4) delete from t-person //只是清空

    drop Table //连表本身都销毁了

5)select destinct fdepartment  from t-employee  //destinct消除重复(多个检索字段时,消除完全重复的行)


3.函数

1)time,datename,datepart基本相同

2)SQL中 '  (单引号)的表示, ‘ ’ ‘ ’--->用四个单引号

3)int可以隐式的转换为nchar

4)不能隐式转换的,就要强制转换

5)select convert (varchar(30),getdate(),102)  //102是style类型

6)全角状态下的输入时,任何字符(包括标点符号)都占有与中文字符一样长的字节(2个字节)

7)select  round(1485.55,-3,2)  // 先用2截断,再用-3舍入

8) nvarchar(非ascii码) //例如中文...

    varchar(纯英文名)


4.查询

1)select 查询的结果是放在内存中的,先筛选行,在筛选列

2)判断空字符串方法: a. 使用=' '  b. len(X)=0

   判断null的时候,不能使用 =,  要使用 is not null 或者 not....is  null

3)len函数不管是否为半角输入都标记为一个字符长度,datalengt函数如果为半角输入的算一个长度,如果为全角为2个长度


5.模糊查询

1)%等同于*

2)精确查询的效率高于模糊查询

3)like和通配符要同时出现

4)exists(....) 返回行,如果一条记录都没有则为true,否则为false

一般写在if后面

5)count( )--->中写什么列名都行,甚至可以些微count(*)来计算,

6)select.....where(a.先对这个表的行进行筛选,并放在内存中).......group by(b.然后再进行分组)

7) select...(d.最后根据select 的列名还有计算列得到最终的虚拟表)...where(a.先对这个表进行筛选)...group by(b.然后进行分组)....having(c.然后根据having的expressing进行过滤组)

8)能写在where中的不要写在having中,having中要放入聚合函数和列表达式才合理

9)内联:两张表的地位相等    外联:right   left

10)交叉联:相当于排列组合的所有情况,A表航速*B表行数

11)Union查询:不是列上的扩张,而是行的扩展 (不同于inner)

12) select   name, country  where  group by name,country  (如果想在group by后面显示该列,则无论是否country能否合并,都要加载group by 的后面,才能显示该列)

13)where ...;group by ...order by 是在group by的分组完成后执行的,所以order by应该是一个表合并后的列

14)union不支持order by ,所以要对结果进行封装

15)计算列没有列名

16)select   *  from   orderA, orderB  where   

a. from 先一行行将orderA和orderB的行联接     b.在where之前先乱联orderA和orderB,然后再使用where进行过滤

17)select  *   form  orderA   inner  join orderB ...on  order...=order..

a.inner  join  在乱联时就进悉尼港过滤,这样执行效率高


6.子查询 

1)表联接:不能拿唯一列作为group by 的合并列

2)子查询可以代替:变量,结果集,值列表

3)子查询能及早过滤(where),就可以提高程序的效率

4)子查询适合最终结果来自于单表的查询

5)先用子查询,再用表连接,这样效率高

6) select ...from.....where...

select是所有操作的最后执行的,首先执行from后面的语句


7.视图

7)视图:相当于对不同权限的用户对数据库中的表进行映射(不是表的本身)

8)可以让用户只看到表的映射(视图),而不用将原表进行copy

9)视图等同于表

10)视图看到用户想看的,阻止不能看的


8.索引

1)索引index =目录 (方便查询,加快查询的速度)

2)非聚集索唯一索引-->也比无索引的快

3)一般情况只用主键索引

4)用图形化的建立就可


9.事物

5)四大特性,三个关键字

6)

begin  transaction

begin  

   commit  //成功放入数据库

end

   rollback  //否则回滚到transaction处

7)四大特性 ACID

8)双表做关联 inner   join,最常见的情况是主外键,其次是同一个键的两个外键,其次常见的是引用关系


20.存储过程

1)存储过程相当用户C#中的方法,包容一切

2)事物可以放入存储过程中

3)存储过程类似于视图

4)过程可以相互调用

5)动态SQL相当于表达式




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值