--------------------------------------第一章  Sql Server数据库基础-----------------------------------------------

1,sql server的历史:
     第一代数据库:网状与层次模型
     第二代数据库:关系模型 (sql server属于关系模型数据库)
     第三代数据库:对象模型

2,实体:客观存在的可以被描述的事物叫实体

3,冗余:存在重复的数据
     消除冗余的办法:分类存储

4,完整性:指的是数据的准确性

5,系统的内置数据库:
     (1)master:存储着系统信息。
     (2)model:所有数据库的模板
     (3)msdb:sql server代理服务存储系统任务以及自动化作业使用的数据库。
     (4)tempdb:存放临时数据的数据库,包括临时表,临时存储过程等。

6,数据库文件后缀
     mdf:主数据库文件,一个数据库只可以有一个主数据库文件,但可以有多个次数据库文件
     ldf:事物日志文件,用于存储对数据库的操作
     ndf:次要数据库文件

7,创建数据库用户并设置权限
     (1)权限:用户对服务器的操作权限
          sysadmin:可以在sql server中执行任何操作
          serveradmin:可以设置服务器范围的配置选项,关闭服务器。
          setupadmin:可以管理链接服务器和启动过程
          securityadmin:可以管理登录和create database 权限,还可以读取错误日志和更改密码
          processadmin:可以管理在sql server中运行的进程
          dbcreator:可以创建、更改和除去数据库
          diskadmin:可以管理磁盘文件
          bulkadmin:可以执行 bulk insert 语句

(2)用户映射:指定用户对指定数据库的操作权限
     db_owner:拥有数据库的所有许可
     db_securityadmin:能建立架构、更改角色
     db_accessadmin:能添加删除用户、组或成员
     db_backupoperator:能备份数据库
     db_datareader:能从数据库中读取数据
     db_datawriter:能修改数据库表中的数据
     db_ddladmin:能添加、修改或删除数据库对象
     db_denydatareader:不能从数据库表中读数据
     db_denydatawriter:不能修改数据库表中的数据
     public 维护默认的权限

-------------------------------------第二章   数据库表的创建与管理-------------------------------------
1,数据表的完整性
     (1)实体完整性:保证表中每行数据都是唯一的,不能重复存在
     (2)域完整性:某一列数据的完整性
     (3)引用完整性:保证数据先在主表中存在,然后才能出现在子表。
     (4)自定义完整性:自己定义的完整性

2,sql server中常用的数据类型
     (1)二进制数据类型:
          binary    固定长度的二进制数据
          varbinary  可变长度的二进制数据
          image     可用来存储图像

(2)文本数据类型
          char  固定长度的字符串,最大长度为8000个字符(一个字符占一个字节)
          varchar   可变长度的字符串
          nchar     固定长度的字符串(一个字符占两个字节)
          nvarchar  可变长度的字符串(一个字符占两个字节)
          text     长文本信息
          ntext     可变长度的文本信息

(3)日期类型
          datetime   日期和时间
     (4)整数
          int ,smalint,tinyint,bigint

(5)浮点数
          decimal,float,real

(6),货币数据类型
          money
     (7),bit数据类型
          表示是/否  1代表true 0代表false

3,约束
     主键约束,默认值约束,标识列,检查约束,外键约束

--------------------------------------第三章  T-SQL编程--------------------------------------------
1,T-SQL的组成:
     (1)DML(数据操作语言):增删改查数据操作
     (2)DDL(数据定义语言):用来建立数据库、数据库对象和定义
     (3)DCL(数据控制语言):用来控制存取许可、存取权限等

2,T-SQL中的条件表达式和逻辑运算符

(1),比较运算符
          =   等于
          >   大于
          <   小于
          >=  大于等于
          <=  小于等于
          <>  不等于
          !   取反

(2)通配符
          _   任意一个字符
          %   任意长度的字符
          []  括号内指定范围的一个字符(只包括数字和字母)
          [^] 不在括号内指定的范围内的一个字符

