前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

SqlServer2005学习总结

首页2016-05-17 17:42:17DataBase
sql

# 第一部分:数据库相关概念

什么是数据库

  • 狭义:

  • 存情数据的仓库

  • 广义:

  • 可以对数据进行存储和管理的软件以及数据本身统称为数据库

数据库是由表、 关系、 操作组成

为什么需要数据库

  • 几乎所有的应用软件的后台都需要数据库

  • 数据库存储数据占用空间小容易持久保存

  • 存储比较安全

  • 容易维护和升级

  • 数据库移植比较容易

  • 简化对数据的操作

  • 为将来学习0racle做准备

  • B/s架构里面包含数据库 数据库的安装和卸载

  • sq12000

  • 解决挂起的问题

预备知识

  • 学习SqlServer2005必须的先学一门编程语言么
  • 不需要,但是懂一门编程语言的话会有助于学习sqlserver2005 的TL SQ

数据结构和数据库的区别

  • 数据库是在应用软件级别研究数据的存储和操作数据结构是在系统软件级别研究数据的存储和操作

什么是连接 【重点】

  • 有了编程语言为什么还需要数据库
  • 对内存数据操作是编程语言的强项, 但是对硬盘数据操作却是编程语言的弱项对硬盘数据操作是数据库的强项, 是数据库研究的核心同题

建议初学者从三个方面学习数据库数据库是如何存储数据的

  • 字段记录表约束(主键外键唯一键非空 check default触发器)

  • 数据库是如何操作数据的 insert update delete T-SQL 存储过程函数触发器

  • 数据库是如何显示数据的 select(重点的重点)

必各的一些操作

  • 如何建数据库
  • 如何删除数据库
  • 如何附加和分高数据库
  • 设置登录用户名和密码
  • 如何创建用户

数据库是如何解决数据存储问题的 【最基础内容, 必须掌握】

1.表的相关数据

  • 字段

  • 一个事物的某一个特征

  • 记录

  • 字段的组合表示的是一个具体的事物

  • 表

  • 记录的组合表示的是同一类型事物的集合

表和字段、记录的关系

  • 字段是事物的属性

  • 记录是事物本身

  • 表是事物的集合

  • 列

  • 字段的另一种称谓

  • 属性

  • 字段的另一种称谓

  • 元组

  • 记录的另一种称谓

2. create table命令

  • 通过图形化界面建表 create table最后一个字段的后面建议不要写逗号说明:简単掌握后面我们会再详细的介绍

3. 什么是约束

  • 定义

    • 对一个表中属性操作的限制叫做约束
  • 分类

  • 主键约束 不允许重复元素選免了数据的冗余

  • 外键约束

    • 通过外键约束从语法上保证了本事物所
    • 关联的其他事物一定是存在的

事物和事物之间的关系是通过外键来体现的

  • check约束

  • 保证事物属性的取值在合法的范围之内

  • default约束

  • 保证事物的属性一定会有一个值

  • 唯一约束

  • 保证了事物属性的取值不允许重复,但允许其中有一列且只能有一列为空

间题:

ul,i que键是否允许多列为空?

答:

  • SqlServer2005只允许一个uni que列为空
  • Oracle1 IG允许多个uni que列为空

not null

  • 要求用户必须的为该属性赋一个值,否则语法出错!

  • 如果一个字段不写n,11也不行not n,11

  • 则默认是rm11即默认允许为空,用户可以不给该字段赋值

  • 如果用户没有为该字段赋值,则该字段的值默认是nd1

要注意nu11和 default的区别

  • 相同点:
  • 都允许用户不赋值
  • 不同点:
  • nu11修饰的字段如果用户不赋值则默认是nu1 1
  • default修饰的字段如果用户不赋値则默认是default指定的那个值

4. 表和约束的异同

  • 数据库是通过表来解决事物的存備同题的

  • 数据库是通过约束来解决事物取值的有效性和合法性的问题

  • 建表的过程就是指定事物属性及其事物属性各种约束的过程

  • 什么是关系

  • 定义: 表和表之间的联系

  • 实现方式

  • 通过设置不同形式的外键来体现表和表的不同关系

  • 分类(假设是A表和B表)

  • 一对一 既可以把表A 的主键充当表B的外键 也可以把表B的主键充当表A的外键

  • 一对多【重点】 把表A 的主键充当表B的外键 或者讲: 把A表的主键添加到B表来充当B表的外键

在多的一方添加外键

  • 多对多 多对多必须的通过単独的一张表来表示

例子

  • 班级和教师
  • 班级是一张表
  • 教师是一张表
  • 班级和教师的关系也是一张表

6. 主键

  • 定义

  • 能够唯一标示一个事物的一个字段或者多个字段的组合, 被称为主键

  • 主键的特点【重点】:

  • 含有主键的表叫做主键表

  • 主键通常都是整数不建议使用字符串当主體(如果主體是用于集群式服务,才可以考虑用字符串当主體)

  • 主键的值通常都不允许修改, 除非本记录被删除

  • 主键不要定义成i d, 而要定义成表名 Id或者表名_i d

  • 要用代理主键,不要用业务主键

  • 任何一张表, 强烈建议不要使用有业务含义的字段充当主键

  • 我们通常都是在表中単独添加一个整型的编号充当主键字段

  • 主键是否连续增长不是十分重要

7. 外键

  • 定义:
  • 如果一个表中的若干个字段是来自另外若干个表的主键或唯一键 则这若干个字段就是外键

注意:

  • 外键通常是来自另外表的主键而不是唯一键, 因为唯一键可能为M11
  • 外键不一定是来自另外的表, 也可能来自本表的主键
  • 含有外键的表叫外建表, 外键字段来自的那一张表叫做主键表

问题:

  • 先删主键表还是外建表?

答集: 先删外建表 如果先删主键表,会报错,因为这会导致外建表中的数据引用失败


# 第二部分:查询

査询【最重要难度最大,考试必考内容,强烈建议所有的学生都要熟练掌握査询的内容】

1.计算列

select* from emp;

  • – *表示所有的
  • – from emp 表示从emp表査询

select empno, ename from emp

seleot ename, sa1 from emp;

  • select ename, sa1*12 as″年薪″ from emp;

  • –as可以省略记住:″年薪″不要写成’年薪’也不要写成年薪

  • select ename, sa1*12 as″年薪″, sa1″月薪″, job from emp;

select888 from emp; –ok -一输出的行数是emp表的行数 每行只有一个字段,

select5; --ok -一不推荐

注意:

  • 在0racle中字段的别名不允许用单引号括起来
  • 但是sqlserver2005却允许,因此为了兼容性 -最好字段别名用双引号括起来, 不要用单引号

2. distinct【不允许重复的】

select distinct deptno from emp; --distince deptno会过滤掉重复的deptno select distinct comm from emp; –distinct也可以过滤掉重复的nu11 或者说如果有多个nu11只输出一个 select distinct comm, deptno from emp;-一把comm和deptno的组合进行过滤select deptno, distinct comn from emp1–error逻辑上有冲突

3. between【在某个范围】

  • -一査找工资在1 500到3000之间(包括和)的所有的员工的信息
fe
  • 第一部分:数据库相关概念
  • 第二部分:查询

← HTML5+CSS3 最酷的 loading 效果收集7种常用的排序算法总结 →