资源描述
sql知识点归纳总结sql知识点归纳总结ICase的使用Case具有两种格式,简单Case函数和Case搜索函数1)Casesexwhen lthen 男When2then 女Else 其他end2)Casewhensex二 lt hen 男Whensex二 2 then 女Else 其他end注:1)只返回第一个符合条件的值,剩下的Case部分将会被自动忽略2union/unionall 的使用1)select*fromtable1unionallselect*fromtable22)select*fromtable1unionselect*fromtable2注:1)不合并重复的行,2)会合并重复的行3数据表的连接1)、内连接(自然连接):只有两个表相匹配的行才能在结果集中出现2)、外连接:包括(1)左外连接(左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制)3)、自连接(连接发生在一张基表内)selecta.studentno,a.studentname,b.classnamefromstudentsa,class esbwherea.classid(+)二b.classid;STUDENTNOSTUDENTNAMCLASSNAME1周虎一年级一班2周林 一年级二班一年级三班以上语句是右连接:即(+)所在位置的另一侧为连接的方向,右连接说明等号右侧的所有 记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无论会不 会出现某个班级没有一个学生的情况,这个班级的名字都会在查询结构中出 现。反之:selecta.studentno,a.studentname,b.classnamefromstudentsa,class esbwherea.classid二b.classid(+);STUDENTNOSTUDENTNAMCLASSNAME1周虎一年级一班2周林 一年级二班3钟林达则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门 号,这个学生的记录都会被显示。selecta.studentno,a.studentname,b.classnamefromstudentsa,class esbwherea.classid二b.classid;这个则是通常用到的内连接,显示两表都符合条件的记录总之,左连接显示左边全部的和右边与左边相同的右连接显示右边全部的和左 边与右边相同的内连接是只显示满足条件的!4Dis tine t(去重)5 组函数:如 sum(),avg(),count()1数据类型数字:number(n)数字number(n,m)浮点字符串:char(n)定 长,方便查询,varchar(n)变长,节省空间,varchar2(n)oracle自定义变长 日期:date创建表crea tet able表名(列名列类型,)插入数据inser tin to表 名values(列值,)注:数据库中字符用单引号表示,数字不用Commit;查询select*from表名删除表droptabledept_xxx查询“|”符号表示 两个数据串接起来Distinct只能跟在select后边如: selectdistinetjobfromemp_xxxWhere 条件查询注:sql 语句大小写不敏 感,但数据大小写敏感女口: select*fromemp_xxxwherejob二Analyst 如果数据上 analyst 就 查不出来Be tween低值and髙值In(列表)女口:select*fromemp_xxxwherejob二Managerorjob二AnalystSelec t*fromemp_xxxwherejobin(Manager,Analys t)模糊匹配 like% ”表示0至多个字符,跟like配合使用“_”下划线表示一个字符女口: select*fromemp_xxxwherejoblikesale_查询哪些员工没有奖 金 Select*fromemp_ningwherebonusisnull;注:这里用的是 is 而不是二否定形式:isnotnull,notbetweenand.,notinCommit提交数据,rollback数据回滚数字函数Round(数字,小数点后 的位数)用于数字的四舍五入Trunc(数字,小数点后的位数)用于截取注:如果没有延续二个参数,默认是0转换函数To_date()将字符串数据按指定 格式,转换为日期数据To_char()将日期数据按指定格式转换为字符串数据 To_char(日期数据,格式):把日期数据转换为字符数据Selectto_char(sysdate,yyyymmddhh24:mi:ss)fromdual;日期格式:To_date按指定时间格式插入数据Insertintoemp_xxx(empno,ename,hiredate)values(1012,any,to_date (202*T0T0,yyyy-mm-dd)Case语句,decode函数函数的嵌套:f3(f2(f1(p1,p2),p3),p4)查询结果排序orderby*desc,asc注:排序可以用列名,列别名,表 达式,函数,甚至可以用数字,表示按第几列排序组函数 Count(*),avg(),sum(),max(),min();注:组函数:count/avg/sum/max/min如果函数中写列名,默认忽略空值Avg/sum针对数 字的操作Max/min对所有数据类型都可以操作分组查询groupby*Groupby列名:表示按指定列分组查询例:每个部 门的薪水总和和平均薪水Selectdeptno,sum(salary)sum_s,avg(nvl(salary,0)avg_sfromemp_xxxGr oupbydeptno;Having子名用于对分组后的数据进行过滤注:区别where是对表中数据的过滤,having是对分组得到的结果数 据进一步过滤如:平均薪水大于5000无的部门数据,没有部门的不算在内Selectdeptno,avg(nvl(salary,0)avg_sfromemp_xxxwheredetnoisnot nullgroupbydeptnohavingavg(nvl(salary,0)5000子查询查询最髙薪水的是谁Selectenamefromemp_xxxwheresalary=(selectmax(salary)fromemp_xxx)总结:查询语句的基本格式:Select字段1,字段2,字段3,表达 式,函数,。From表名Where条件Groupby列名Having带组函数的条 件Orderby 列名组 函数:count/avg/sum/max/min 单行函数Trim,replace,lengthTo_number子查询:单行比较运算符=6000表关联,主键(primarykey,pk)主键要求不重复,不能是空值外键 (Foreignkeyfk)外键参照主键的数据3内连接,匹配表,驱动表Rownum关键字是Oracle数据库提供的,代表秸民更新数据Update表名set列名二新列值,列名二新的列值注:更新(update)数据表时,注意条件,如果不加条件,修改的是全 部表记录删除数据Deletefrom表名where条件Drop删除表(删除结构和全部的表数据)Drop table表名操作将删除数 据存储到临时空间中,不直接删除,可以回退Truncate保留表结构,删除表中所有数据Truncatetable表名;在功能上等同于Delete+commit,直接删除,不占 用临时空间,不能回退扩展阅读:SQL SERVER重要知识点归纳1, 数据模型:由数据结构、数据操作和数据的完整性约束组成。2, 在E-R概念模型中,信息由实体型、实体属性和实体间联系3种概 念单元来表示。3, 第一范式(1NF):设R是一个关系模式,如果R中的每个属性都是 不可分解的,则称R是第一范式;第二范式(2NF):如果关系模式R是第 一范式,且每个非码属性都完全依赖于码属性,则称R是第二范式;第三范 式(3NF):如果关系模式是R第二范式,且没有一个非码属性传递依赖于 码,则称R是第三范式。4, Transact-SQL语句的分类如下所示:1变量声明Transact-SQL语言可以使用两类变量,局部变量和全局变 量。O2数据定义语言(DataDefinitionLanguage,DDL),用来建立数据库及数 据库对象,绝大部分O以 Create 开头,如 CreateTable 等3数据控制语言(DataControlLanguage,DCL),用来控制数据库组件的 存取访问、权限等命O令,如 GRANT、 REVOKE 等4数据操纵语言(DataManipulationLanguage, DML),用来操纵数据库 中数据的命令,如OSELECT、 UPDATE 等5流程控制语言(FlowControlLanguage,FCL),用于控制应用程序流程 的语句,如IF、CASEO等。5, 数据类型:整数型:bigint(8 个字节,-263263T),int(4 个字节,-231231-1),smallint(2 个字节,-215215-1), tingyint(1 个字节,0255);小数数据类型:decimal(p,s)p精度:指定小数点左边和右边可以存储的十进制数 字的最大个数。138s小数位数:0p之间的值;numeric(p,s)近似数 值型:float(n)n: 153 取值范围:T.793081.79308real 取值范围: 3.40383.4038字符型(字符常量必须包含在单引号或双引号中):char(n):长度为n个字节的固定长度且非Unicode的字符数据,存 储大小为n个字节。n必须是一个介于1和8000之间的数值。varchar(n):长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8000之间的数值。存储大小为输入数据的字节的实 际长度,而不是n个字节,所输入的数据字符长度可以为0t ex t:用来声明变长的字符数据。在定义的过程中,不需要指定字符的 长度,最大长度为231-1 (2147483647)个字符。当服务器代码页使用双字 节字符时,存储量仍是2147483647字节。存储大小可能小于2147483647字 节(取决于字符串)逻辑数值型:bit:可以存储整数型数据1、0或NULL。如果输入0以外的其他值, SQLServer均将其作为1看待。货币型:money:可存储的货币数值介于-263263T之间,精确到货币单位的万 分之一,货币数据的存储精确度为4位小数,存储大小为8个字节;smallmoney:可存储的货币数据值介于-214748.3648214748.3647,货 币数据的存储精确度为4位小数,精确到货币单位的万分之一,存储大小为 4个字节。Unicode字符型:nvarchar:当列中各项所包含的Unicode字符数不同时(至多为4000)时使用;nchar:当列中各项为一固定长度时(至多为4000个 Unicode字符)时使用;nt ex t:最大长度为2-1.当列中任意项超过4000个 Unicode字符时使用。它们分别与字符型的varchar(n)、char(n)和text类型相对应。 使用Unicode字符时,应该在前面加一个标识符N,但是存储时并不存储该 标识符。日期时间类型:datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确度为千分之三(3ms或0.003s)smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数 据,精确到分钟。29.998或更低的smalldatetime值向下舍入为最接近的分钟,29.999s或更髙 的smalldatetime值向上舍入为最接近的分钟。例如:4-16-202*03:48:39.257,04/16/202*13:30:20PMSQLServer可以识别的日期格式有字母格式、数字格式和无分隔字符串 格式3种。字符格式允许使用以当前语句给出的月全名(如April)或月的 缩写(如Apr)来指定日期数据。字符格式的日期需要放在单括号内。可用 的字符型日期格式分别为:Ap讥il 15,202*Ap 讥il 15,2006Ap 讥il 202*1515April, 202*15April,2006152006April202*APRIL15202*15APRI LSQLServer可以识别以下数据格式。用单引号()把每一种括起 来。下面都是有效的时间格式:14:3014:30:20:99914:30:20.94AM4PM04:30:20:500AM二进制数据类型:二进制数据由十六进制数表示。例如,十进制245等于十六进制数F5. 在SQLServer202*中,二进制数据使用binary、varbinary和image数据类 型存储。binary:在每行中都是固定的长度(最多为8KB)varbinary:在每行中所包含的十六进制数字的个数可以不同(最多为 8kb)image:可以用来存储超过8KB的可变长度的二进制数据,如word文 档、excel电子表格、位图图像、图形交换格式(GIF)文件和联合图像专 家组(JPEG)文件。其他数据类型:lcursor游标数据类型,用于创建游标变量或者定义存储过程的输出参 数。它是唯一的一O种不能赋值给表的列(字段)的基本数据类型。2Sql_varia nt 数据类型,可以存储除了 tex t、nt ex t、times tamp 和自 己本身以外的其他所有O类型的变量3table数据类型,能够保存函数结果,并将其作为局部变量数据类型,可以暂时存储应用O程序的结果,以便在以后用到。4uniqueidentifier数据类型,全局唯一标示符,是一个16字节长的 二进制数据类型,是OSQLServer根据计算机网络适配器和主机CPU时钟产生的唯一号码而生 成的全局唯一标示符。唯一标示符代码可以通过调用NEWID函数或者其他SQLServer应用程序编程接口来获得。5timestamp时间戳数据类型,可以反 映数据库中数据修改的相对顺序。O6, 在查询分析器中输入如下命令并执行即可创建用户定义数据类型: Sp_addtypetypename二address,phystype=char(30),nulltype= not null7, 定义变量:DECLAREvariable_namedatatype,变量不能是text、nt ex t或i mage数据类型。变量最大长度为30个字 符赋值:通常用SET和SELECT语句为变量赋值,其语法格式为: SETvariable_name二expressionSELECTvariable_name二expression在局部变量没有被赋值之前,其值是NULL,如果要在程序体重引用, 特别是在循环结构中,必须先为其赋值。全局变量通常用来跟踪服务器范围和特定会话期间的信息,不能明显地 被赋值或声明。全局变量不能由用户定义,也不能由应用程序在处理器之间 交叉传递信息。8,SQLServer202*中较常用的全局变量变量connectionscpu_busycursor_rowsdatefirstdbtserrorfetc h-statusidentityidleio_busylangidlanguageLOCK_TIMEOUTm ax_precisionnes tleveloptionspack_receivedpack_sentpacket _errorsprocidremserverrowcountservernameservicenametexTsizetotal_errorsTrancouransTaTetRAnchAinedtotal_read versionspid说明SQLServer自启动以来建立的连接数SQLServer自启动以来系统处 理的毫秒数打开游标时满足条件的行数值为17,指定每周的星期几为第一 天最后一次的times tamp值前一条SQL语句报告的错误游标中上条FETCH语 句的状态上次INSERT操作中使用的IDENTITY值上次启动SQLServer以来闲 置的毫秒数上次启动SQLServer以来用于输入输出操作的毫秒数当前所用语 言的ID号当前所用语言的名称返回用SET语句设置的锁定超时的值,以毫 秒为单位返回decimal及numeric型数据的最大精度当前执行的存储过程的 嵌套层数返回当前的SET选项的设置信息上次启动SQLServer以来从网络上 接收的输入包数上次启动SQLServer以来从网络上发送的输出包数上次启动 SQLServer以来从网络上发生的错误包的数目返回当前执行的存储过程的ID 号返回远程SQLServer数据库服务器的名称前一条命令处理的行数本地 SQLServer的名称正在运行的SQLServer的注册名用SET语句设置的当前 TEXTSIZE值,以字节为单位上次启动SQLServer以来的磁盘读写错误数事 务嵌套的级别事务的当前状态当前事务的模式上次启动SQLServer以来发生 的读磁盘数SQLServer和OS版本级别当前进程IDmax_connections返回 服务器允许的最大并发连接数9,SQLServer提供的比较运算符:多出!(不大 于)两种10, 逻辑运算符逻辑运算符含义ALLANDANYBETWEENEXISTSINLINKNOTORSOME11, 通配符及其含义:通配符%_(下划线)a-facfa-faef含义 代表0个或多个任意字符代表任意1个字符指定范围(af)或集合(abcdef)中的任何单个字符代表字符a、c或f不属于指定范围(af)或 集合(abcdef)的任何单个字符除了 a、e或f之外的任意一个字符当一组 比较关系的值都为TRUE时,才返回TRUE当要比较的两个布尔表达式的值都 为TRUE,才返回TRUE只要一组比较关系中有一个值为TRUE,就返回TRUE 只有操作数在定义的范围内,才返回TRUE如果在子查询中存在,就返回 TRUE如果操作数在所给的列表表达式中,则返回TRUE如果操作数与模式相 匹配,则返回TRUE对所有其他的布尔运算取反只要比较的两个表达式有一 个为TRUE,就返回TRUE如果一组比较关系中有一些为TRUE,则返回TRUE12,字符串连接运算符为加号(+),可以将两个或多个字符串合并或连 接成一个字符串。还可以连接二进制字符串。13,运算符优先级1+(正)、-(负)、(按位 N0T)O2*(乘)、/(除)、%(模)03+(加)、+(连接)、-(减)04二、二、和!14,常用数学函数函数名称ABSAC0SASINATANATN2CEILINGC0SC0TDEGREEEXPFL00RL0GL0G10PIP0WERRADIA NSRANDROUNDSINSQUARESQRTTAN函数功能简述求绝对值反余弦函数反正弦函 数反正切函数增强的反正切函数求仅此于最大值的值余弦函数余切函数角度 转弧度计算e的x次幂求仅次于最小值的值求自然对数增强的自然对数常 量,圆周率求x的y次方角度转弧度求随机数指定小数的位数正弦函数开方 求平方根正切函数15,日期/时间函数1、GETDATE()函数:用于返回SQLServer系统中的当前日期时间。2、DATEADD()函数:用于进行两个时间数据的相加,返回新的日期/时间3、DATEDIFFO函数:用于返回两个指定时间之间的间隔4,DATENAMEO函数:用于返回一个指定的时间名字。例如:当前的年、月或者日的名称。5、DATEPARTO函数:和DATENAMEO函数极其相似, 只不过该函数返回的是具体的时间数值而不是时间的名称16,聚合函数聚合函数在结果集中通过对被选列值的收集处理并返回一个数值型的计 算结果。(1)AVG()函数该函数用于计算大量数据的平均值。(2)C0UNT()函数在进行数据查询时,该函数可以返回参数中非NULL值的数目。(3)SUM()函数该函数用于计算指定数据项的总和(4) MAX()和皿IN()函数MAX()和MIN()函数用于计算多个数据项当中的极值(最大值和最小 值)。17,常用字符串函数:函数名称ASCIICHARCHARINDEXDIFFRENCELEFTLENLOWERLTRIMNCHARPATINDEX 函数功能 简述返回字符表达式最左端字符的ASCII代码值将ASCII代码转换为字符的 字符串函数,ASCII码应是介于0255的整数,否则将返回NULL值返回字 符串中指定表达式的起始位置以整数返回两个字符表达式的SOUNDEX值之 差,返回的整数是SOUNDEX值中相同字符的个数,返回的值从04不等,4表示SOUNDEX值相同返回从字符串左边开始指定个数的字符返回给定字符串 表达式的字符个数,其中不包含尾随空格将大写字符数据转换为小写字符数 据后返回字符表达式删除起始空格后返回字符表达式返回Unicode标准所进 行的定义,用给定整数代码返回Unicode字符返回指定表达式中某模式第一 次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模 式,则返回OSQLServer分隔标识符REPLACEREPLICATEREVERSERIGHTSOUNDEXSPACESTRSTUFFSUBSTRINGUNICODEUP PER用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符 串表达式以指定的次数重复字符表达式返回字符表达式的反转返回从字符串 右边开始指定个数的字符返回由4个字符组成的代码(SOUNDEX),以评估两 个字符串的相似性返回由重复的空格组成的字符串返回由数字数据转换来的 字符数据删除指定长度的字符并在指定的起始点插入另一组字符求子串函数 按照Unicode标准的定义,返回输入表达式的第一个字符的整数值返回将小 写字符数据转换为大写的字符表达式QUOTENAME返回带有分隔符的Unicode 串,分隔符的加入可使输入的字符串称为有效的18,控制流语句:l.BEGINEND语句:用于将多个T-SQL语句组合为一个程序块。 2.IFELSE语句:有条件地执行语句3.CASE语句:可以进行多个分支的选 择语法格式:CASEWHENTHENnELSEEND 搜索 CASE 格式:CASEWHENTHENnELSEEND4. WHILE语句:通过布尔表达式来设置一个条件,当这个条件成立时, 重复执行一个语句或语句块,重复执行的部分称为循环体。可以使用Break 和Continue关键字在循环内部控制WHILE循环中语句的执行5. G0T0语句:遇到GOTO语句后,直接跳转到lable标号处继续执行, 而GOTO后面的语句将不被执行。6. RETURN:可以从查询或过程中无条件退出。可在任何时候用于从过 程、批处理或语句块中退出,而不是执行位于RETURN之后的语句。如果没有指定返回值SQLServer系统会根据程序执行的结果返回一个内 定值,RETURN命令返回的内定值返回值含义0-1-2-3-4-5-6-7-8程序执行成功找不到对象数据类型错误死锁违反权限原则语法错误用户造成的一般错误资源错误如磁盘空间不足非致命的内部错误已达到系统的极限致命的内部不一致性错误表或指针破坏数据库破坏硬件错误-9-10-11-12-13-147. WAITF0R语句:可以在指定的时间或者过了 一定的时间后,执行语句 块、存储过程或者事务。语法格式为:WAITFOR8. PRINT语句:该语句将用户定义的消息返回客户端,其格式为: PRINT字符串丨局部变量丨函数丨字符串表达式19. 使用DBCCSHRINKDATABASE命令收缩数据库。20. 使用Transact-SQL命令查看数据库语法: sp_helpdbdbname二name示例:sp_helpdbTes t_ DB使用Transact-SQL命令查看数据库的设置:DATABASEPROPERTYEX(database, property)21. 若要创建可移动数据库,则必须使用sp_create_removable系统存 储过程,而不要使用SQLServer企业管理器或CREATEDATABASE语句创建数据库SP_CREATE_REMOVABLE系统存储过程可以创建3个或更多文件1一个文件包含系统表O2 一个文件包含事务日志O3 一个或多个文件包含数据库O重命名列:采用sp_rename函数可以更改当前数据库中用户创建对象(如表、列或 用户自定义类型)的名称。格式为:EXECsp_rename 表名.列名,COLUMNUPDATE语句有日志记录,如果要更改大量的text或image数据,考虑 使用UPDATETEXT或WRITETEXT语句,这两个语句在默认情况下午日志记 录。友情提示:本文中关于sql知识点归纳总结给出的范例仅供您参考 拓展思维使用,sql知识点归纳总结:该篇文章建议您自主创作。
展开阅读全文