数据库2008学习笔记(一)

1.1数据库简介

1.1.1 关系型数据库

  • 基于E-R模型(entity relationship model):
  • 使用sql语言进行操作

1.1.2 分类

  • 文档型(sqlite) 程序直接访问文件
  • 服务型 应用程序----->应用程序(服务)----->文件

1.1.1 设计

  • 三范式:列不可拆分 唯一标识 引用主键

  • 关系及存储:
    1对1: 一个对象A对应一个对象B,一个对象B对应一个对象A。比如一个学生一个班级,一个班级一个学生
    1对多: 一个对象A对应n个对象B,一个对象B对应一个对象A。比如一个学生一个班级,一个班级多个学生
    多对多:一个对象A对应n个对象B,一个对象B对应n个对象A。比如一个学生多个班级,一个班级多个学生
    1对1双方都可以存关系,1对多是多的存储关系,多对多是单独建立一个表来存储关系

1.2 数据库基本操作

1.2 数据库连接

服务器名称:

  • 如果你安装的时候没有改实例名
    那么你的服务名就是localhost或127.0.0.1或计算机名或直接写个.(英文状态下) 都可以
    如果改了实例名 那么就是 计算机名\服务名

身份验证:

  • windows身份验证——》就是你用登录操作系统本身的权限登录
    SQL 身份验证——》就是你单独设置的权限

注意:

  • sa用户名用不了
    解决方法:
    (1) 首先以window身份登录
    (2) 依次点击 安全性-登录名-sa(双击或右击)属性-修改密码(将旧密码和强制密码前的√取消)
    (3) sa(双击或右击)属性-状态设置为授予 启用
    (4) 在安全性的上一级右击属性选择安全性选择服务器身份验证SQL server和windows
    (5) 断开连接
    修改密码

数据库被局域网中其他电脑连接失败
答:

  • 1 SQL server配置管理器中选择网络配置—协议—TCP/IP启用
  • 2 关闭防火墙

1.3 界面操作

(1)数据库:创建 删除 分离 附加 生成脚本(架构、数据)
注:

  • 在创建数据时,想要将数据库移动到其他地方,需要分离,想要添加到数据库软件中需要附加—在创建数据库后,右击选择任务-分离,接着把删除和更新的两个√去掉
    生成脚本:快速的备份数据,在右击数据库点击任务–生成脚本,在最后点击高级往下拉找到编写脚本的数据的类型选择架构和数据,这样就可以生成一个快速的备份文件以.sql文件结尾。

(2)表:创建 修改 删除

  • 创建的表中列名就相当于属性
  • 字段类型:int bit datetime decimal
    char varchar nvarchar
    decimal(x,y) x表示总共多少位,y表示几个小数
    其中 char varchar 是unicode编码英占一个字节,中文占两个字节
    而 uvarchar是unicode编码中英文都是占一个字

注:

  • 字、字节、位之间的关系
  • 字 word 字节 byte 位 bit
  • 字长是指字的长度
  • 1字=2字节(1 word = 2 byte)
  • 1字节=8位(1 byte = 8bit)
  • 一个字的字长为16
  • 一个字节的字长是8

(3)约束:数据的有效性检查
主键 非空 唯一 默认 检查 外键

  • 主键 primary key:其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键
  • 唯一 unique:某一列的值不能重复。找一个列名,单击右键–牵引/键–添加–类型— 唯一键
  • 外键foreign key:让表于表产生关系,从而保证数据的正确性。对关系的合理性做检查

注意:

主键外键
定义唯一标识一条记录,不能重复,不允许为空表的外键是另一表的主键, 外键可以有重复的, 可以是空值
作用用来保证数据完整性用来和其他表建立联系用的
个数主键只有一个一个表可以有多个外键

(4)操作

在这里插入图片描述

1.4 脚本操作

  • 不区分大小写、字符串使用单引号、末尾不需要加分号

1.4.1 按照功能分类:

  • DDL:数据定义语言 -----create(创建)、alter(修改)、drop(删除)
  • DML:数据管理语言-----insert(增加)、update(修改)、delete(删除)、select(查询)
  • DCL:数据控制语言

