SQL建表有约束插入数据出错

 我来答
lyundead
2011-10-11
知道答主
回答量:20
采纳率:0%
帮助的人:10.9万
展开全部
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)
742492792
2011-10-08
知道答主
回答量:4
采纳率:0%
帮助的人:3.4万
展开全部
解除约束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式