--[1]创建一个登录名pbMaster密码USEmasterGO--创建登录名CREATELOGINpbMasterWITHPASSWORD='123456'GO--[2]创建数据库用户USEE_MarketGO--MasterDBUser是数据库用户名,pbMaster是登录名CREATEUSERMasterDBUserFORLOGINpbMasterGO--[3]赋予用户操作权限USEE_MarketGO--为表UserInfo赋予查看,新增,修改的操作权限MasterDBUser数据库用户GRANTSELECT,INSERT,UPDATEONUserInfoTOMasterDBUserGO--[4]收回新增的操作权限USEE_MarketGOREVOKEINSERTONUserInfoTOMasterDBUserGO--使用sql语句来查看数据的状态,这里shuhan是数据库SELECTstate_descFROMsys.databasesWHEREname='shuhan'--数据类型char和varchar:汉字点两个字节,英文、数字或字符占一个字节性别:男女char(2)或者是varchar(2)nchar和nvarchar:无论是汉字还是英文,数字或字符都占一个性别:男女nchar(1)或者nvarchar(1)固定长度与非固定长度:身份证号:18位长度固定,char(18)或nchar(18)住址:varchar(255)或nvarchar(255)如果住址中存在汉字、数字,nvarchar(255),小说或新闻:text,或ntext--新建数据库createdatabase数据库名createdatabaseshuhanONPRIMARY--主文件组(NAME='E_Market_data',--逻辑文件名--物理文件名FILENAME='H:\project\E_Market_data.mdf',SIZE=5MB,--初始大小MAXSIZE=100MB,--最大容量FILEGROWTH=15%--增长率),FILEGROUPFG--创建了一个次文件组(日志)(NAME='E_Market2_data',FILENAME='H:\project\E_Market2_data.ndf',SIZE=4MB,FILEGROWTH=10%)LOGON--日志文件(NAME='E_Market_log',FILENAME='H:\project\E_Market_log.ldf',SIZE=5MB,FILEGROWTH=0--未启用自动增长),(NAME='E_Market2_log',FILENAME='H:\project\E_Market2_log.ldf',SIZE=3MB,FILEGROWTH=10%,MAXSIZE=100MB)--建人物表的同时建字段createtablerenwu--createtable表名(bianhaoint,--编号xingmingnvarchar(5),--姓名xingbienchar(1),--性别zhiwunvarchar(50),--职务nianlingint,--年龄--numeric(),6表示一共占个字符,表示小数位占位gongzinumeric(6,2),--工资buzhunumeric(5,1)--补助)--添加记录--insertinto表名values(添加数据)insertintorenwuvalues(1,'刘备','男','主公',40,9999,1000)insertintorenwuvalues(2,'甘夫人','女','夫人',28,8000,500)insertintorenwuvalues(3,'诸葛亮','男','军师',38,9500,650)insertintorenwuvalues(4,'关羽','男','将军',36,7000,700)insertintorenwuvalues(5,'张飞','男','将军',37,6500,400)insertintorenwuvalues(6,'赵子龙','男','将军',30,6500,600)--删除全部记录deletefromrenwu--按条件删除记录deletefrom表名where按什么条件--(含条件)删除deletefromrenwuwherebianhao=2--将已删除的数据从新添加insertintorenwu(bianhao,xingming,xingbie,zhiwu,nianling,gongzi)values(2,'甘夫人','女','夫人',28,8000)--删除表droptable表名droptablerenwu--检测要删除的表是否存在USEshuhanGOSELECT*FROMrenwu--如果存在就将其表删除,否则不执行删除语句IFEXISTS(SELECT*FROMsysobjectsWHEREname='gsyg')DROPTABLEgsygGO--CHARINDEX:在一个字符串中查找另一个字符串,如果找到返回找到的位置,如果没有找到返回--两个参数,不指定开始位置,默认从开始SELECTCHARINDEX('zxw',')--三个参数,第一个是查找的,第二个是源字符串,第三个是开始查找的位置SELECTCHARINDEX('zxw',')--将函数放在查询语句中进行使用--查询“何双呈”的邮箱中@符号的位置SELECTCHARINDEX('@',Email)FROMUserInfoWHEREUserName='何双呈'SELECT*FROMUserInfoWHEREUserName='何双呈'--使用CHARINDEX的目的是想把邮箱中的用户名提取出来--LEN:求子符串的长度SELECTLEN(Email)FROMUserInfoWHEREUserName='何双呈'--LEFT从字符串的左边截取指定个数的字符SELECTLEFT(Email,CHARINDEX('@',Email)-1)FROMUserInfoWHEREUserName='何双呈'--REPLACE替换一个字符串的字符SELECTREPLACE('我最喜欢的颜色是白色','白色','绿色')SELECTREPLACE('我最喜欢的颜色是白色','白色','')--如果最后一个参数是空的话,相当于将第二个参数删除--STUFF--参数,源字符串,参数,开始位置,参数,删除的长度,参数是插入的新字符串SELECTSTUFF('ABCDEF',2,3,'我要自学网')--查询表select*from表名select*fromrenwu--查询表中相应字段的数据--select要查询的数据(多个数据用逗号隔开)from表名selectbianhao,gongzifromrenwu--按条件查询--select要查询的数据(多个数据用逗号隔开)from表名where按什么条件selectbianhao,gongzifromrenwu--1、查询bianhao,xingming,gongzi并且查询工资大于的selectbianhao,xingming,gongzifromrenwuwheregongzi7000--查询不含有重复的记录selectdistinct要查询的数据form表名--distinct表示去除掉重复的selectdistinct要查询的数据form表名selectdistinctbianhaoformrenwu--更改字段的别名selectbianhao编号,gongzi工资fromrenwu--或者selectbianhaoas'编号',gongzias'工资'fromrenwu--显示每个员工的年薪并且把字段以中文的方式显示selectxingming姓名,gongzi*12年工资fromrenwu--计算年总收入(含补助),和空值做四则运算--isnull(buzhu,0)判断是否为空,如果不为空执行逗号前面的,如果为空执行逗号后面的selectxingming'姓名',gongzi*12+isnull(buzhu,0)*12'年总收入'fromrenwu--查询工资在到之间的员工selectxingming'姓名',gongzi'工资'fromrenwuwheregongzi13000andgongzi=18000--查询性李的员工,查询第二个字是俊的员工selectxingmingfromrenwuwherexingminglike'李%'selectxingmingfromrenwuwherexingminglike'_俊%'--批量查询selectxingming,bianhaofromrenwuwherebianhaoin(1,2,3,4,5,6)--查询一把手,也就是头头selectxingming,zhiwufromrenwuwherebianhaoisnull--排序(orderby)默认升序desc降序中文排序按照拼音顺序和音调selectxingming,gongzifromrenwuorderbygongzidesc--降序selectxingming,gongzifromrenwuorderbygongzi--升序--按部门编号升序,按工资降序selectxingming,bianhao,gongzifromrenwuorderbybianhao,gongzidesc--用起临时名的方法算总收入并降序排序selectxingming,gongzi*12+isnull(buzhu,0)*12nianxinfromrenwuorderbynianxindesc--显示最高工资和最低工资selectmax(gongzi)fromrenwuselectmin(gongzi)fromrenwu--即显示姓名又显示最高工资selectxingming,gongzifromrenwuwheregongzi=(selectmax(gongzi)fromrenwu)--显示总工资和平均工资selectsum(gongzi)'总工资',AVG(gongzi)'平均工资'fromrenwuselectxingming,gongzi,(selectAVG(gongzi)fromrenwu)fromrenwuwheregongzi(selectAVG(gongzi)fromrenwu)--统计有多少记录selectcount(*)fromrenwu--统计每个部门的平均工资和总工资,groupby表示分类汇总的意思selectbianhao,AVG(gongzi),SUM(gongzi)fromrenwugroupbybianhao--按编号分类--显示每个部门每个职务的平均工资和最低工资selectbianhao,AVG(gongzi),MIN(gongzi),zhiwufromrenwugroupbybianhao,zhiwuorderbybianhao--显示平均工资低于的部门编号和平均工资.having表示二次筛选selectbianhao,AVG(gongzi)fromrenwugroupbybianhaohavingAVG(gongzi)9999--日期函数--【1】获得当前系统时间SELECTGETDATE()--【2】DATEADD()参数,指定的日期部分,参数,整数值,参数,有效的日期格式SELECTDATEADD(MM,1,GETDATE())--参数的整数是否允许为负数,允许SELECTDATEADD(MM,-1,GETDATE())--参数的整数值是否允许为小数,直接舍点小数部分取整SELECTDATEADD(MM,1.5,GETDATE())SELECTDATEADD(MM,1.6,GETDATE())SELECTDATEADD(MM,1.4,