20151020sql2

SQL对数据增删改

1、增加

添加所有的字段 ID自动生成

insert into StuInfor Values('ruanmou1','20','中国','男','一班','1999-1-1','222222')

按照特定的字段 ,其它没有的字段以NULL代替

insert into StuInfor (StuName,Age,Sex,QQ) Values('ruanmou2','20','男','33333')

2、修改

update StuInfor set StuName='小张',Age=28 where StuId=12

3、删除

delete StuInfor where StuId=12

做删除修改的时候要先备份

SQL分页

分页语句

查记录数行号 不是通过ID

获取行号

select StuId,row_number() over(order by StuId) as row from StuInfor

分页

select * from (select StuId,row_number() over(order by StuId) as row from StuInfor) where row between 1 and 5

SQL修改表字段

alter table Category

add

Age int null

3、删除表

drop table Users

SQL年月日处理

获取日期中的年份

select year(Birthday) from StuInfor

月份

select month(Birthday) from StuInfor

select daty(Birthday) from StuInfor

获取当前年份 可以参与计算

year(getdate())

当前月份

moth(getdate())

当前日期

day(getdate())

日期计算

dateadd加

select dateadd(yy,100,getdate());

select dateadd(mm,100,getdate());

select dateadd(dd,100,getdate());

datadiff间隔

select datediff(yy,getdate(),'2108/12/31')

select datediff(mm,getdate(),'2016/01/01')

select datediff(dd,getdate(),'2016/01/01')

SQL isnull

判断为NULL是给定一个默认值

select StuName,Age,Sex,ISNULL(country,'') from StuInfor

 SQL case

判断

select StuName, case

when(EnglishScore < 50) then '差'

when(EnglishScore between 50 and 70) then '普通'

when(EnglishScore between 70 and 100) then '优秀'

end as A

from Score

表-字段约束

CHCK约束(保持数据的完整性)

年龄不能大于200岁

字段-约束-添加-表达式:Age>0 and Age<=100

表-字段索引

聚集索引:拼音查字法  比如有顺序的 ID 年龄 时间

只有一个,默认的聚集索引 是主键 不需要重新创建

非聚集索引:偏旁查字法 国家 (查询量不是特别大的时候不需要) 

 查询的比较多字段 例如产品的名称、分类

创建:字段-索引/键-添加-列-StuName

在表-可以查看 索引

索引会产生碎片文件,要定期的整理碎片-重新组织-重新生成

访问量大的时候,一个星期需要定期整理。

表-视图

作用:联合查询

表-视图-选择三个表数据-找到其中的ID

当作表来用。

select * from View_1

缺点:表里的数据如果做了修改,会造成数据不同步,还需要进行创建一次

表-存储过程

作用:1、安全性高,sql注入

select * from StuInfor where StuName='' and Country=''

如果传值 张三'--delete StuInfor 会把表删除了 SQL语句--表示注释

select * from StuInfor where StuName='张三'--delete StuInfor ' and Country=''

通过@传参的方式

创建存储过程

create proc procStuInfor

(

@StuName nvarchar(50),

@Country nvarchar(50)

)

as

select * from StuInfor where StuName=@StuName and Country=@Country

可编程性 -存储过程

执行存储过程

exec procStuInfor ‘张三’,'中国'

不能在SQL界面传sql注入的参数否则也会删除

2、C#写sql语句是需要编译,写在存储过程是不需要编译,效率高一些。

查询比较多,逻辑比较复杂的SQL语句存储在存储过程中。

表--储发器

在执行sql语句的时候,同时也能执行另外一条语句

删除的时候,查询删除的语句

创建

Create trigger trigStuInforDelete

ON StuInfor

after delete /*有三种insert delete update*/

AS

begin

  select * from deleted/*查询删除的语句*/

end

数据库备份

1、任务-备份-选项-覆盖(一个) 追加(两个)-确定 bak文件

2、mdf文件 log文件 删除文件就没有了 所以应该-任务-分离

数据库还原

1、bak文件还原 创建同名的数据库-任务-还原-设备-文件-覆盖-确定

2、mdf文件还原 数据库-附加-mdf文件-确定

sqlserver高版本属性-选项-兼容级别-sqlserver2005

 数据导入/导出

MYDB-导出到TESTDB

导出-任务-导出- MYDB-TestDB-表-完成

StuInfor表的主键会消失,所以要重新添加

数据库自动备份 -作业

自动备份

新建作业-backupDB-确定

步骤-新建step1 -MYDB-命令

backup database mydb

to disk='c: est.bak'

确定-计划-添加计划-每周一 时间0:00:00

确定

自动删除

删除某个条件

SQLServer Profiler 检控网站卡的时候sql语句的执行情况

MSSQL -SQLSERVER

原文地址:https://www.cnblogs.com/16lily521/p/4925548.html