1.4.2 注释

  • – (两个-)单行注释
  • /**/ 多行注释

1.4.3 数据库的创建

通过查看master数据库中的sysdatabases表了解当前存在的数据库数量 如下图:当前存在的数据库数量
在创建数据库脚本的时候,如果命名不记得,可以通过ReportServer右击选着数据库脚本为-CREATE©-新查询编辑器窗口操作步骤
数据库建立的脚本程序例子:

--创建数据库
 create database test1
 on primary
 (
	name = 'test1',
	filename = N'E:\relationship\sql\4-14\test1\test1.mdf',
	--filename = 'C:\Users\19248\Desktop\pro\database\test1\DATA\test1.mdf',
	size = 3mb,
	maxsize = 10mb,
	filegrowth = 1mb
 )
 log on
 (
	name = 'test1_log',
	filename = N'E:\relationship\sql\4-14\test1\tesCt1_log.ldf',
	--filename = 'C:\Users\19248\Desktop\pro\database\test1\DATA\test1_log.ldf',
	size = 1mb,
	maxsize = 5mb,
	filegrowth = 5%
 )

在这里插入图片描述

删除数据库

drop database 数据库名

1.4.4 表格的创建

下面演示两个表格的创建:
这里要注意要在test1数据库下进行,
在这里插入图片描述

通过select * from sysobjects where xtype = 'U'在这里插入代码片可以查询所有存在的表,要查询多个表,使用逗号分隔开
主键:primary key
非空:not null
唯一:unique
默认:default
检查:check()
外键:foreign key (列名) references 表名(列名)

1.5 表数据的操作

1.5.1 简单查询

select * from 表名

1.5.2 增加数据

insert into 表名(列名) values (值)

说明:

  • into 可以省略不行
  • 值的列名与值要求位置对应
  • 所有列都插入值,可以省略列名部分
  • 如果列名设置为标识则不能作为列名来插入数据,插入的数据在表中最后的位置
  • 在插入数据时,如果有多个列名,除非有的列名允许了可以null,否则都要出入数据

扩张:
一次增加多行数据,直接在value后接多个数据之间用逗号隔开—(xx),(xx)…

--创建表 
 create table UserInfo
 (
	UserId int not null primary key identity(1,1),
	UserName nvarchar(10) not null,
	UserPwd char(32)
 )
 
 --查询表中数据
 select * from UserInfo

 insert UserInfo(UserName,UserPwd) values('小笼包','21232f297a57a5a743894a0e4a801fc3')
 -- 为所有的列赋值,可以简写如下,
 insert UserInfo values('大头贴','21232f297a57a5a743894a0e4a801fc3')
  -- 为某些列赋值,不是全部列,这里如果在表创建时,UserPwd设置为not null,就会报错
 insert UserInfo(UserName) values('尹志平')
 
 -- 一次性写多个数据
 insert UserInfo(UserName) values('张三'),('李四'),('王二')

在这里插入图片描述
这里UserId 是设置标识的,不能给它赋值,标识是唯一的。

1.5.3 修改数据

updata 表名 set 列名=值1,列名2=值2...where ...

说明:
where后面的表示满足条件的行,做修改

 -- 修改数据
 -- 为所有行的指定列修改
 update UserInfo set UserPwd = 'adamin'

在这里插入图片描述

 -- 为指定行进行修改列
 update UserInfo set UserPwd='0000' where UserId>2

在这里插入图片描述

1.5.4 删除数据:

delete from 表名 where...
 -- 删除数据
 delete from UserInfo where UserId>5

在这里插入图片描述
如果在这里继续添加数据,那么这里数据UserId不是从6开始而是从7开始的,也就是说删除操作,只是将数据删除了,而标识还是,这样注意一下,对比下面的truncate清空操作的区别。

清空操作

truncate table 表名

truncate是即将数据删除了,也将标识重置了,与delete的区别。

truncate table UserInfo

在这里插入图片描述

1.5.4 常用辅助命令及快键键

set statistis time on/off:在消息栏显示详细执行时间

ctrl+e 执行
ctrl+r 隐藏消息栏
ctrl+l 计划任务

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值