Sql Sever语句 (续2)
日期时间
把日期类型的字段下默认值或绑定里的 设置成getdate() ,新建字段时候不设置会自动获取当前服务器时间
在当前时间加上xx年xx月xx天
select datedd(yy,100,getdate()) 在当前时间加上100年
select datedd(mm,5,getdate()) 在当前时间加上5个月
select datedd(dd,34,getdate()) 在当前时间加上34天
联合查询:将两个表的数据通过筛选出所用信息导出
select UI.UserId,UI.UserName,UI.QQ,UI.ReaName,SS.ScoreId,SS.Chinese --查询内容
from UserInfo UI left join StuScore SS on --两个表的名称 起个别名
UI.UseId=SS.UserId
left join 和right join 以左/右边的表为主 不够补齐
inner join 两边都有
三个以上表格思路:先将两个表格做联合查询,结果做成一个表 起个名字,在与第三个表格做联合查询
约束:
控制字段在一定范围值内,避免脏数据;
设计》某字段右键》添加约束》修改表达式 如年龄表达式 Age>=0 and Age<=120
修改后保存
添加;
方式一:
insert into parenet values (7,'dsffs','吊死扶伤') --添加字段 parenet表 字段按顺序加,主键不加 为空用空字段(但也必须加)
方式二:
insert into Parent (UserId,MMName) values (8,'dsaf') --如只加两个字段UserI和MMName 其他没加的为空;
修改:
更新:
update Parent set MMName='ddd',FatherName='fdgs' where ParentId=6
删除:
delete Parent where ParentId=6
把一个表的数据复制到另一个表:
insert into A(UserId,AMMName,AFName) select UseId, MMname,FatherName from Parent
索引:
聚集索引:如id,连贯的(一个表只有一个聚集索引 一般是主键 一般不更改)
非聚集索引:不连贯的,多个... ...
建立索引后可以加快查询速度,但是不一定全部建立,仅查询量达的字段,不然会产生大量索引碎片,需定期清理;
存储过程:
存储过程是写在数据库里面,好处:效率高、安全系数高(防止sql注入)
1)基本语法
Eg:
create proc procCategorySelect
(
@name varchar(200),
@age int
)
as
select * from Category where [name]=@name and age=@age
1) 查看结果exec procCategorySelect 'xudads',11
2) 更改/删除存储过程
ALTER proc
Drop proc
视图、
触发器、
数据库还原和备份
定时作业(备份)