• ADO.NET(一)


    一:数据库设计

    1、数据库解决的问题:持久化存储,优化读写,保证数据的有效

    2、关系型数据库:先来学习一下E-R模型(E:Entity,R:Relationship,实体关系模型),后面再说NOSQL非关系型数据库

    3、数据库分类:文档型(例如SQLite,用于移动开发)。服务型(ex:SQL Server)

    4、三范式:列不可拆分,必须有唯一标识,表之间引用主键

    5、关系及存储
      1对1:1个对象A对应着1个对象B,1个对象B对应着1个对象A
      关系可以存入A或B对象中(例如:国家规定的夫妻关系)
      1对多:1个对象A对应着n个对象B,1个对象B对应着1个对象A
      关系存入B对象中(学生和班级,一个班级可以有多个学生,但一个学生只许有一个班级)
      多对多:1个对象A对应着n个对象B,1个对象B对应着m个对象A
      关系存入新建的一个关系表中(学生和选课, 1个学生可以有多门选课,一门选课可以有多个学生)

    6、字段类型介绍:int,bit,datetime,decimal(5,2),char/varchar/nvarchar
      字符串类型n的区别:有n表示unicode编码,每个字符占一个字节;
      没有n表示非unicode编码,英文或数字占一个字节,中文占两个字节
      字符串类型var的区别:有var表示可变长度
      没有var表示不可变长度,如果长度不够,会在末尾补空格
      如果选择int值时,可以设置标识:此列的值为系统帮助维护,更轻松的实现唯一标识

    7、约束:主键约束,非空约束,唯一约束,默认约束,检查约束,外键约束,在这里只说一下容易搞混淆的外键约束

      外键约束:就是对关系进行约束,例如UserInfo表与ActionInfo表,两表是多对多的关系,那么在中间表

      UserInfoActionInfo中给ActionInfoID这个字段添加一个外键约束,就可以达到检查ActionInfoID这个字段,ActionInfoID对应的就是ActionInfo的ID字段

      所以ID字段是由ActionInfo这个表决定的,所以ActionInfo就是主键表。UserInfoActionInfo就是外键表

      总结一句话:外键约束,给哪个字段添加外键约束,那该字段的值由哪个表决定的,那么这个表就是主键表,其他就是外键表,添加外键约束后

      如果该字段的值在主键表找不到,那么就报错,约束用户无法完成添加

    8、脚本操作

      -》不区分大小写,字符串使用单引号,末尾不需要加分号

      -》按照功能分类:
      DDL:数据定义语言,用于进行各种数据库对象的创建,主要操作包括create、alter、drop
      DML:数据管理语言,用于对表数据的添加、修改、删除、查询,主键操作包括insert、update、delete、select
      DCL:数据控制语言,用于进行权限分配等

      -》注释:--单行注释,/**/多行注释

      -》数据库:

      显示当前存在的所有数据库:select * from sysdatabases

      创建:
      create database 数据库名
      on primary
      (
      name='stuDB_data', -- 主数据文件的逻辑名称
      filename='D:stuDB_data.mdf', -- 主数据文件的物理名称
      size=5mb, --主数据文件的初始大小
      maxsize=100mb, -- 主数据文件增长的最大值
      filegrowth=15%--主数据文件的增长率
      )
      log on
      (
      name='stuDB_log',
      filename='D:stuDB_log.ldf',
      size=2mb,
      filegrowth=1mb
      )

      删除:
      drop database 数据库名

      -》使用数据库:use 数据库名

      -》表:创建、修改、删除
      通过select * from sysobjects where xtype='U'可以查看所有存在的表
      多个列间使用逗号分隔
      主键:primary key
      非空:not null
      惟一:unique
      默认:default()
      检查:check()
      外键:foreign key(列名) references 表名(列名)

    9、表数据的操作
      -》简单查询:select * from 表名
      -》增加数据:insert into 表名(列名) values(值)
      说明1:要求值的列名与值要位置对应
      说明2:如果所有列都插入值,可以省略列名部分

      批量插入数据:
      select * from 表名
      insert into 表名(列名1,列名2)
      values('值1','值2')

      -》修改数据:update 表名 set 列名1=值1,列名2=值2... where ...
      -》删除数据:delete from 表名 where ...
      删除表用这个比delete快:truncate table 表名
      说明:from关键字可以省略不写
      通常实现:逻辑删除,物理删除

    10、常用辅助命令及快捷键
      set statistics time on/off:在消息栏显示详细执行时间
      ctrl+e执行
      ctrl+r隐藏消息栏
      ctrl+l计划任务,对sql语句进行分析

    11、查询
      -》排序:select top 2 percent * from StudentInfo order by 字段1 asc|desc,字段2 asc|desc...,先按字段1排,如果字段1相等再按字段2排
      -》消除重复行:distinct
      -》条件查询:写在where后面
      对行进行筛选,返回bool类型的值,如果某行中的列数据满足条件,则加入结果集,否则不出现在结果集中
      比较运算符:=,>,>=,<,<=,!=或<>
      between ... and ...表示在一个连续的范围内
      in表示在一个非连续的范围内
      逻辑运算符:and,or,not
      模糊查询:用于处理字符串类型的值,运算符包括:like % _ [] ^
      %与_写在[]中表示本身的含义
      在[]表示一个连续的范围可以使用-
      ^写在[]内部的开头,表示不使用内部的任何字符
      null的判断:使用is null或is not null,与其它值计算时返回null,排序时null被认为是最小
      优先级:小括号,not,比较运算符,逻辑运算符

    12、多表连接:当需要的结果在多张表里面就要用连接查询,关键是两表中的对应关系,例如现在有科目表,学生表,分数表,班级表,要求出小明所在的班级,科目,分数 

      select class.cTitle,stu.sName,sub.sTitle,score.scoreValue
      from ScoreInfo as score
      inner join StudentInfo as stu on score.stuId=stu.sId
      inner join SubjectInfo as sub on score.subId=sub.sId
      inner join ClassInfo as class on stu.cid=class.cId

      内连接:inner join,两表中完全匹配的数据
      左外连接:left join,两表中完全匹配的数据,左表中特有的数据
      右外连接:right join,两表中完全匹配的数据,右表中特有的数据
      完全外连接:full join,两表中完全匹配的数据,左表中特有的数据,右表中特有的数据

    13、聚合函数对行数据进行合并
      常用聚合函数:sum,avg,count,max,min,一般是对数字类型的列进行操作
      
      一条查询中可以同时写多个聚合函数,但是不能与普通列混写
      聚合中的null问题:不参与计算
      --需求:求出语文科目的平均分
      关键要分析需求看用到哪些表,首先语文在科目表,成绩在分数表,所以肯定要连表查询,用到SubjectInfo,ScoreInfo
      最后连表查询出结果后,对结果avg(scoreValue)进行求平均分
      select AVG(scoreValue)
      from SubjectInfo
      inner join ScoreInfo on subId=SubjectInfo.sId
      where sTitle='语文'

    14、开窗函数over()
      将统计出来的数据分布到原表的每一行中
      结合聚合函数、排名函数使用

    15、分组group by 列名1,列名2..

      聚合函数一般结合分组使用,进行分组内的数据进行统计
      根据指定列进行分组
      分组后条件筛选:having ...

    16、联合查询将多个查询的结果集合并成一个结果集(跟联表inner join这些不一样,联表是要的结果在多个表内,所以要联起来查才能得到,union是把平时查到的那些结果汇总)
      联合要求:
      结果集列数要一致
      对应列的类型要一致
      联合查询关键字:union、union all、except、intersect
      用处:在查询结果处显示汇总

  • 相关阅读:
    【C语言期末实训】学生学籍管理系统
    【我要学python】愣头青之小数点精度控制
    【吾爱破解第二期】操作学习笔记
    【吾爱破解第一期】破解基础知识之认识壳与程序的特征
    【linux入门必备】小白需要掌握的基础知识_不定期更新
    【我要学python】爬虫准备之了解基本的html标签
    【我要学python】愣头青之初安装就打了一记耳光
    【我要学python】MethodType和isinstance和Type函数
    【我要学python】面对对象编程之继承和多态
    【我要学python】open函数的简单用法
  • 原文地址:https://www.cnblogs.com/BOSET/p/7077423.html
Copyright © 2020-2023  润新知