SQL Server 中的一些概念

发布时间:2019-09-14  栏目:MySQL  评论:0 Comments

上学SQL Server 2013编制程序入门卓越(第4版)的笔记

1.列别名
  除了支持oracle的列表名语法格局之外,还扶助把列别称置于列名以前,并附加等号:

1.业务日志

  自便数据库的转移初步不进去数据库本人,而是不断地被写入到专门的学问日志。

  日志是数额进入磁盘上的首先地点。

select emp_name=ename,salary=sal from emp;

2.表

  数据库中其实的数量都存在表中。表有行有列。

2.字符串条件
  SQL
Server除了帮衬like关键字、“%”及“_”作为通配符以及利用escape关键字钦定转义字符进行模糊相配查询,还协助正则表达式中的方括号用法,以协作钦定范围内照旧方括号所钦定群集中的大肆单个字符。
  SQL
Server辅助的方括号用法有三种情势,[]与[^],前面二个用于包蕴有个别字符,后面一个用于不含有某个字符,比方如下。

 2.1索引

  
索引是在特定表或视图框架内部存款和储蓄器在的指标。索引的效应看似于目录,能够加快消息的寻觅。

  索引分两类:

    会集索引—各类表只能有三个。集合索引依照其索引举行物理排序。列子:倘诺为百科全书做索引,群集索引正是页码。

    非集结索引—每一个表能够有多个。非群集索引是指用于找到数据的别的部分值。列子:为百科全书做索引,非会集索引正是百科全书前边的器重字索引。

  • [amd]:表示蕴含a、m、d多少个字符中的猖獗二个
  • [^amd]:表示不分包a、m、d七个字符中的大肆八个
  • [b-f]:表示韩文字母表中b到f之中的自由二个
  • [0-9]:表示0到9那12个数字中的自便三个
      如查询dept表的dname列中的第一及第二字符为数字,第多个字符为小写法语字母的记录,能够选取如下语句:

  2.2触发器

  触发器是在操作表的时候(CRUD)自动实施一段逻辑代码。

  2.3约束

       约束只好在表中,正是限制表中的数量满意某种条件。

select * from dept where dname like '[0-9][0-9][a-z]%';

3.文件组 

  默许情况下,表及别的对象要存款和储蓄在一个文书中,暗许景况下,该文件便是文件组的第10%员。

       用户能够友善创设自定义文件组。

3.多表连接
  对于自然连接,Oracle援助natural join以及using关键字的用法,而SQL
Server不补助。
  在from子句中使用子查询时,Oracle使用或不行使表别称都以足以的。若选取表外号,则不能够附带as关键字。如上边子查询:

4.数据库关系图

  数据库关系图是数据库设计的可视表示。

#未使用别名
select ename from (select * from emp where deptno=20);
#使用别名
select ename from (select * from emp where deptno=20) e;

5.视图

  视图是一种设想表(不包括数据,别的与表类似)。

唯独SQL Server要修必得选拔表外号,且附带或不顺手as都协助:

6.存款和储蓄进度

  存款和储蓄进程是SQL
Service编制程序成效的基本功。存款和储蓄进度一般是整合三个逻辑单元的Transact-SQL(SQL
Service 数据库查询语言)语句的稳步集中。

     存款和储蓄进程允许选用变量和参数,也可应用选取和巡回结构。

 

select ename from (select * from emp where deptno=20) e;
select ename from (select * from emp where deptno=20) as e;

4.询问排序后的前n行或第n行记录

SQL Server中落实抽出表中的前n行,能够动用三种艺术:

  • top n
  • row_number()

SQL
Server不支持Oracle中的rownum关键字,而row_number()函数的用法与Oracle一样。
  绝对于Oracle的兑现格局,使用top n的用法,在SQL
Server中得以很轻松地落到实处取出表中前n行的指标。如查询emp表中的sal值最高的前3条记下:

select top 3 ename,sal from emp order by sal desc;

要是要询问排序后的第n航记录,可以由前n行结果除去前n-1行结果,如要查询emp表中sql值排行第三的笔录:

select a.ename,a.sal from
(select top 3 ename,sal from emp order by sal desc) as a
except
select a.ename,a.sal from
(select top 2 ename,sal from emp order by sal desc) as a;

而是SQL不扶助以下做法:

select top 3 ename,sal from emp order by sal desc
except
select top 2 ename,sal from emp order by sal desc;

5.集结运算
  对与聚焦的差运算,Oracle使用minus运算符,而SQL
Server使用except运算符。

6.null值在排序(order by)中的管理
  在SQL Server的询问中,如果order
by附加了asc选项,即升序排序,则null值排在别的非空值之前;即使order
by子句附加了desc,则null值排在其余非空值之后,也能够以为在SQL
Server中,null值最小,那与Oracle的管理情势正好相反。

7.null管理函数
  对应于Oracle的nvl()函数,SQL
Server提供的null管理函数为isnull(),其用法与Oracle的nvl()同样。

select ename,sal+isnull(comm,0) from emp;

8.修改表结构

①更改数据类型
  Oracle和SQL Server分别选择modify与alter
column关键字修改列的数据类型,两个的语法为:

  • Oracle:alter table table_name modify column_name datatype
  • SQL Server:alter table table_name alter column_name datatype

②修改列名
  Oracle使用alter table附加rename column子句来修改列名:

alter table tablename rename column old_column_name to new_column_name;

留下评论

网站地图xml地图