(3)逻辑表达式
          and   并且
          or    或者
          not   非
     (4)模糊查询(like)
          select * form 表名
          where 列名 like '%许超%'
     (5)len()函数
          获取长度

3,数据基本操作
     增:
          单行:insert into 表名(列名) values(值)
          多行:insert into 表名(列名)
          select 值  union
          select 值  union
          select 值  
     删:
          delete from 表名  where  条件
     改:
          update 表名  set  列名=新值 where 条件
     查:
          select * from 表名  where 条件

4,截断表
     trun cate table 表名
     速度快,不可恢复

5,数据备份
     (1),
          select 列名  into  新表名   from 源表名   (只会备份表结构不会备份表约束)

(2),把现有数据复制到另一个现有的表,必须先建好一章新的表
          insert into 新表名 (新列名)  select 源列名   from  源表名

----------------------------------第四章,T-SQL查询基础--------------------------------------

1,和并列、起别名、查空行、常量列
     合并列和起别名:
          select 列名+列名 as 别名和别名 from 表名
     查空行和查无空行:
          select * from 表名  where 列名 is null or 列名=''
          select * form 表名  where is not null and 列名<>''
     常量列:
          select * form 列名1 as 别名,列名2 as 别名,新值 as 新列名   from 表名

2,限制返回行数(top)
     select top 3 * from 表名

3,排序(order by)
     asc 升序(默认)
     desc 倒叙
     select * from 表名  where 条件   
     order by  列名,可加多列  顺序(ase或desc)

4,消除重复列(distinct)
     select distinct  列名  from  表名

5,函数
     (1)字符串函数
          CharIndex()  用来寻找指定的字符串在另一个字符串中的起始位置。      例:select charIndex('china','inchina',1),返回3
          len()        返回指定字符串的长度                                例:select len('ab'),返回2
          Upper()      将指定的字符串全部大写                               例:select upper('ab'),输出AB
          lower()      将指定的字符串全部大写                               例:select lower('AB'),输出ab
          Ltrim()      清除字符串左边空格                                   例:select Ltrim(' ab'),输出ab
          Rtrim()      清除字符串右边空格                                   例:select Rtrim('ab '),输出ab
          right()      从字符串右边返回指定数目的字符串                      例:select right('abacd',2),返回cd
          left()       从字符串左边返回指定数目的字符串                      例:select left('abacd',2),返回ab
          replace()    替换字符串中的字符                                    例:select replace('china','a','ese'),输出chinese
          stuff()      在一个字符串中删除指定长度的字符,并在该位置插入一个新的字符   例:select stuff('china',2,3,'-'),返回c-a
          substring()  提取字符串                                                例:select substring('abcd',2,1),返回b

(2)日期函数
          getdate()    获取当前系统日期   例:select dateadd(dd,10,getdate())  输出:2015-01-21 20:22:21.783
          dateadd()    在日期的指定部分加上或减去指定的值       例:select dateadd(dd,10,'2015-01-21')   输出:2015-01-31
          datediff()   获取两个日期之间指定部分之差             例:select datediff(yy,'2014-8-15','2015-01-21')  输出:1
          datename()   获取日期中指定的部分,返回字符串类型     例:select datename(mm,'2015-01-21')    输出:01
          datepart()   获取日期中指定的部分,返回int类型        例:select datepart(yy,'2015-01-21')    输出:2015
          year()       获取日期中年的部分                       例:select year('2015-01-21')            输出:2015
          month()      获取日期中月的部分                       例:select month'2015-01-21')        输出:01
          day()        获取日期中日的部分                       例:select day('2015-01-21')          输出:21

注:
     日期的指定部分:
          yy 年
          mm 月
          dd 日
          hh 小时
          mi 分钟
          ss 秒
          ms 毫秒
          dw 星期
          sql server中日期的格式必须为 2015-01-21 或 2015/01/21

