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 子句进行检索数据时 可以减少查询中分组和排序时间 时间索引可以在检索数据过程中使用优化隐藏器,提高系统性能 可以加速表与表之间的连接,在实现数据参照完整性有特别意义。
不足:创建花费时间和占用存储空间 虽加快数据检索速度但是减慢了数据修速度
创建原则: 主键 连接中频繁使用的列(比如:外键) 查找中用来接表的字段建立索引 经常用来排序的字段
不适应创建索的列: 很少或者从来不查询的列 只有两个或者很少几个值得列 数据量小的表一般也没有必要创建索引