学习数据库,理论上来说,应该先从学习理论开始,但我觉得这种实践性强的,直接从实践开始是学习速度和效率最好
一、新建一张学生表
新建一张表和写一篇文章是一样的,你需要构思和打草稿。基本大体需要考虑定下来,不能定下来的后续打补丁,但主体架构要越细越好
这里举例新建一张学生表,首先要收集学生基本信息,包括哪些信息呢?
学号、姓名、手机号码、年龄、性别、年纪等
其中正确的手机号码一定是11位数,这个要定死。其次学生年龄应该是一个正常人年龄,初步估计一个正常人年龄(0 < age < 150),当然学生年龄不会到100多岁,这里没有考虑更细致。
学生性别,这个没有好说的,不是男就是女,虽然其他国家可以有介于男女之间的,但再中国肯定只有男或女
同时为了后续查询方便,额外加一个入库日期/时间属性(date_time),以及增加对于一个学生的文字描述属性(stu_remark)
1-1 创建表
根据前期的准备,将文字转换成代码表现形式:
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[student]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
-- 创建表
CREATE TABLE student
(
stu_id INTEGER NOT NULL PRIMARY KEY,
stu_name NCHAR(10) NOT NULL,
stu_phone CHAR(11) NOT NULL CHECK(LEN(stu_phone)=11),
stu_age INTEGER NOT NULL CHECK(stu_age > 0 and stu_age < 150),
stu_sex NCHAR(1) NOT NULL CHECK(stu_sex='男' or stu_sex='女'),
stu_grade NCHAR(10) NOT NULL,
stu_remark NVARCHAR(256) NULL,
date_time DATETIME2(3) NOT NULL DEFAULT GETDATE()
);
else
print('表student已经存在!')
1-2 添加学生信息
学生表创建好了,就可以添加学生信息了,工作人员根据表的属性收集学生信息,然后再通过sql语句插入到表中
-- 插入一条记录
INSERT INTO student(stu_id,
stu_name,
stu_phone,
stu_age,
stu_sex,
stu_grade)
VALUES(1001,
'张三',
'13566668888',
15,
'男',
'高中一年级');
1-3 查询学生信息
当学生数据添加完毕后,即可查询学生表中的数据
-- 查询表中所有字段的所有记录
SELECT * FROM student
二、表的基础和特性
2-1 主键(PRIMARY KEY)
往学生表中再次插入一条记录
-- 插入一条记录
INSERT INTO student(stu_id,
stu_name,
stu_phone,
stu_age,
stu_sex,
stu_grade)
VALUES(1001,
'李四',
'13568688080',
15,
'男',
'高中一年级');
插入记录失败
在定义学生表的时候,定义了stu_id属性为主键,之前插入过stu_id=1001的记录,这次再次插入stu_id=1001的记录,表会跟据主键检查新插入stu_id是否冲突
2-2 约束
往学生表中再次插入一条记录
-- 插入一条记录
INSERT INTO student(stu_id,
stu_name,
stu_phone,
stu_age,
stu_sex,
stu_grade)
VALUES(1002,
'王五',
'1356767818',
15,
'男',
'高中一年级');
插入记录失败
在定义学生表的时候,定义了stu_phone属性添加约束,字符长度必须满足11位