SQLServer与ADO.Net(一)
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
1、什么是数据库?
l 数据库Database:数据的仓库
l 仓库里有排货架(表),货物会分类存放。比如牙膏、牙刷会放到一个排货架上,面包会单独放在一个排货架上。
l 仓库又分很多种粮仓、武器仓库。
l 仓库中还会有仓库管理员(DBA)对货物进行管理
l 从仓库中拿货物需要凭证,取货和进货的人(程序员)
2、我们怎么存储数据?
l 学校的档案室
l 计算机文件
l 数据库(其实也是文件),DBMS
l 对于数据不仅仅是需要存储,更重要的是将数据进行存储以后怎么才能方便快捷的查询、修改。
l 数据库特点:海量存储、查找速度快、并发性问题控制、安全性、数据完整性。
3、数据库概述
l DBMS(DataBaseManagement System,数据库管理系统)和数据库。平时谈到“数据库”可能有两种含义:MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog )。
l 不同品牌的DBMS有自己的不同的特点:MYSQL(速度很快,适合对数据要求并不是十分严谨的地方)、MSSQLServer(与.net结合很好)、DB2(大型)、Oracle(大型)、Access(文件)、 SQLite(及其轻量级数据库)、Sybase等。对于开发人员来讲,大同小异
l SQL(语言)<>SQLServer<>MSSQLServer。最常见的错误。
l 除了Access、SQLServerCE、SQLite等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习、开发时是连接本机的数据库,上线运行时是数据库运行在单独的服务器。
4、使用Management Studio连接数据库
l Windows身份验证与SQL Server身份验证
l 数据库、表、记录、字段、关系映射(对象可以存数据、表也能存数据)
启用Sql Server身份验证:
-> Windows身份验证进入
-> 在对象资源管理器中右键实例名
-> 选择属性
-> 找到安全性,修改服务器身份验证(需要重新启动服务)
-> 然后在对象资源管理器中找到“安全性”
-> 找到登录名sa,右键属性(sa有个向下的红色箭头,表示用户被禁用)
-> 找到状态,启用,权限授予
-> 找到常规,设定密码(可以设置“强制实施密码策略”,表示密码必须复杂)
5、数据库中的概念
l 数据库DataBase,不同类的数据应该放到不同的数据库中
• 便于对各个数据类别的进行个性化管理
• 避免命名冲突
• 安全性更高
l Table(表):关系数据库中的关系指的就是表。不同的货物要放到各自的货物架,将这种区域叫做“表”(Table)。不同的表根据放的数据不同进行空间的优化,找起来也方便。
l 列(Column)、字段(Field)
6、主键(PrimaryKey)
l 主键就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键
l 主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),因此推荐用逻辑主键。
7、表间关联、外键(ForeignKey)
l 表关联后对于数据的修改会有约束(一般指删除)
l 有外键的就是外键表(相对于外键指向的表而言)
l 谁被引用谁就是主的 ,主键表改,其他就要改
8、数据库范式
l 第一范式:表中数据原子性(不可再分)
l 第二范式:要有主键(只描述一件事情)
l 第三范式:关系表间数据不重复
9、常用数据类型
10、系统数据库
11、SQL语句入门(脚本、命令)
l SQL 全名是结构化查询语言(StructuredQuery Language),是关系数据库管理系统的标准语言
l SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法。
l SQL语句中字符串用单引号。
l SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的
l 建库、删除数据库、创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多
l 简单的Insert语句。
l (*) SQL主要分DDL(数据定义语言,建表、建库等语句。)、DML(数据操作语言)和DCL (数据库控制语言) 。Create Table、Drop Table、Alter Table等属于DDL,Select、Insert、Update、Delete等属于DML, GRANT 授权、REVOKE 取消授权属于DCL
12、使用sql语句创建数据库和表
l 新建查询
l 选择数据库
• use 数据库名
• 注释使用“--”
l 键入T-SQL语句创建数据库
l 点击对勾检查语法
l 点击惊叹号执行T-SQL语句(选中执行)
13、数据库(Database)的创建与删除
l create database 数据库名
• 默认系统保存数据文件与日志文件
• 逻辑名、文件名、大小、增长
l drop database 数据库名
• 在使用的数据库不能删除自己
• use master
l go语句表示T-SQL块结束
l 如果命名与系统冲突使用[]括起
14、创建表(Table)
l use 数据库
l create table 表名
• 字段名、类型、约束(各个字段逗号分隔)
l 自动增长使用
• identity(1,1)
l 主键使用
• primary key
l 非空使用
• not null
15、数据插入与查看
l 插入数据
• insert into 表名(列名) values(值)
• bit类型赋值为0与1
l 查看数据
• select * from 表名
l 列名可省略,但不推荐
l 不是所有字段都要赋值(除了非空约束)
附:随机练习代码:
--use 数据库名,表示使用哪一个数据库进行操作
--一般在建数据库的时候默认使用master
use master
go
--1、创建数据库
create database 数据库名称
--这种做法使用系统默认的方式
--对于名称、路径、大小、增长等均是默认的
--自定义数据库
create database School
on --数据文件的内容
(
name='School', --设定数据文件的逻辑名
filename='D:\School.mdf', --数据文件全路径名
size=3mb, --数据文件的初始大小
maxsize=1024mb, --数据文件的最大值
filegrowth=1mb --文件增长量
)
log on --日志文件的内容
(
name='School_Log', --设定日志文件的逻辑名
filename='D:\School_Log.ldf', --日志文件全路径名
size=1mb, --日志文件的初始大小
maxsize=2048mb, --日志文件的最大值
filegrowth=10% --文件增长量
)
go
--go语句不是T-SQL语句的内容,它是SQLServer命令行批处理指令
--表示将上面的数据当做一个逻辑块来进行处理
--删除数据库(慎用)
drop database School
use School
go
--2、创建表
create table T_Student
(
--字段名字段类型约束
FId intidentity(1,1) primary key,
--identity(1,1) 表示数据以开始,并且每次增长
--primary key 表示该字段为主键
FName nvarchar(10) not null,
FAge int,
FAddress nvarchar(100)
)
--建表方式
create table T_Student1
(
--字段的定义以及默认值的定义
FId intidentity(1,1),
FName nvarchar(10) not null,
FAge int,
FAddress nvarchar(100),
--约束的定义
primary key(FId)
)
--3、插入数据
--insert into 表名(列名)values(值)
insert into T_Student(FName,FAge,FAddress)values('张三',18,'北京胡同儿')
insert into T_Student(FName,FAge,FAddress)values('李四',20,'北京胡同儿')
--查看表中数据
Select * from T_Student