荟聚奇文、博采众长、见贤思齐
当前位置:公文素材库 > 计划总结 > 工作总结 > sql知识点归纳总结

sql知识点归纳总结

网站:公文素材库 | 时间:2019-05-29 07:08:39 | 移动端:sql知识点归纳总结

sql知识点归纳总结

1Case的使用

Case具有两种格式,简单Case函数和Case搜索函数1)Casesexwhen‘1’then‘男’

When‘2’then‘女’

Else‘其他’end

2)Casewhensex=‘1’then‘男’

Whensex=‘2’then‘女’

Else‘其他’end

注:1)只返回第一个符合条件的值,剩下的Case部分将会被自动忽略2union/unionall的使用

1)select*fromtable1

unionall

select*fromtable22)select*fromtable1

union

select*fromtable2

注:1)不合并重复的行,2)会合并重复的行3数据表的连接

1)、内连接(自然连接):只有两个表相匹配的行才能在结果集中出现2)、外连接:包括

(1)左外连接(左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制)3)、自连接(连接发生在一张基表内)

selecta.studentno,a.studentname,b.classnamefromstudentsa,classesbwherea.classid(+)=b.classid;STUDENTNOSTUDENTNAMCLASSNAME--------------------------------------------------1周虎一年级一班2周林一年级二班一年级三班以上语句是右连接:

即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在查询结构中出现。反之:

selecta.studentno,a.studentname,b.classnamefromstudentsa,classesbwherea.classid=b.classid(+);STUDENTNOSTUDENTNAMCLASSNAME--------------------------------------------------1周虎一年级一班2周林一年级二班3钟林达

则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,这个学生的记录都会被显示。

selecta.studentno,a.studentname,b.classnamefromstudentsa,classesbwherea.classid=b.classid;

这个则是通常用到的内连接,显示两表都符合条件的记录总之,

左连接显示左边全部的和右边与左边相同的右连接显示右边全部的和左边与右边相同的内连接是只显示满足条件的!

4Distinct(去重)

5组函数:如sum(),avg(),count()

1

数据类型数字:number(n)数字number(n,m)浮点字符串:char(n)定长,方便查询,varchar(n)变长,节省空间,varchar2(n)oracle自定义变长日期:date

创建表createtable表名(列名列类型,…)插入数据insertinto表名values(列值,…)

注:数据库中字符用单引号表示,数字不用Commit;

查询select*from表名删除表droptabledept_xxx查询“||”符号表示两个数据串接起来Distinct只能跟在select后边如:selectdistinctjobfromemp_xxxWhere条件查询注:sql语句大小写不敏感,但数据大小写敏感

如:select*fromemp_xxxwherejob=’Analyst’如果数据上analyst就查不出来

Between低值and高值In(列表)如:select*fromemp_xxxwherejob=’Manager’orjob=’Analyst’

Select*fromemp_xxxwherejobin(‘Manager’,’Analyst’)模糊匹配like%“%”表示0至多个字符,跟like配合使用“_”下划线表示一个字符

如:select*fromemp_xxxwherejoblike‘%sale_’查询哪些员工没有奖金Select*fromemp_ningwherebonusisnull;注:这里用的是is而不是=

否定形式:isnotnull,notbetween…and..,notin

Commit提交数据,rollback数据回滚数字函数Round(数字,小数点后的位数)用于数字的四舍五入Trunc(数字,小数点后的位数)用于截取注:如果没有延续二个参数,默认是0转换函数To_date()将字符串数据按指定格式,转换为日期数据To_char()将日期数据按指定格式转换为字符串数据To_char(日期数据,格式):把日期数据转换为字符数据Selectto_char(sysdate,’yyyy-mm-ddhh24:mi:ss’)fromdual;日期格式:

