版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京传智播客教育数据库开发及ADO.Net 老赵课前说明->课程进度->数据库基本概念与基本的T-SQL语言->ADO.Net->T-SQL其他语法什么是数据库?Database?DB?数据库Database:数据的仓库。超市里有排货架(表),货物会分类存放。比如牙膏会放到一个排货架上,面包会单独放在一个排货架上。仓库又分很多种粮仓、武器仓库。仓库中还会有仓库管理员(DBA)对货物进行管理从仓库中拿货物需要凭证,取货和进货的人(程序员)为什么要用数据库?回忆基础班的超市收银系统怎样存储数据的?(文本文件或者xml)用计算机文件存储数据的缺点:很痛苦,开发人员需要熟悉操作磁盘文件的方法、必须编写复杂的搜寻算法才能高效的把数据从文件中检索出来、当数据格式发生变化时,需要编写复杂的文件格式升级程序、很难控制并发修改。举例:启动两个超市收银系统exe软件会出现并发修改同一个文本文件的问题。问题:编程困难而且很多重复性工作,数据量大了后查询非常慢,并发处理很困难。那怎么解决这些问题呢?数据库(其实也是由存储数据的文件文件组成),DBMS(数据库管理系统)对于数据不仅仅是需要存储,更重要的是将数据进行存储以后怎么才能方便快捷的查询、修改。数据库特点:海量存储、查找速度快、并发性问题控制、安全性、数据完整性(保存在数据库中的数据是正确的)。数据库概述DBMS(DataBaseManagementSystem,数据库管理系统)和数据库。平时谈到“数据库”可能有两种含义:MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog)。不同品牌的DBMS有自己的不同的特点:MYSQL(速度很快,适合对数据要求并不是十分严谨的地方,去掉了很多中小型企业中不常用的功能)、MSSQLServer(与.net结合的最好)、DB2(大型)、Oracle(大型)、Access(文件)、SQLite(极其轻量级文件数据库)、Sybase等。对于开发人员来讲,大同小异SQL(语言)<>SQLServer<>MSSQLServer。最常见的错误。除了Access、SQLite等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习、开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器。数据库中的概念数据库DataBase,不同类的数据应该放到不同的数据库中便于对各个数据类别的进行个性化管理避免命名冲突安全性更高Table(表):关系数据库中的关系指的就是表。不同的货物要放到各自的货物架,将这种区域叫做“表”(Table)。不同的表根据放的数据不同进行空间的优化,找起来也方便。列(Column)、字段(Field)、行(Row)用表格格式化数据:即便是引入了自动识别设备也很容易识别。2003年5月入职,是产品开发部的,姓名马小虎王二小,技术支持部,入职是2005年7月姓名马小虎部门开发部入职时间2008.06.06姓名部门入职时间张三开发2002主键(PrimaryKey)工号姓名部门入职时间001风姐员工培训部2010年7月5日002憨憨公关部2010年8月2日003憨憨开发部2009年3月5日主键就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),因此推荐用逻辑主键。GUID:全球唯一标识。表间关联、外键(ForeignKey)编号商品名价格厂家编号001大大香瓜子5.00001002大大开心果15.00001003苦咖啡2002004随变3002005冰工厂1002商品名价格生产厂家厂家地址厂家电话香瓜子5.00大大食品厂恰恰大街300号010-123456大大开心果15.00大大食品厂恰恰大街300号010-123456苦咖啡2伊利食品厂内蒙古伊利路1号400400400随变3伊利食品厂内蒙古伊利路1号400400400冰工厂1伊利食品厂内蒙古伊利路1号400400400编号名称地址电话001大好食品厂恰恰大街300号010-123456002伊利食品厂内蒙古伊利路1号400400400SQLServer的管理需要安装SQLServer2005\2008R2\2012\..,若要使用SQLServer管理工具进行开发还要安装SQLServerManagementStudio,还可以使用VisualStudio进行管理。使用免费的SQLServerExpress版本,Express版本的服务器名称.\SQLEXPRESSSQLServer的两种验证方式:Sql用户名验证和Windows验证,开发时必须用Sql用户名验证就行。开发人员关注点在开发上,数据的查询,优化,数据逻辑的实现,而不是配置、数据库安全等之上,那是DBA做的事情。启用sa账户->安全性->登录名->设定密码与启用->数据库->右键属性->安全性->重启数据库SqlServer的实例名实例名是用来区分安装在同一台机器上的不同的数据库服务的。连接和登陆数据库的时候要指定连接到服务器的具体的某个实例服务。格式:机器名[\实例名]例如:一台电脑上可以运行多个QQ,那么电脑收到QQ消息后是怎么区分是哪个QQ账号收到的消息呢?(local)和.还有都可以代表本机可以使用机器名或者IP地址来指定要链接的具体数据库的服务器,必须启用sql的tcp/Ip服务协议。案例演示:创建数据库创建数据库,创建表,设置主键标识列(自动增长)演示数据库的分离和附加MSSQLServer的每个数据库包含:1个主数据文件(.mdf)必须。1个事务日志文件(.ldf)必须。案例创建<部门表>:部门Id,部门名称<员工表>:员工Id,身份证号,姓名,性别,入职日期,年龄,地址,电话,所属部门、Email分类备注和说明类型说明二进制数据类型存储非子符和文本的数据Image可用来存储图像文本数据类型字符数据包括任意字母、符号或数字字符的组合Char,8000固定长度的非Unicode字符数据。固定长度的字符串相对于可变长度的字符串来说效率要高一些,在数据长度固定的情况下优先选用固定长度,省去了计算长度的过程,提高效率Varchar,8000可变长度非Unicode数据Nchar,4000固定长度的Unicode数据Nvarchar,4000可变长度Unicode数据Textvarchar(max)存储长文本信息(指针,2G)varchar(max),大字符串类型可以保存非常多的字符,但是对于这种类型的数据DBMS经常将它们保存到单独的空间中,这就导致了数据的保存和加载速度比较慢,因此除非必要,否则不要使用。Ntextnvarchar(max)Nvarchar(max)代替日期和时间日期和时间在单引号内输入Datetime日期和时间数字数据该数据仅包含数字,包括正数、负数以及分数intsmallint整数floatreal数字货币数据类型用于十进制货币值,money和smallmoney数据类型精确到它们所代表的货币单位的万分之一。MoneyBit数据类型表示是/否的数据Bit存储布尔数据类型练习创建一个School数据库。创建一个班级表:TblClass:tClassId(班级编号,自动编号,主键)、tClassName(班级名称)、tClassDesc(班级简介)。创建一个学生信息表:TblStudent:tSId(学生编号,自动编号,主键)、tSName(学生姓名)、tSGender(性别)、tSAddress(家庭地址)、tSPhone(电话)、tSAge(年龄)、tSBirthday(出生日期)、tSCardId(身份证号)、tClassId(班级Id)分离数据库在需要分离的数据库上点右键-任务-分离附加数据库(在其他计算机上,亲自测试!)在数据库节点上点右键-附加打开数据之前,要打开数据库服务SQL语句入门(脚本、命令)SQL
全名是结构化查询语言(StructuredQueryLanguage),是关系数据库管理系统的标准语言SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法。Mssql,mysql,oracle等对标准sql都兼容。类比:C#→操作系统Sql→数据库(*)SQL主要分DDL(数据定义语言,建表、建库等语句。)、DML(数据操作语言)和DCL(数据库控制语言)。CreateTable、DropTable、AlterTable等属于DDL,Select、Insert、Update、Delete等属于DML,GRANT授权、REVOKE取消授权属于DCL基本SQL:创建表,查询,插入数据SQL语句中字符串用单引号、单等号。select*、SeLeCT*:SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的--在数据库中两个'表示一个‘【''转义‘】建库、删除数据库、创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多Createalterdrop属于DDLselectinsertUpdateDelete属于DML创建表:createtable表名(列1类型是否可空,列2….)->查询数据select字段from数据表; 案例使用sql语句创建数据库和表使用SQL语句创建School数据库、ClassInfo表、Student表。Go:将T-SQL语句分批发送到数据库实例执行。Student表的列,请根据实际情况自定义数据类型和长度 StudentId StudentName StudentGender StudentAddress StudentPhone StudentAge StudentBirthday StudentCardId StudentClassId作业一:创建表练习创建数据库TestSchool--tSId-- tSName-- tSGender-- tSAddress-- tSPhone-- tSAge-- tSBirthday-- tSClassId--创建一个学生表TblStudent创建学生成绩表TblScoretScoreId(成绩id,主键,自动编号)、tSId(学生编号)、tEnglish(英语成绩)、tMath(数学成绩)创建老师表TblTeachertTId、tTName、tTGender、tTAge、tTSalary、tTBirthday介绍生成脚本工具数据库→右键→任务→生成脚本可选择生成什么样的脚本选择生成的数据库版本是否包含某些脚本等。是否生成带数据的脚本(2005、2008都有该功能express没有。)数据插入向表中插入一行(该行的每一列都有数据)insertinto表(列名,列名)values(值1,值2)insert语句可以省略表名后的列名,但是不推荐。Insertinto表values(值1,值2)插入数据时,只向某些列插入数据:如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。Insertinto表(列1)values(值1)自动编号列不需要手动插入。【SETIDENTITY_INSERT表名ON
】注意:主键不能有重复值。插入数据时的单引号问题。Insertinto表(列)select列1,列2unionInsertinto表(列)select列1,列2from表Select列into新表名from旧表N前缀:N’字符串’,在服务器上执行的代码中(例如在存储过程和触发器中)显示的Unicode字符串常量必须以大写字母N为前缀。即使所引用的列已定义为Unicode类型,也应如此。如果不使用N前缀,字符串将转换为数据库的默认代码页。这可能导致不识别某些字符。在Northwind数据库下测试print‘中文中文’数据更新(数据修改)更新一个列:updateStudentsetsSex=‘男’更新多个列:updateStudentsetsSex='女',sAge=18,sBirthday='1989-8-8'更新一部分数据:updateStudentsetsClassId=4wheresClassId=1,用where语句表示只更新Name是’tom’的行,注意SQL中等于判断用单个=,而不是==。Where中还可以使用复杂的逻辑判断updateStudentsetsAge=30wheresName='华佗'orsAge<25,or相当于C#中的||(或者)所有学生的年龄加1updateStudentsetsAge=sAge+1updateStudentsetsClassId=6where(sAge>20andsAge<30)or(sAge=50)Where中可以使用的其他逻辑运算符:(||)or、(&&)and、(!)not、<、>、>=、<=、<>(或!=)等数据删除删除表中全部数据:DELETEFROMStudent。Delete只是删除数据,表还在,和DropTable不同。Delete也可以带where子句来删除一部分数据:DELETEFROMStudentWHEREsAge>20truncatetablestudent的作用与deletefromstudent一样,都是删除student表中的全部数据,区别在于:1.truncate语句非常高效。由于truncate操作采用按最小方式来记录日志,所以效率非常高。对于数百万条数据使用truncate删除只要几秒钟,而使用delete则可能耗费几小时。2.truncate语句会把表中的自动编号重置为默认值。3.truncate语句不触发delete触发器。4.truncate语句删除的数据不可恢复,因为没有记录日志!!!练习:插入几条老师信息和成绩、用SQL插入几条员工信息(注意:bit类型,在写代码中用1或0来表示,不要用’false’,会进行类型转换的。)练习1:给studentId是1的英语成绩加10分练习2:考试题偏难,所有人的成绩加5分练习3:所有女学生的年龄减1岁删除工资大于2000的老师============将老师表清空========删除所有老师删除数据时候把自增长列的值还原成种子约束-保证数据完整性先用设计器创建约束、再用代码创建约束。非空约束主键约束(PK)
primarykeyconstraint唯一且不为空唯一约束(UQ)uniqueconstraint唯一,允许为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西柳州柳北区锦绣街道办事处招聘公益性岗位1人参考考试题库及答案解析
- 2025河南新乡封丘县建勋学校招聘备考笔试题库及答案解析
- 2025山东阳昇甄选产业运营有限公司选聘7人考试参考试题及答案解析
- 2025年杭州市临安区第三人民医院招聘编外工作人员2人备考笔试试题及答案解析
- 2025甘肃嘉峪关市第三幼儿园招聘公益性岗位人员2人备考考试题库及答案解析
- 2025广东中山大学肿瘤防治中心肝脏外科陈敏山教授课题组自聘技术员招聘2人参考考试试题及答案解析
- 美业聘用合同范本
- 职业病禁忌协议书
- 职工非工亡协议书
- 联合摄制合同范本
- 卓有成效的管理者要事优先
- 生产车间安全管理检查表及整改措施
- 电厂标识系统KKS编码说明pdf
- 2023年郴州职业技术学院单招职业倾向性考试题库及答案详解1套
- 2025年福建省综合评标专家库考试题库(二)
- 完整版医疗器械基础知识培训考试试题及答案
- 220kV电网输电线路的继电保护设计
- 《无人机地面站与任务规划》 课件全套 第1-9章 概论 -无人机内业数据整与处理
- 屋顶光伏承重安全检测鉴定
- 长输管道项目验收总结与报告
- 2025年高考数学真题分类汇编专题03 三角函数(全国)(解析版)
评论
0/150
提交评论