看sql server教学视频时的诱惑

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:57:52
初学sql server2005,看教学视频的时候有点疑惑:语句是这样写的:USE example
GO

CREATE TABLE t
(
TNO char(10) NOT NULL
CONSTRAINT PK_TNO PRIMARY KEY,/*教师编号字段*/
TN char(10) NULL,/*教师姓名字段*/
SEX char(2) NULL,/*教师性别字段*/
AGE int NULL,/*教师年龄字段*/
PROF char(20) NULL,/*教师职称字段*/
SAL int NULL,/*教师工资字段*/
DEPT char(10) NULL,/*教师所在系别字段*/
)
GO
INSERT INTO t VALUES('0001','张老师','男',41,'副教授',2200,'电力系')
GO
INSERT INTO t VALUES('0002','张益琳','女',32,'讲师',1500,'动力系')
GO 明明是用insert语句插入了两条记录,可是打开t表后却有三条记录,第三条记录的各个字段的值全为null,为什么会这样?前面的语句不是已经指定t表的tno列为主键约束且不能为空值吗?这是怎么回事呀?
不好意思,打错了是疑惑

会不会是对方的数据表t创建时没有限制NULL,而是后来加的? 

我这边不会这样 。呵呵,是版本问题。

你使用select * from t查询,结果自然是两条。
你说的三条,是用ssms打开表看的吧。第三条全空的条目并不是记录,只是用来输入内容的而已。

数据库就是这样的,比如说你自己建立一张新表table1,列名随便加,里面没有添加任何值,但是你打开的时候还是有一行全部是NULL的行,这个是为了方便用户手动修改数据库中的值,和你怎么定义的无关