博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#面向对象之数据库(理论、插入、修改、删除、查询)
阅读量:6344 次
发布时间:2019-06-22

本文共 4346 字,大约阅读时间需要 14 分钟。

1.数据库的作用:不仅仅是存储,更重要的是将数据进行存储以后怎么样才能方便快捷的查询修改

2.数据库的特点:海量存储、查找速度快、并发性问题控制、安全性、数据完整性(保存在数据库中的数据是正确的、真是的)

3.数据库管理软件:SQL Server Management System

  数据库软件:SWL Server以服务的方式存在

  数据库文件:itcast.mdf

  管理软件向数据库服务发出指定,数据库服务指向到具体的数据库文件

4.SQL 是一种语言 结构化查询语言

   SQL Server也是一种语言,MSSQLServer微软的数据库

   安装了服务器软件的机器就叫做服务器

5.不同的数据应该放到不同的数据库中:

   便于对各个数据类别的进行个性化管理(分布式部署)

   避免命名冲突、安全性更高

6.Table:关系数据中的关系指的就是表。不用的货物要放到各自的货物架,将这种区域叫做表,不同的表根据放在数据不同进行空间的优化,找起来也方便

Column:实体记录

用表格格式化数据:即便是引入了自动识别设备也很容易识别

7.主键(PrimaryKey):就是数据行的唯一标识。不会出现重复数据的列才能当主键。一个表可以没有主键,但会非常难以处理,因此没有特殊理由表都要设定主键
业务主键和逻辑主键。业务主键是使用有业务意义的字段作为主键;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的。一般推荐逻辑主键。
8.Master:记录系统的所有系统级别信息
Tempdb:保存所有的临时表和临时存储过程以及临时生成的工作表
9.数据存放在数据文件中(.mdf),对数据文件的每一次操作都记录在日志文件中(.ldf),存放日志记录
10.主数据文件和次数据文件
11.DATALENGTH 实际上存储的字节数
LEN 字符的个数
用char和Nchar时若输入的数据未达到指定的长度,则用空格填充
text其实在数据库里面存储的是一个指针,数据是存在另外一个地方的
null代表可以不输入值

12.

1 //数据的插入(INSERT INTO),如果有自动增长的字段,不需要给值 2 INSERT INTO class VALVE('广州','很好') 3 //如果指定列名插入数据那么没有被指定的列名 要么允许为null 要么有默认值 4 INSERT INTO student (Name,Gender) VALUES('xiao',1) 5 //如果没有指定列名,那么就表示是为全部的列名插入数据,就要每个列名都要指定数据(除了自动增长的) 6 INSERT INTO class VALUE ('','',2010-2-10) 7 // 如果就是要插入数据为null,那么就把值写为null,前提是这个列允许为null. 8 INSERT INTO class VALUE('',null,2010-2-19) 9 //如果要使用默认值可以使用DEFAULT代表这个字段的默认值,前提是要有默认值10 INSERT INTO class VALUE('',null,default)11 //将选出来的数据插入到指定的数据库中 选出来的数据的列数和插入进去的列数要保持一致12 INSERT INTO class SELECT Name ,[DESCRIPTION],Addtime FROM classes

 

架构:只会导入表的结构

架构和数据选项:不仅导入结构,还能导入数据
GO:分批次的执行语句,将第一个GO与第二个GO之间的内容先发送出去执行,执行完之后再继续执行下一个GO
将选出来的数据插入到指定的数据库中,选出来的数据的列数和插入进去的列数要保持一致,类型也要匹配,如果满足自动转换的条件那么会

自动转换

insert into classes(Name)select Name FROM classes
复制旧表数据到新表,自动创建新表 只会复制数据 但是列的属性是不会复制的 select * into 新表 from 旧表
如果新表名存在则报错
在存储过程和触发器中显示的Unicode字符串常量必须以大写字母N为前缀
新插入数据的时候,主键不能重复
13.数据的更新修改(UPDATE)

//修改表的全部记录的字段的值UPDATE class SET [description]=N'很好'//修改制定的行的指定的列的值UPDATE class SET [description]=N'很好' WHERE Id=7//修改符合多个条件的行的值(AND相当于&& OR相当于||)UPDATE class SET [description]=N'很好' WHERE Id=7 OR Id=9//修改符合1个范围内的指定的值UPDATE class SET [description]=N'很好' WHERE Id<10//修改符合1个范围内的指定的值,时间可以用运算符来比较UPDATE class SET [description]=N'很好' WHERE Addtime<'2012-10-25'//判断不等于UPDATE class SET [description]=N'很好' WHERE Id!=7 只能在2008的版本可用//判断不等于的常用方式UPDATE class SET [description]=N'很好' WHERE Id<>7 //判断两个并列条件 AND 操作UPDATE class SET Addtime=GETDATE() WHERE Name=N‘广州’AND [description]='很好'//要修改多个列,用‘,’隔开 UPDATE class SET Name=N'广州',[description]=N'哈哈',Addtime=GETDATE() WHERE id=7;//判断相等是用1个等号,字符串是用‘’引起来的//在原有的基础上取值并修改UPDATE class SET [count]=[count]+5 WHERE Id=4// 在原有的基础上取值并修改,'+'表示连接UPDATE class SET name=name+N'好厉害' WHERE Id=4// 优先级 not and or,用括弧可以改变优先级UPDATE class SET [description]=N'你好你好你好' WHERE id=1 OR (name='广州' AND [count]=55)//WHERR中可以用到其他的逻辑运算符:NOT、 AND 、OR、 <= 、>= 、<>、 != 、=

 

  数据的删除

