您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > sql server 经典 学习 总结
前言:最近看了看自己的这个简单的文章感觉不错,有机会一定将这个文档更新,分享给所有人们,祝大家学有所成。本人最近研究mysql,有机会和大家分享mysql笔记^_^文档书写时间:2009年Sqlserver基础1Transact-SQL语言SQL语言是一种介于关系代数与关系演算之间的语言其功能包括查询操纵定义和控制4个方面是一个通用的功能极强的关系数据库语言SQL语言的组成:�数据定义语言DDLDataDefinitionLanguagecreatetable创建一个数据库表droptable从数据库中删除表altertable修改数据库表结构createview创建一个视图dropview从数据库中删除视图createindex为数据库表创建一个索引dropindex从数据库中删除索引createprocedure创建一个存储过程dropprocedure从数据库中删除存储过程...�数据操纵语言DMLDataManipulationLanguageselect从数据库表中检索数据行和列insert向数据库表添加新数据行delete从数据库表中删除数据行update更新数据库表中的数据�数据控制语言DCLDataControlLanguagegrant授予用户访问权限deny拒绝用户访问revoke解除用户访问权限2条件表达式和逻辑运算符SQLServer提供的算术运算符运算符功能+完成两个数值型数据的相加操作/两个字符型数据的字符串串联操作-完成两个数值型数据的相减操作*完成两个数值型数据的相乘操作/完成两个数值型数据的相除操作%完成两个数值型数据的模运算SQLServer提供的逻辑运算符运算符功能AND二元运算,当参与运算的子表达式全部返回TRUE时,整个表达式的最终结果为TRUEOR二元运算,当参与运算的子表达式中有一个返回为TRUE时,整个表达式返回TRUENOT对参与运行的表达式结果取反IN如果操作数与表达式列表中的任何一项匹配,则返回TRUEBETWEEN如果操作数位于某一指定范围,则返回TRUEEXISTS如果表达式的执行结果不为空,则返回TRUEANY对OR操作符的扩展,将二元运算推广为多元运算ALL对AND运算符的扩展,将二元运算推广为多元运算SOME如果在一系列比较中,有某些子表达式的值为TRUE,那么整个表达式返回TRUELIKE如果操作数与一种模式相匹配,那么就为TRUE比较运算符运算符功能!=不等于,等同于!不小于,等同于=!不大于,等同于=注:通配符:'_'%[]3T-SQL基础操作:Insert:语法:insertintotable_name(col_name1...)values(value1...)通过insertselect语句将现有表中的数据添加到新表中例如:Insertintotongxulu(姓名,地址,电子邮件)SelectSName,SAddress,SEmailFromstudent通过selectinto语句将现有的表中的数据添加到新表中Selectstudent.SName,student.SAddressIntotongxueluFromstudent通过union关键字合并数据进行插入Union:用于将两个不同的数据或查询结果组合成新的结果集例如:Insertstudent(sname,sgread)Select'张三',1unionSelect'李四',2unionSelect'王五',3Update:语法:update表名set列名=更新值[where更新条件]Delete:语法:deletefrom表名[where删除条件]Truncatetable:语法:Truncatetable表名数据查询1使用select查询语法:select列名From表名[where条件查询][orderby排序的列名[desc或asc]]A查询数据和列B条件查询C使用别名D查询空行(isnull)E查询中使用常量F查询使用的行数(topnum)2查询排序:使用。。。。orderby。。。。3like进行模糊查询例如:select*fromstudentwheresnamelike'张%'4使用between在某个范围内查询例如:1select*fromSCorewherescorebetween60and802select*fromsaleswhereord_datenotbetween'1982-8-1'and'1993-8-1'5使用in查询例如:Selectsname,saddressfromstudentWheresaddressin('北京','上海','广州')Orderbysaddress6聚合函数(sum,avg,max,min,count(num或char))例如:selectsum(score)fromwherestunoisnotnull...7havingselect列名From表名[where条件查询][orderby排序的列名][Having条件]总结:1Where是对表里的原始数据进行的筛选,having是对分组使用聚合函数计算过的数据进行的筛选,having与group结合使用2聚合函数五个sum,avg,max,min,count(),其中count不包含null列8字符串处理类型函数名功能转换函数CHAR将ASCII码转换为字符ASCII将字符转为ASCII码LOWER/UPPER将字符转换为小写/大写子字符操作LEFT/RIGHT从字符串的左/右端开始取n个字符形成新的子串SUBSTRING获取子字符串CHARINDEX获取子串在字符串中的起始位置REPLACE以某一字符串替换另一字符串中的指定子字符串STUFF以某一字符串替换另一字符串中的指定子字符串,需指定子字符串的起始位置和长度其他SPACE以空格填充一个字符串LTRIM/RTRIM去除字符串左/右端的空格LEN获取字符串的长度9日期和时间函数名功能GETDATE获取当前的日期和时间YEAR/MONTH/DAY获取当前的年/月/日DATEADD(unit,n,date)在date的基础上添加n(天/小时/年)后的日期DATEDIFF(unit,date1,date2)以unit为单位计算日期1与日期2之间的差距DATEPART(part,date)返回指定日期的指定部分(如年/月/日)DATENAME(part,date)与DATEPART功能大致相同,只是以字符串形式表示10专用于时间函数的常见缩写表1.11常见缩写日期缩写Year(年)YyQuarter(季度)QqMonth(月)MmDayofYear(一年中的第几天)DyDay(一月的第几号)DdWeek(一年的第几周)WkWeekday(一周的星期几)DwHour(小时)HhMinute(分钟)MiSecond(秒)SS11表连接11.1内连接:经常用于两个表主外键关系例如:1selectstudents.sname,score.courseId,score.scoreFromstudents,scoreWherestudents.score=score.studentId2selects.sname,c.courseId,c.scoreFromstudentsassinnerjoinscoreascOn(s.score=c.studentId)11.2外连接:左外连接,右外连接左外连接(右外连接)例如:Selects.name,c.courseId,c.scoreFromstudentsassLeftouterjoinscoreascOns.score=c.studentId1.前面的是左表后面的是右表2.显示左表的全部数据,右表与之匹配的现实,不匹配的用null补全(1显示内连接的所有数据2左表没匹配的原样显示,右表部分用null补全)数据库的设计1设计问题:信息重复,更新异常,插入异常,删除异常2规范设计:三大范式第一范式:确保每列的原子性(每列都是不可再分的最小数据单元)第二范式:要求每个表只描述一件事情(如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式)第三范式:列于主键形成依赖关系(如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式)数据库的实现1创建数据库://IFEXISTS(SELECT*FROM?WHEREname='stuDB')DROPDATABASEstuDBCREATEDATABASEstuDBONPRIMARY(NAME='stuDB_data',--主数据文件的逻辑名FILENAME='D:\project\stuDB_data.mdf',--主数据文件的物理名SIZE=5mb,--主数据文件初始大小MAXSIZE=100mb,--主数据文件增长的最大值FILEGROWTH=15%--主数据文件的增长率)LOGON(/*----日志文件的具体描述,各参数含义同上--*/NAME='stuDB_log',FILENAME='D:\project\stuDB_log.ldf',SIZE=2mb,FILEGROWTH=1mb)GO2创建表//IFEXISTS(SELECT*FROM?WHEREname='stuDB')DROPTABLEstuInfoUSEstuDBGOCREATETABLEstuInfo(stuNameVARCHAR(20)NOTNULL,stuNoCHAR(6)NOTNULL,stuAgeINTNOTNULL,stuIDNUMERIC(18,0),stuSeatSMALLINTIDENTITY(1,1),stuAddressTEXT)GO3添加约束:----添加主键约束(stuNo作为主键)ALTERTABLEstuInfoADDCONSTRAINTPK_stuNoPRIMARYKEY(stuNo)---添加唯一约束(身份证号唯一,因为每人的身份证号全国唯一)ALTERTABLEstuInfoADDCONSTRAINTUQ_stuIDUNIQUE(stuID)---添加默认约束(如果地址不填,默认为“地址不详”)ALTERTABLEstuInfoADDCONSTRAINTDF_stuAddressDEFAULT('地址不详')FORstuAddress---添加检查check约束,要求年龄只能在15-40岁之间ALTERTABLEstuInfoADDCONSTRAINTCK_stuAgeCHECK(stuAgeBETWEEN15AND40)--添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)ALTERTABLEstuMarksADDCONSTRAINTFK_stuNoFOREIGNKEY(stuNo)REFERENCESstuInfo(stuNo)GO4添加帐户:/*--添加Windows登录帐户--*/EXECsp_grantlogin'jbtraining\s26301'--windos用户:jbtraining\s26301,jbtraining表示域/*--添加SQL登录帐户--*/EXECsp_addlogin'zhangsan','1234'--帐户:zhangsan密码:1234GO5添加用户:/*--在stuDB数据库中添加两个用户--*/USEstuDBGOEXECsp_grantdbaccess'jbtraining\S26301','S26301DBUser'--S26301DBUser为数据库用户名EXECsp_grantdbaccess'zhangsan','zhangsanDBUser'6分配权限:USEstuDBGO/*--为zhangsanDBUser分配对表stuInfo的select,insert,update权限--*/GRANTselect,insert,
本文标题:sql server 经典 学习 总结
链接地址:https://www.777doc.com/doc-3362185 .html