(3)数学函数
          abs() 获取数值表达式的绝对值                  例:select abs(-2)  输出:2
          ceiling()  返回大于或等于所给数字的最小整数    例:select ceiling(2) 输出:2    select ceiling(2.1) 输出:3
          floor()    返回小于或等于指定表达式的最大整数   例:select floor(3)  输出3     select floor(3.1)   输出:3
          power()    取数值表达式的幂值                   例:select power(5,2)  输出:25   注:power(底数,幂数)
          round()    将数值表达式四舍五入为指定精度       例:select  round(56.765,1) 输出:56.8
          sign()     正数返回1,负数返回-1,0返回0        例:select sign(-55)  输出:-1
          sqrt()     去浮点表达式的平方根                例:select sqrt(9)    输出:3

(4)系统函数
          convert()  用来转变数据类型    例:select '他的年龄是'+convert(varchar(20),userAge) from users   注:convert(目标类型,'需要转换的值')
          current_user   返回登录的用户名和类型
          host_name      返回当前登录用户的计算机名
          user_name     返回当前登录的用户名类型
          system_user    返回当前登录sql server的用户名
          datalength  返回指定的字节数     例:select datelength('中国A盟')

-------------------------------------第五章 T-SQL 高级查询------------------------------------------------------

1,模糊查询(like)
     select *
     from 表名  where name like  '许%'            //查询所有以许开头的数据
2,查询指定范围内的数据(between and)
     select * from 表名  where id  between 5  and   10     //查询从id从5到10的所有数据,包括5和10
3,使用in在指定集合内查询
     select * from 表名 where name in('许超','李四')      //查询name为许超,或者李四的所有信息
4,聚合函数
     (1)sum()     求和,只能用于数值类型的列
     (2)avg()     求平均数,只能用于数值类型的列
     (3)max()     求最大值,能用于数值类型和字符类型的列
     (4)min()     求最小值,能用于数值类型和字符类型的列
     (5)count()   统计行数,能用于数值类型和字符类型的列

5,分组查询(group by)
     规则:
          (1)如果select后除了聚合函数还有其他列,就必须使用group by
          (2)group by后放除了聚合函数的其他列,都要添加到group by 后面
          (2)where 条件必须写在group by之前,在group by 之后添加条件用 having
          (3)order by 必须在group by后面使用

select stateid as '状态',sum(userpoint) as '积分' from users
          where 条件
          group by stateid

6,使用having分组筛选
     //使用having分组筛选,总积分大于200的用户和人数,并倒叙排序
     select username as '用户',count(*) as '人数' from users
     group by username
     having sum(userpoint)>200
     order by count(*) desc

7,多表连接
     (1)内连接
          1>第一种:在where子句中指定连接条件,实现多表连接
          select a.Statename,b.Rolename,c.username  from state as a,Roleinfo as b,users as c
          where a.stateid=c.stateid and b.reoleid=c.roleid
          2>第二种:在from子句使用 join...no,实现两表连接
          select a.StateName,b.username from
          state as a inner join users as b on a.stateid=b.stateid

(2)外连接
          1>左外连接  left join
          左表中的数据全部显示
          右表中有关系的连成一行
          没有关系的添null

例:
     select a.StateName,b.username from
     state as a left join users as b on a.stateid=b.stateid

2>右外连接  right join
          右表中的数据全部显示
          左表中有对应的拼成一行
          没有对应的补null

例:
     select a.StateName,b.username from
     state as a right join users as b on a.stateid=b.stateid

3>完全外连接  full join
          左表中的数据全部显示
          右表中的数据全部显示
          有对应的拼成一行
          没有对应的补null

例:
     select a.StateName,b.username from
     state as a full join users as b on a.stateid=b.stateid

(3)交叉连接  cross join
          左表中的数据和右表中的数据每次都拼接

例:
     select a.StateName,b.username from
     state as a cross join users as b

