sqderverl学习笔记

1 数据库分离与附加

2 创建表语法

   create table 表名称 (列名1 数据类型  identity(1,3) ,

                                    列名2  数据类型 not null)

 identity 参数为自增编号字段,例如:identity(1,3)意思是编号起始位置为1,每次自增3

3 修改表结构:

 a.添加新列

 alter table 表名称 add 列名称 varchar(20) not null

 b.修改列属性

 alter tbale 表名称  alter column 列名称 varchar(60) 【将列名称字段属性修改为varchar(60)】

 c.删除列

alter table 表名称 drop column 列名称【将列名称字段删除】

d.对表重命名

sp_rename '旧表名','新表名'

e.更改列名称

sp.rename '表名.旧列名称','表名.新列名称'

4 表的操作

 a. insert 插入语法/

insert into 表名称/视图名称  列名 values 。。。。

b. update 语法 

update 表名/视图 set  列名=表达式  where 条件  

c.删除数据

delete from 表名 where 条件

5.约束

a.主键约束:alter table 表名称  add constraint  约束名称  primary key 约束列【增加约束】

                alter table 表名称 drop 约束名称 【删除约束】

b.unique约束: alter table 表名称 add constraint 约束名称 unique 约束列【增加约束】

                  alter table 表名称 drop 约束名称 【删除约束】

c.check 约束: alter table 表名称 add  constraint 约束名称 check (表达式【例如:a>=0 and a<10】)【增加约束】

                   alter table 表名称 drop 约束名称 【删除约束】

d.外键约束:alter table 父表名称 add constraint 约束名称 foreign key (父表列名称)  references 子表名称  (子表列名称)【增加约束】      alter table 表名称 drop 约束名称 【删除约束】

6.select 语法

a. 查询全部列:select * from 表名

b.查询指定列 : select 列名1,列名2 from 表名

c.查询计算列 :select 姓名,year(getdate()-year(出生日期)) 年龄 from 学生表  【查询学生年龄】

上面语句也可以使用: select 姓名, 年龄=year(getdate())-year(出生日期) from   学生表  

d.消除重复行 :select disticnt  列名 from 表名

e. 显示前N行: select  top N * 

7.oder by 语法

select * from 表名称   where 条件 order by 列名称

8.group by 语法

常用的于聚合函数【avg, count ,sum,max,min, stdev(标准偏差),stdevp(总体标准偏差),var(指定表达式方差),varp(指定表达式总体方差)】

9.having 语法

having 通常用于group by 后 对分组结果进行进一步过滤,having语句后可以使用聚合函数,where后不能使用聚合函数

例如:select a,count(*) from 表名称 group by a  having count(*)>2

10.compute by

compute by 子句是对结果集内生成控制中断和小计,使用compute by 子句必须与在order by 后列出的子句相同或是其子集,并且必须按相同的序列,比如:如果order by 子句是 order by  a,b,c 则compute by 子句必须是下面任意一个:compute by a,b,c 或者 computer by a,b 或者 compute by a 

11.连接查询:

内连接:inner join/join【两张表共同所有】

左连接: left join 【以左表为主表进行连接】

右连接:right join 【以右表为主表进行连接】

交叉连接:cross jpin 【连接结果产生笛卡儿积】

自连接:select * from  表名称1  as A1 ,表名称1 as A2 where A1.列名称1<>A2.列名称1 and  A1.列名称2=A2.列名称2

12.子查询

IN 和 exists 

如果in表查询的内容比较多时建议使用exists,in表查询内容小与外部查询内容时使用In比较合适,数据量不大时建议使用In

13.记录操作语句中的子查询

a.  INSERT  INTO   表名称1  Select  列名 from  表名称2 【将从表名2称查询的结果直接插入到表名称1中】

b. select  列名称 into 目标表 from 源表 【目标表无需新建,会自动生成】

14. 视图:定义视图不可以包含order by /compute或者compute by 子句或者INTO关键字

15 索引:索引是针对一个表,以表列为基础建立的数据库对象

    优点:大大加快书检索速度  创建唯一索引保证数据记录唯一性  在使用order by 和group by 子句进行检索数据时 可以减少查询中分组和排序时间 时间索引可以在检索数据过程中使用优化隐藏器,提高系统性能  可以加速表与表之间的连接,在实现数据参照完整性有特别意义。

  不足:创建花费时间和占用存储空间  虽加快数据检索速度但是减慢了数据修速度

创建原则: 主键  连接中频繁使用的列(比如:外键)  查找中用来接表的字段建立索引 经常用来排序的字段

不适应创建索的列: 很少或者从来不查询的列  只有两个或者很少几个值得列   数据量小的表一般也没有必要创建索引





  




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值