1.重点:建库 建表 建约束 插入数据
数据库(仓库)
表table(货架)
行 记录
列 字段
主键 表的唯一标示,并且不能为空
外键 创建表之间的关联,如果一个列是外键则在另一个表中必定是主键
sqlserver版本 Express 免费版
Standard 标准版
企业版 不能装在xp上,只能装在server版的操作系统上
服务器名称:
Express
机器名\sqlexpress
.\sqlexpress
ip地址 127.0.0.1\sqlexpress 在网络中的ip地址 192.168.1.100\sqlexpress
localhost\sqlexpress
Standard 企业版
机器名
.
ip地址 127.0.0.1 在网络中的ip地址 192.168.1.100
分类 | 备注和说明 | 类型 | 说明 |
二进制数据类型 | 存储非子符和文本的数据 | Image | 可用来存储图像 |
文本数据类型 | 字符数据包括任意字母、符号或数字字符的组合 | Char | 固定长度的非 Unicode 字符数据 |
Varchar | 可变长度非 Unicode 数据 | ||
Nchar | 固定长度的 Unicode 数据 | ||
Nvarchar | 可变长度 Unicode 数据 | ||
Text | 存储长文本信息(指针,2G) | ||
Ntext | 存储可变长度的长文本 | ||
日期和时间 | 日期和时间在单引号内输入 | Datetime | 日期和时间 |
数字数据 | 该数据仅包含数字,包括正数、负数以及分数 | int smallint | 整数 |
float real | 数字 | ||
货币数据类型 | 用于十进制货币值 | Money |
|
Bit数据类型 | 表示是/否的数据 | Bit | 存储布尔数据类型 |
|
|
|
|
数据类型
char 固定长度,char(10) 张三 补6个空格
varchar 可变长度
nchar 固定长度 Unicode编码存储 nchar(10) 张三 补 8个空格
nvarchar 可变长度 Unicode编码存储
sex 男/女 nchar(1)
建库
create database shujuku
on()
删除库
drop database shujuku
建表
create table biao
()
删表
drop table biao
增
insert [into] biao (lie1,lie2,lie3) values('值1','值2','值3')
删
delete from biao [where 条件]
truncate table biao 会把自增列 还原成种子值
改
update biao set lie1 = '',lie2='' [where 条件]
2.(1)建库MySchool
create database MySchool
on
(
name='MySchool',
Filename = 'c:\database\MySchool.mdf',
size=3,
filegrowth = 10%,
maxsize=100
)
log on
(
name='MySchool_log',--日志文件名
filename= 'c:\database\MySchool_log.ldf',--日志物理文件名
size=3,
filegrowth=1,
maxsize=5
)
(2)建表Class
--切换数据库
use MySchool
go
--创建表
create table [Class]
(
--identity(1,1)自动编号,第一个参数种子,第二个参数增长量
--primary key 设置主键
--not null该字段不能为空
[cId] int identity(1,1)primary key,
[cName]nvarchar(10)not null,
[cDescription]nvarchar(200)
)
Go
(3)建表Student
create table [Student]
(
[sId] int identity(1,1),
[sName] nvarchar(10)not null,
[sAge]int null,
[sNo] decimal(18,0),
[sBirthday] datetime,
[sClassId] int not null
)
create table Score
(
sId int identity(1,1),
studentId int not null,--学生id,外键
english float, --英语成绩
math float
)
create table teacher
(
tId int identity(1,1)primary key,
tName nvarchar(50)not null,
tSex nchar(1),
tAge int,
tSalary money
)
(4)插入数据
--插入数据
insert into [Class](cName,cDescription)values('高一一班','快班')
insert Class values('高一二班','中班')
--错误 当省略列明,要求必须输入所有列的值
--insert [Class] values('高一三班')
(5)修改数据update
update student set sSex='男'
update student set sSex ='狗',sAge=20
update student set sClassId=2 where sName='王五'
update student set sClassId=10 where sAge=50 or (sAge>=19 and sAge<=20)
update student set sAge = sAge +1
(6) 删除表中全部数据:DELETE FROM Student。
Delete只是删除数据,表还在,和Drop Table不同。
Delete 也可以带where子句来删除一部分数据:DELETE FROM Student WHERE sAge > 20
Truncate清空表中的数据没有条件,和delete的区别不存日志,清空自动编号
(7)查数据select
--练习:给刘备的英语成绩加分
select * from score
update score set english = english+10 where sId=1
--2.考试偏难,所有人成绩加分
update score set english = english +5
--3.所有女生的年龄-1
update student set sAge = sAge-1 where sSex='女'
select * from student
--4.删除工资大于的老师
delete from teacher where tSalary>2000
--5.删除所有老师
delete from teacher
--6.删除数据的时候把自增长列的值还原成种子
truncate table teacher
(8)约束
l 数据库约束是为了保证数据的完整性(正确性)而实现的一套机制
l 非空约束
l 主键约束(PK) primary key constraint 唯一且不为空
l 唯一约束 (UQ)unique constraint 唯一,允许为空,但只能出现一次
l 默认约束 (DF)default constraint 默认值
l 检查约束 (CK)check constraint 范围以及格式限制
l 外键约束 (FK)foreign key constraint 表关系
--约束
--主键约束
alter table Student
add constraint PK_Student primary key(sId)
--唯一约束
alter table Student
add constraint UQ_Student_sNo unique(sNo)
--默认约束
alter table Student
add constraint DF_Student_sSex default('男')for sSex
--检查约束
alter table Student
add constraint CK_Student_sSex check (sSex='男'or sSex='女')
alter table Student
add constraint CK_Student_sAge check (sAge>=20)
alter table Student
add constraint CK_Student_date check (sIntime>sBirthday)
--删除约束
alter table Student
drop constraint CK_Student_sAge
--外键约束
alter table Student
add constraint FK_student_sClassId foreign key (sClassId) references Class(cId)
on delete cascade—级联删除,了解即可
--往子表加数据,外键的值必须在主表中出现,100在主表Class中没有,所以出错
insert into student(sName,sNo,sClassId) values('abc',111,100)
--删除主表中数据的时候,必须先删除子表中对应的数据
delete from class where cId = 1
--约束练习
--Teacher表中
--tSex 控制只能是男女,默认男
--tAge 在-40之间 默认
--tName 唯一
alter table Teacher
add constraint CK_Teacher_tSex check(tSex='男'or tSex='女'),
constraint DF_Teacher_tSex default('男')for tSex,
constraint CK_Teacher_tAge check(tAge>=30 and tAge<=40),
constraint DF_Teacher_tAge default(30)for tAge,
constraint UQ_Teacher_tName unique(tName)