//删除符合条件的行DELETE FROM class WHERE Id=4// 删除整个表中的数据DELETE FROM class// delete语句中FROM是可以省略的DELETE class WHERE Id=1//删除指定范围的DELETE class WHERE Id<10ID自动增长 如果删除记录再新增,ID将不会紧接在后面,是根据最后一次产生的ID数//删除表并且重置自动增长列TRUNCATE TABLE classDELETE 和 TURNCATE的区别//DELETE删除的时候,不会重置自动增长列,效率较低 TRUNCATE要重置自动增长列,语句非常高效,语句不触发delete触发器//DELETE删除的时候 每删除1条记录 都会在日志文件里面保存1条记录 TRUNCATE在日志文件里只保存1条记录,少量记录的时候用DELETE//DROP是删除整个表 DELETE和TRUNCATE是删除表里的数据DROP TABLE class

 

15.约束-保证数据完整性

数据库约束是为了保证数据的完整性(正确性)而实现的一套机制 
非空约束
主键约束(PK) primary key constraint唯一且不为空
唯一约束(UQ) unique constraint 唯一允许为空,但只能出现一次
默认约束(DF) default constraint 默认值
检查约束(CK) check constraint 范围以及各式限制
外键约束(FK) foreign key constraint 表关系:保证外键值来源于主键
增加外键约束是,设置级联更新、级联删除,外键表里的外键必须在主键表中存在
如果要删除主键表,必须先删除外键表中所有引用主键表中的数据

16.数据检索

//查询指定表中所有的行和列,不建议使用*,因为会进行两次查询 1次是去系统表中查询表中所有的列名,1次是到表中查询列名对应的数据SELECT * FROM Student//查询指定的列SELECT Name,Xingbie FROM Student//取别名 结果集 AS关键字可以省略 但一般不建议SELECT Name AS 姓名,Xingbie AS 性别 FROM student//限定条件的查询SELECT Name,Gender FROM Student WHERE Name=N‘杨’SELECT * FROM Student WHERE Age>18//检索常量或者表达式的值SELECT 1+1;SELECT GETDATE() AS 当前时间//[]标识符 //获取指定结果中的前三条--topSELECT TOP 3 * FROM Student //对结果集进行排序 默认是升序asc 降序是descSELECT * FROM Student ORDER BY age ASC/DESC//对条件排序 前面的一样才会去排后面的SELECT * FROM Student ORDER BY age ASC,ID DESC//取年龄最大的三个人SELECT TOP 3 * FROM Student ORDER BY Age ASC//取前面百分之三十SELECT TOP 30 PERCENT * FROM Student ORDER BY Age ASC//DISTINCT去除重复的数据(*)表示所有 SELECT DISTINCT (Name) FROM Student //如果要过滤的重复数据有多列的情况下,是列的组合如果是唯一的才会算一个唯一项SELECT DISTINCT Name,[ADDRESS] FROM Student

转载于:https://www.cnblogs.com/wuchunhu/p/3857433.html

你可能感兴趣的文章
《图解CSS3:核心技术与案例实战》——1.2节浏览器对CSS3的支持状况
查看>>
《Android应用开发》——2.4节应用类
查看>>
继 One Step 后,锤子科技 Big Bang 正式开源
查看>>
《淘宝店铺经营管理一册通》一一1.4 商品发布
查看>>
《数据科学:R语言实现》——2.5 使用Excel文件
查看>>
《淘宝店铺设计装修一册通》一2.5 抠图工具的简单运用
查看>>
《音乐达人秀:Adobe Audition实战200例》——实例4 收音机音乐节目转录到电脑里...
查看>>
《JavaScript应用程序设计》一一3.1 过时的类继承
查看>>
千万PV是什么意思?
查看>>
Amazon 推出 API 网关使用计划
查看>>
互联网流量超出路由器上限 或致全球断网
查看>>
《基于ArcGIS的Python编程秘笈(第2版)》——2.5 限制图层列表
查看>>
GNOME 地图 3.20 加入更多新特性 可用性得到加强
查看>>
《代码整洁之道:程序员的职业素养》导读
查看>>
《计算复杂性:现代方法》——习题
查看>>
Mozilla 释出更新修复中间人攻击漏洞
查看>>
思科表态反对网络中立
查看>>
《HTML5+CSS3网页设计入门必读》——1.5 利用多种Web浏览器执行测试
查看>>
Velocity官方指南-容器
查看>>
国家为何如此重视石墨烯?
查看>>