1.建库、建表、建约束常见问题0725

本文详细介绍了数据库操作,包括创建数据库、表及约束,插入、删除和更新数据,以及各种类型的约束定义。举例展示了SQL Server中创建MySchool数据库,建立Class、Student、Score和Teacher表的过程,同时探讨了数据完整性的重要性。
摘要由CSDN通过智能技术生成
 

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)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值