SQL 个人笔记,少了什么.....还请高手点出,讲解下,,谢谢!

来源:互联网 发布:美的冰箱淘宝 编辑:程序博客网 时间:2024/05/22 12:06

 

                                 单方面SQL

 

数据库:Database,数据的集合
数据库管理系统:Database Management System(DBMS)

数据库管理员:Database Administrator(DBA)

数据库系统:Database System

建立一个完整的数据库系统,包含DB、DBMS、DBA、服务器硬件。

服务:即是后台进程。
启动:
1、启动服务
服务名称:服务本身的名称(实例名称)
SQLServer
安装过程有一个步骤:
给实例名命名:
1、自定义
2、默认名称:MSSQLSERVER


SQLServer(SQL2005)
SQLServer(MSSQLSERVER)
SQLServer(sqlexpress):简易版Visual Studio 2008时附带的

2、登录管理台
服务器名称:服务器名称\实例名称
如果是默认实例名称mssqlserver,不需要写\实例名称,只要有本机名称就足够
如果连接的是本机,可以用.代替

打开管理台
1、开始菜单
2、运行-sqlwb

数据库分类:
1、系统数据库:安装完sqlserver后自动创建的,保存了系统的重要信息。
master:保存数据库、表、约束的定义
model:定义数据库创建时默认的设置
tempdb:存放运行过程当中产生的临时数据
msdb:
2、用户数据库:由用户创建的数据库
一个数据库至少包含两个文件
1、数据文件:*.mdf
2、日志文件:*.ldf

分离数据库:使数据库文件脱离DBMS的管理,方便移动,脱离后就可以进行复制、剪切、删除

附加:

删除:

如果sa用户无法登录,可能有如下原因:
1、验证方式只有Windows身份验证
右键服务器-属性-安全性-验证方式选第二种
2、sa用户被拒绝或者被禁用
选中服务器下属节点安全性-登录名-sa-右键属性-状态

表:存放数据的基本单位,一个表通常用于存放某一类型的数据,表也叫做关系、实体集。
表由行、列组成
列:也叫字段,域,存放同一种类的数据,如年龄、性别
行:也叫记录,实体,表示一个与众不同的事物。

数据完整性:
实体完整性:确保表(关系)中没有两个完全相同的实体(行)
主键:能够区分不同实体的列。
主键必须是能够唯一地决定其他所有列。主键列必须是唯一的,不能有相同的数据。
学生表(学号,姓名,年龄,性别)
学号-->姓名
学号-->年龄
学号-->性别

域完整性:保存同一列的数据类型相同
通过列的数据类型或非空约束等来保证
例如:年龄 int

引用完整性:只存在于两个或两个以上的表。有一个表中的某一个列的数据不能无中生有,必须引用另一个表中的某个列。
外键:存在于外键表中,表示由该列引用主表中对应的列,由该列建立两表的外键约束。
学生表(学号,姓名,年龄,性别)
成绩表(科目名称,学号,成绩)
科目+学号-->成绩
科目,学号作为联合主键或组合键
外键列类型一定要和主表中被引用的列类型一致。
成绩表中的学号必须是学生表中存在的学号,叫做:成绩表中的学号外键引用学生表的学号。
成绩表:引用别人的数据,叫做外键表
学生表:被别人引用,叫做主表

图书信息表(图书编号,图书名称,图书类型)外键:图书类型
1  SQL编程  计算机编程
2  1001夜   童话
3  报纸     人民日报(错误)

图书类型表(类型名称,类型说明)
计算机编程  计算机编程语言的学习
童话        儿童读物
时尚杂志    。。。

学生表(学号,姓名,年龄,性别)
95001 张三 20 男
95002 李四 19 女
课程表(课号,课名)
1 C
2 HTML
3 SQL
4 C#
选课表(学号,课号,成绩)
95001 1 70
95001 2 80
95002 1 75
95003 5 60(错误)
对选课表来说,学号是外键,引用学生表(学号)
课号是外键,引用课程表(课号)

自定义完整性:当无法使用域、实体、引用几种完整性约束时,可以采用触发器等其他手段来规范数据库。

bit类型:输入时要以true或false来输入
database owner:dbo 数据库拥有者

int:整型,4字节
smallint:短整型,2字节
tinyint:微小整型,1字节

float:相当于C的double
real:相当于C的float

decimal(全部位数,小数位数)
char(11)

文本数据类型:char(N) varchar(N) text  nchar(N)   nvarchar(N)  ntext
按长度分:
定长的会造成一定的空间浪费,但查询的效率比较高。
定长:char(N)占用的空间是固定的
"123456"
"123456    "
不定长:varchar(N)占用的空间只要不超过事先设定好的最大值,如果有剩余,剩余空间将会释放
10个字符 varchar(10)
"123456"
从字符的编码来分:
1、ASCII编码char varchar
2、Unicode编码nchar nvarchar

以n开头的,表示Unicode编码的字符串,包含var的表示长度可变。

char(6):
'123456'
'一二三'

nchar(6):
'123456'
'一二三四五六'

主键约束PK:表示施加该约束的列可以决定其他所有列,自己本身还不能重复。一个表只能有一个主键。已经包含唯一约束和非空约束的定义在内。(右键:设置主键)
主键约束=唯一约束+非空约束
唯一约束UQ:表示施加该约束的列的值不能重复。(右键:约束/键)
默认约束DF:表示施加该约束的列如果不输入任何值,自动有一个默认值来代替。(默认值或绑定)
检查(check)约束CK:表示施加该约束的列在修改、添加数据时都要先检查所设定的约束表达式,如果符合条件,允许,否则拒绝。

SQL:structured query language结构化查询语言
SQL支持的运算符:
算术:+ - * / % (无++ --)
关系:> < >= <=    <>(不等于) =(等于)
逻辑:and  or  not
not true = false

约束名称的命名规范:
主键约束:primary key PK_表名_列名
PK_Student_stusno
外键约束:foreign key FK_主表_外表_外键列
FK_Student_Score_sno
唯一约束:unique UQ_表名_列名
UQ_Student_stuname
非空约束(索引):index IX_表名_列名
IX_Student_stuname
检查约束:check CK_表名_列名
CK_Student_stuage
CK_Student_stusex
默认约束:default DF_表名_列名
DF_Student_stuage

insert:插入
update:更新
delete:删除

 

改天续写。。。。