SQL建表有约束插入数据出错
2个回答
展开全部
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)
数据库(仓库)
表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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询