To_date按指定时间格式插入数据Insertintoemp_xxx(empno,ename,hiredate)values(1012,’any’,to_date(‘201*-10-10’,’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_xxxGroupbydeptno;

Having子名用于对分组后的数据进行过滤

注:区别where是对表中数据的过滤,having是对分组得到的结果数据进一步过滤

如:平均薪水大于5000无的部门数据,没有部门的不算在内

Selectdeptno,avg(nvl(salary,0))avg_sfromemp_xxxwheredetnoisnotnullgroupbydeptnohavingavg(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)数据表时,注意条件,如果不加条件,修改的是全部表记录

删除数据Delete[from]表名where条件

Drop删除表(删除结构和全部的表数据)Droptable表名操作将删除数据存储到临时空间中,不直接删除,可以回退

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语言可以使用两类变量,局部变量和全局变量。○

2数据定义语言(DataDefinitionLanguage,DDL),用来建立数据库及数据库对象,绝大部分○

以Create开头,如CreateTable等

3数据控制语言(DataControlLanguage,DCL),用来控制数据库组件的存取访问、权限等命○

令,如GRANT、REVOKE等

4数据操纵语言(DataManipulationLanguage,DML),用来操纵数据库中数据的命令,如○

SELECT、UPDATE等

5流程控制语言(FlowControlLanguage,FCL),用于控制应用程序流程的语句,如IF、CASE○

等。

5,数据类型:整数型:

bigint(8个字节,-263~263-1),int(4个字节,-231~231-1),

smallint(2个字节,-215~215-1),tingyint(1个字节,0~255);

小数数据类型:

decimal[(p[,s])]p精度:指定小数点左边和右边可以存储的十进制数字的最大个数。1~38s小数位数:0~p之间的值;numeric[(p[,s])]近似数值型:

float[(n)]n:1~53取值范围:-1.79308~1.79308real取值范围:-3.4038~3.4038

字符型(字符常量必须包含在单引号或双引号中):

char[(n)]:长度为n个字节的固定长度且非Unicode的字符数据,存储大小为n个字节。n必须是一个介于1和8000之间的数值。

varchar[(n)]:长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节,所输入的数据字符长度可以为0

text:用来声明变长的字符数据。在定义的过程中,不需要指定字符的长度,最大长度为231-1(2147483647)个字符。当服务器代码页使用双字节字符时,存储量仍是2147483647字节。存储大小可能小于2147483647字节(取决于字符串)逻辑数值型:

bit:可以存储整数型数据1、0或NULL。如果输入0以外的其他值,SQLServer均将其作为1看待。货币型:

money:可存储的货币数值介于-263~263-1之间,精确到货币单位的万分之一,货币数据的存储精确度为4位小数,存储大小为8个字节;

smallmoney:可存储的货币数据值介于-214748.3648~214748.3647,货币数据的存储精确度为4位小数,精确到货币单位的万分之一,存储大小为4个字节。Unicode字符型:

nvarchar:当列中各项所包含的Unicode字符数不同时(至多为4000)时使用;nchar:当列中各项为一固定长度时(至多为4000个Unicode字符)时使用;ntext:最大长度为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-201*03:48:39.257’,’04/16/201*13:30:20PM’

SQLServer可以识别的日期格式有字母格式、数字格式和无分隔字符串格式3种。字符格式允许使用以当前语句给出的月全名(如April)或月的缩写(如Apr)来指定日期数据。字符格式的日期需要放在单括号内。可用的字符型日期格式分别为:Apr[il][15][,]201*Apr[il][15][,][20]06Apr[il]201*[15][15]Apr[il][,]201*15Apr[il][,][20]0615[20]06Apr[il]201*APR[IL][15]201*[15]APR[IL

]

SQLServer可以识别以下数据格式。用单引号(’’)把每一种括起来。下面都是有效的时间格式:

14:30

14:30[:20:999]14:30[:20.9]4AM

4PM

[0]4[:30:20:500]AM

二进制数据类型:

二进制数据由十六进制数表示。例如,十进制245等于十六进制数F5.在SQLServer201*中,二进制数据使用binary、varbinary和image数据类型存储。binary:在每行中都是固定的长度(最多为8KB)

varbinary:在每行中所包含的十六进制数字的个数可以不同(最多为8kb)

image:可以用来存储超过8KB的可变长度的二进制数据,如word文档、excel电子表格、位图图像、图形交换格式(GIF)文件和联合图像专家组(JPEG)文件。

其他数据类型:

1cursor游标数据类型,用于创建游标变量或者定义存储过程的输出参数。它是唯一的一○

种不能赋值给表的列(字段)的基本数据类型。

2Sql_variant数据类型,可以存储除了text、ntext、timestamp和自己本身以外的其他所有○

类型的变量

3table数据类型,能够保存函数结果,并将其作为局部变量数据类型,可以暂时存储应用○

程序的结果,以便在以后用到。

4uniqueidentifier数据类型,全局唯一标示符,是一个16字节长的二进制数据类型,是○

SQLServer根据计算机网络适配器和主机CPU时钟产生的唯一号码而生成的全局唯一标示符。唯一标示符代码可以通过调用NEWID函数或者其他SQLServer应用程序编程接口来获得。5timestamp时间戳数据类型,可以反映数据库中数据修改的相对顺序。○

6,在查询分析器中输入如下命令并执行即可创建用户定义数据类型:Sp_addtype@typename=address,@phystype=’char(30)’,@nulltype=’notnull’

7,定义变量:

DECLARE@variable_namedatatype[,…]

变量不能是text、ntext或image数据类型。变量最大长度为30个字符赋值:

通常用SET和SELECT语句为变量赋值,其语法格式为:SET@variable_name=expressionSELECT@variable_name=expression

在局部变量没有被赋值之前,其值是NULL,如果要在程序体重引用,特别是在循环结构中,必须先为其赋值。

全局变量通常用来跟踪服务器范围和特定会话期间的信息,不能明显地被赋值或声明。全局变量不能由用户定义,也不能由应用程序在处理器之间交叉传递信息。8,SQLServer201*中较常用的全局变量变量@@connections@@cpu_busy@@cursor_rows@@datefirst@@dbts@@error@@fetch-status@@identity@@idle@@io_busy@@langid@@language@@LOCK_TIMEOUT@@max_precision@@nestlevel@@options@@pack_received@@pack_sent@@packet_errors@@procid@@remserver@@rowcount@@servername@@servicename@@textsize@@total_errors@@trancount@@transtate@@tranchained@@total_read@@version@@spid

说明SQLServer自启动以来建立的连接数SQLServer自启动以来系统处理的毫秒数打开游标时满足条件的行数值为1~7,指定每周的星期几为第一天最后一次的timestamp值前一条SQL语句报告的错误游标中上条FETCH语句的状态上次INSERT操作中使用的IDENTITY值上次启动SQLServer以来闲置的毫秒数上次启动SQLServer以来用于输入输出操作的毫秒数当前所用语言的ID号当前所用语言的名称返回用SET语句设置的锁定超时的值,以毫秒为单位返回decimal及numeric型数据的最大精度当前执行的存储过程的嵌套层数返回当前的SET选项的设置信息上次启动SQLServer以来从网络上接收的输入包数上次启动SQLServer以来从网络上发送的输出包数上次启动SQLServer以来从网络上发生的错误包的数目返回当前执行的存储过程的ID号返回远程SQLServer数据库服务器的名称前一条命令处理的行数本地SQLServer的名称正在运行的SQLServer的注册名用SET语句设置的当前TEXTSIZE值,以字节为单位上次启动SQLServer以来的磁盘读写错误数事务嵌套的级别事务的当前状态当前事务的模式上次启动SQLServer以来发生的读磁盘数SQLServer和OS版本级别当前进程ID@@max_connections返回服务器允许的最大并发连接数9,SQLServer提供的比较运算符:多出!(不大于)两种

10,逻辑运算符逻辑运算符含义ALLANDANYBETWEENEXISTSINLINKNOTORSOME

11,通配符及其含义:通配符%_(下划线)[a-f][acf][^a-f][^aef]含义代表0个或多个任意字符代表任意1个字符指定范围([a~f])或集合([abcdef])中的任何单个字符代表字符a、c或f不属于指定范围([a~f])或集合([abcdef])的任何单个字符除了a、e或f之外的任意一个字符当一组比较关系的值都为TRUE时,才返回TRUE当要比较的两个布尔表达式的值都为TRUE,才返回TRUE只要一组比较关系中有一个值为TRUE,就返回TRUE只有操作数在定义的范围内,才返回TRUE如果在子查询中存在,就返回TRUE如果操作数在所给的列表表达式中,则返回TRUE如果操作数与模式相匹配,则返回TRUE对所有其他的布尔运算取反只要比较的两个表达式有一个为TRUE,就返回TRUE如果一组比较关系中有一些为TRUE,则返回TRUE

12,字符串连接运算符为加号(+),可以将两个或多个字符串合并或连接成一个字符串。还可以连接二进制字符串。

13,运算符优先级

1+(正)、-(负)、~(按位NOT)○

2*(乘)、/(除)、%(模)○

3+(加)、+(连接)、-(减)○

4=、>、=、和!14,常用数学函数函数名称ABSACOSASINATANATN2CEILINGCOSCOTDEGREEEXPFLOORLOGLOG10PIPOWERRADIANSRANDROUNDSINSQUARESQRTTAN函数功能简述求绝对值反余弦函数反正弦函数反正切函数增强的反正切函数求仅此于最大值的值余弦函数余切函数角度转弧度计算e的x次幂求仅次于最小值的值求自然对数增强的自然对数常量,圆周率求x的y次方角度转弧度求随机数指定小数的位数正弦函数开方求平方根正切函数

15,日期/时间函数

1、GETDATE()函数:用于返回SQLServer系统中的当前日期时间。

2、DATEADD()函数:用于进行两个时间数据的相加,返回新的日期/时间3、DATEDIFF()函数:用于返回两个指定时间之间的间隔

4,DATENAME()函数:用于返回一个指定的时间名字。例如:当前的年、月或者日的名称。5、DATEPART()函数:和DATENAME()函数极其相似,只不过该函数返回的是具体的时间数

值而不是时间的名称

16,聚合函数

聚合函数在结果集中通过对被选列值的收集处理并返回一个数值型的计算结果。(1)AVG()函数

该函数用于计算大量数据的平均值。

(2)COUNT()函数

在进行数据查询时,该函数可以返回参数中非NULL值的数目。(3)SUM()函数

该函数用于计算指定数据项的总和(4)MAX()和MIN()函数

MAX()和MIN()函数用于计算多个数据项当中的极值(最大值和最小值)。17,常用字符串函数:函数名称ASCIICHARCHARINDEXDIFFRENCELEFTLENLOWERLTRIMNCHARPATINDEX函数功能简述返回字符表达式最左端字符的ASCII代码值将ASCII代码转换为字符的字符串函数,ASCII码应是介于0~255的整数,否则将返回NULL值返回字符串中指定表达式的起始位置以整数返回两个字符表达式的SOUNDEX值之差,返回的整数是SOUNDEX值中相同字符的个数,返回的值从0~4不等,4表示SOUNDEX值相同返回从字符串左边开始指定个数的字符返回给定字符串表达式的字符个数,其中不包含尾随空格将大写字符数据转换为小写字符数据后返回字符表达式删除起始空格后返回字符表达式返回Unicode标准所进行的定义,用给定整数代码返回Unicode字符返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回0SQLServer分隔标识符REPLACEREPLICATEREVERSERIGHTSOUNDEXSPACESTRSTUFFSUBSTRINGUNICODEUPPER

用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式以指定的次数重复字符表达式返回字符表达式的反转返回从字符串右边开始指定个数的字符返回由4个字符组成的代码(SOUNDEX),以评估两个字符串的相似性返回由重复的空格组成的字符串返回由数字数据转换来的字符数据删除指定长度的字符并在指定的起始点插入另一组字符求子串函数按照Unicode标准的定义,返回输入表达式的第一个字符的整数值返回将小写字符数据转换为大写的字符表达式QUOTENAME返回带有分隔符的Unicode串,分隔符的加入可使输入的字符串称为有效的18,控制流语句:

1.BEGIN…END语句:用于将多个T-SQL语句组合为一个程序块。2.IF…ELSE语句:有条件地执行语句3.CASE语句:可以进行多个分支的选择语法格式:

CASE

WHENTHEN[…n]

[ELSE]END搜索CASE格式:

CASE

WHENTHEN[…n]

[ELSE]

END

4.WHILE语句:通过布尔表达式来设置一个条件,当这个条件成立时,重复执行一个语句或语句块,重复执行的部分称为循环体。可以使用Break和Continue关键字在循环内部控制WHILE循环中语句的执行

5.GOTO语句:遇到GOTO语句后,直接跳转到lable标号处继续执行,而GOTO后面的语句将不被执行。

6.RETURN:可以从查询或过程中无条件退出。可在任何时候用于从过程、批处理或语句块中退出,而不是执行位于RETURN之后的语句。

如果没有指定返回值SQLServer系统会根据程序执行的结果返回一个内定值,RETURN命令返回的内定值

返回值含义

0-1-2-3-4-5-6-7-8

程序执行成功找不到对象数据类型错误

死锁

违反权限原则

语法错误

用户造成的一般错误

资源错误如磁盘空间不足非致命的内部错误已达到系统的极限

致命的内部不一致性错误表或指针破坏数据库破坏硬件错误

-9-10-11-12-13-14

7.WAITFOR语句:可以在指定的时间或者过了一定的时间后,执行语句块、存储过程或者事务。语法格式为:

WAITFOR

8.PRINT语句:该语句将用户定义的消息返回客户端,其格式为:PRINT字符串|局部变量|函数|字符串表达式

19.使用DBCCSHRINKDATABASE命令收缩数据库。

20.使用Transact-SQL命令查看数据库语法:sp_helpdb[[@dbname=]’name’]示例:sp_helpdb‘Test_DB’

使用Transact-SQL命令查看数据库的设置:DATABASEPROPERTYEX(database,property)

21。若要创建可移动数据库,则必须使用sp_create_removable系统存储过程,而不要使用

SQLServer企业管理器或CREATEDATABASE语句创建数据库SP_CREATE_REMOVABLE系统存储过程可以创建3个或更多文件

1一个文件包含系统表○

2一个文件包含事务日志○

3一个或多个文件包含数据库○

重命名列:

采用sp_rename函数可以更改当前数据库中用户创建对象(如表、列或用户自定义类型)的名称。

格式为:EXECsp_rename‘表名.列名’,’COLUMN’

UPDATE语句有日志记录,如果要更改大量的text或image数据,考虑使用UPDATETEXT或WRITETEXT语句,这两个语句在默认情况下午日志记录。

友情提示:本文中关于《sql知识点归纳总结》给出的范例仅供您参考拓展思维使用,sql知识点归纳总结:该篇文章建议您自主创作。

来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


sql知识点归纳总结》由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
链接地址:http://www.bsmz.net/gongwen/672248.html
相关文章