一、数据库的概念
定义:
数据库就是数据仓库。
DBMS:
数据库管理系统。SQLServer Oracle
二、数据库的特点
安全性
并发访问处理
高效率
海量数据存储
数据完整性
三、数据库的基本组成
数据库
架构(表的分组):
表的集合
表
列(Column字段,类型,长度,约束等)
行(Row)
主键:
自动增长,GUID
外键
四、数据库管理
数据库安装:
数据库的实例名详解:
区分安装在同一台机器上不同的MSSqlServer 服务的。(区分一台机器上的不同的数据库服务实例)
混合身份验证:
Windows身份验证、SQLServer身份验证
启用SA账户(安装的时候可以直接设置启用)
链接数据库:
保证SQLServer服务器开启,. 和 (local) 和 机器名一样,代表链接本机。
ip地址:
回环地址:
127.0.0.1
局域网ip地址,外网ip地址。
SA
五、可视化创建数据库、表、主键
1.创建数据库
数据库文件默认位置:C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA
(创建数据库最好放到此位置,避免权限问题。)
2.创建表
命名规范同类。
列:
NChar,Nvarchar(32) N:Unicode,2个字节表示一个字符。
Char:一个字节表示一个字符。
NChar和Char的区别?
避免乱码,N:Unicode,用两个自己表示一个字符。
可能遇到的问题:“阻止保存要求重新创建表的更改”的问题,解决办法: 工具→选项→设计器→阻止表的更改
3.设置主键:
六、数据库的字段类型详解
Char,8000 | Varchar,8000 | Nchar,4000 | Nvarchar,4000 | Text varchar(max) | … |
固定长度的非Unicode字符数据。固定长度的字符串相对于可变长度的字符串来说效率要高一些,在数据长度固定的情况下优先选用固定长度,省去了计算长度的过程提高效率. | 可变长度非Unicode 数据 | 固定长度的Unicode 数据 | 可变长度Unicode数据 | 存储长文本信息(指针2G) | … |
七、数据库的迁移方案
右击数据库属性:
分离 附加
权限问题:
启用Administrator账号
把数据库文件放到默认的数据库文件存放目录。
数据库文件兼容级别,设置成2005兼容
脱机 附加
备份 还原
生成SQL脚本
八、SQL脚本
结构化查询语言(Structured Query Language)
DML\DDL\DCL
脚本:一般就是指比较简单的,不需要编译的可以直接解析执行的语言,常见的比如:SQL、JavaScript等。
T-SQL的特点
跨DBMS,基本上所有的DBMS都对标准T-SQL兼容
大小写不敏感(仅仅是关键字不敏感,字符串数据是大小写敏感的)
转义
九、基本的DDL SQL脚本
创建数据库(Create Database)
创建数据库的SQL: create database 数据库名 on ( name=‘’, size=5MB, filegrowth=2MB, filename="....\data\db.mdf" ) log on ( name=‘_log’, size=5MB, filegrowth=2MB, filename="....\data\db_log.ldf" )
--1.创建数据库 create database PhpDb; --2.删除数据库 drop database PhpDb;
创建表(包括主键、自动增长、是否可空)等
use PhpDb create table Employee( EmpId int primary key not null, EmpName nvarchar(32) null, EmpAge int default(18) not null, DelFlag smallint default(0) not null )
create table 表名 ( 列名 类型 null, ....., 列名 类型 primaryt key not null,--主键列 列名 类型 identity(1,1) not null,--自动增长,只能用于数据的类型:int,bigint,float )
十、基本的DML SQL脚本
select 列名,… from 表 where 表达式1 and 表达式2
delete from 表 where 表达式1 and 表达式2
update 表名 set 列1=值,列2=值
insert into 表名(列1,列2…) values(值1,值2…)
简单的查询: Select 列名 From 表明 where 条件表达式
--基本查询 select *from Employee where EmpId=1
插入数据: Insert Into 表名(列名) values(列值)
--插入数据 insert into Employee values('1','小明','18','1111')
删除数据:Delete
--删除数据:Delete delete Employee where EmpId=2
修改数据:Update
--修改数据:Update update Employee set EmpId=2 where EmpName='小明'
十一、案例:OA系统数据库设计
部门表:Department JQJB:警情级别 ->部门的名字 DepName ->部门的老大 DepMaster ->部门的编号 主键: ->部门的描述 ->删除标识 ->上级部门的ID select * from dep where ParentDepId =我的id 员工表、 内部员工消息表 ->发送者 ->发送的时间 ->发送的内容 ->接收 ->接收时间 ...
--OA项目 --创建数据库 create database OADB; go use OADB; create table Department( DepId int identity(1,1)primary key not null, DepName nvarchar(32) null, DepMasterId int null, DepRemark nvarchar(512) null, ParentDepId int null, DelFlag smallint default(0) not null )