Sql Server数据库基础的更多相关文章

  1. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  2. SQL Server 数据库基础笔记分享(下)

    前言 本文是个人学习SQL Server 数据库时的以往笔记的整理,内容主要是对数据库的基本增删改查的SQL语句操作和约束,视图,存储过程,触发器的基本了解. 注:内容比较基础,适合入门者对SQL S ...

  3. SQL Server 数据库基础笔记分享(上)

    前言 本文是个人学习SQL Server 数据库时的以往笔记的整理,内容主要是对数据库的基本增删改查的SQL语句操作和约束,视图,存储过程,触发器的基本了解. 注:内容比较基础,适合入门者对SQL S ...

  4. 【2017-03-09】SQL Server 数据库基础、四种约束

    一.数据库和内存的区别 数据库:一些存储在硬盘上的数据文件 内存:计算机临时存储的一些数据 二.常用数据库 .Net - SQL Server PHP - MySql Java - Oreacl 三. ...

  5. SQL Server数据库基础笔记

    启动和停止SQL Server服务三种形式 后台启动服务 计算机->右键->管理->服务和应用程序->服务->sql server(MSSQLSERVER) SQL Se ...

  6. SQL Server 数据库基础知识

    数据库(Database)是由文件管理系统发展起来的,按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 特点:       尽可能小的冗余度.       具有较高的数据独立性和易扩 ...

  7. sql server 数据库基础知识(二)

    CASE函数用法1:单值判断,相当于switch caseCASE expression WHEN value1 THEN returnvalue1 WHEN value2 THEN returnva ...

  8. sql server 数据库基础知识(一)

    主键(PrimaryKey):主键就是一个表中每个数据行的唯一标识.不会有重复值的列才能当主键.一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键.SQLServer中生成GUID ...

  9. SQL Server 数据库基础编程

    Ø Go批处理语句 用于同时执行多个语句 Ø 使用.切换数据库 use master go     Ø 创建.删除数据库   方法1.   --判断是否存在该数据库,存在就删除 if (exists ...

随机推荐

  1. C# winfrom 模拟ftp文件管理

    从网上找到的非常好用的模拟ftp管理代码,整理了一下,希望对需要的人有帮助 using System; using System.Collections.Generic; using System.T ...

  2. html的target用法

    _blank -- 在新窗口中打开链接 _parent -- 在父窗体中打开链接 _self -- 在当前窗体打开链接,此为默认值 _top -- 在当前窗体打开链接,并替换当前的整个窗体(框架页), ...

  3. Struct和Class的区别

    转载至:http://blog.csdn.net/yuliu0552/article/details/6717915 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数 ...

  4. C++程序设计实践指导1.7超长数列中n个数排序改写要求实现

    改写要求1:将以上程序改写为适合超长整数 改写要求2:将以上程序改写为适合超长数列 改写要求3:将数列中指定位置m开始的n个结点重新按降序排序 改写要求4:输出指定位置m开始的n个结点的超长整数 #i ...

  5. Django 模板中引用静态资源(js,css等)

    Django 模板中免不了要用到一些js和CSS文件,查了很多网页,被弄得略晕乎,还是官网靠谱,给个链接大家可以自己看英文的. https://docs.djangoproject.com/en/1. ...

  6. WeUI

    从WeUI学习到的知识点   WeUI是微信Web服务开发的UI套件, 目前包含12个模块 (Button, Cell, Toast, Dialog, Progress, Msg, Article, ...

  7. SQL Server 对象

    第一项:重命名对象 execute sp_rename @objname='Nums',@newname ='Numbers',@objtype ='object'; go 这里要特别小心   @ne ...

  8. ISSkin Pack 3.0 (含预览程序 ISSkinViewer)

    原文 http://restools.hanzify.org/article.asp?id=108 包含 250 款皮肤, 预览程序纯粹的由Inno Setup脚本写成. 足以展示Inno Setup ...

  9. 简单方便又实用的在线作图工具:ProcessOn

    说到Visio大家都不陌生,虽然没有Word那么火,但很多业内朋友都在用,一用就是好多年,Visio是相对比较传统和专业的工具,新手在没人指导的情况下一般很难上手,下载和安装以及“授权”都是个问题,很 ...

  10. Bag of Words(BOW)模型

    原文来自:http://www.yuanyong.org/blog/cv/bow-mode 重复造轮子并不是完全没有意义的. 这几天忙里偷闲看了一些关于BOW模型的知识,虽然自己做图像检索到目前为止并 ...