sql server中默认值约束是啥意思啊,是否就是在创建表的时候在列下面设置默认值吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server中默认值约束是啥意思啊,是否就是在创建表的时候在列下面设置默认值吗?相关的知识,希望对你有一定的参考价值。

就是设置这个吗。。。?

是的,就是你在创建表的时候设置的字段默认值,设置默认值是为了若是以后你需要两列相加,但是若是其中一列的值为NULL,不论你怎么加,结果都是NULL,不能得出正确的结果值,必须得加判定条件,而设置默认值之后则可以解决这个问题,比如你要给T_BeautyUserInfo表的F_Rank加上默认值0,应该这样写(sql server 2008):ALTER TABLE [dbo].[T_BeautyUserInfo] ADD CONSTRAINT [defaultvalue1] DEFAULT ((0)) FOR [F_Rank]
GO。如果你建表的时候没有指定DEFAULT约束名,那么系统会自动命名,可以用以下语句获得该DEFAULT约束名:
select name from sys.default_constraints
where parent_object_id=object_id('表名')
and parent_column_id=columnproperty(object_id('表名'),'列名','property')(property的具体信息你可以查看columnproperty的函数说明)。希望可以帮助到你。
参考技术A sqlserver建表时设置字段初始默认值完整的示例
创建表时设置字段的默认值
create table 表(id int,name varchar(10) default '***',age int)
添加字段时设置字段的默认值
alter table 表 add sex char(2) default '*'
为表中现有的字段设置默认值
alter table 表 add constraint DF_age_表 default(20) for age
go
插入一条记录验证
insert 表(id) values(1)
select * from 表
go
删除测试
drop table 表
/*--测试结果
id name age sex.
参考技术B 不是吧~好像是创建表的时候设置字段不能为NULL值, 但是在insert记录的时候插入了空值?
楼主自己试试看吧。
参考技术C 对,就是这个。

sql中group by 是啥意思啊?请教谢谢

一般是从来对一些集合函数进行分组的。
例如
select count(UserId),UserClass from USERINFO group by userClass
这个语句就可以得到每个班级的人数
参考技术A group
by
语句用于结合合计函数,根据一个或多个列对结果集进行分组。
举几个简单例子
成绩表(姓名,课程,成绩)
1、去重复,同distinct、查找有多少个人的记录(按姓名分组、排重)
2、取每个人有多少条记录(按姓名分组、统计)
3、取有成绩记录为2条的人(按姓名分组、配合having使用)
4、取每个人的总成绩(按姓名分组、合计)
5、取每个人的最高成绩(按姓名分组、取最大max/最小min/平均avg值)
参考技术B group
by
分组
通用数据库具有基于表的特定列对数据进行分析的能力。
可按照在
GROUP
BY
子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。
SELECT
子句中的列名必须为分组列或列函数。列函数对于
GROUP
BY
子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
SELECT
DEPT,
MAX(SALARY)
AS
MAXIMUM
FROM
STAFF
GROUP
BY
DEPT
此语句产生下列结果:
DEPT
MAXIMUM
------
---------
10
22959.20
15
20659.80
20
18357.50
38
18006.00
42
18352.80
51
21150.00
66
21000.00
84
19818.00
注意:计算的是每个部门(由
GROUP
BY
子句定义的组)而不是整个公司的
MAX(SALARY)。

WHERE
子句与
GROUP
BY
子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准
WHERE
子句。必须在GROUP
BY
子句之前指定
WHERE
子句。例如:
SELECT
WORKDEPT,
EDLEVEL,
MAX(SALARY)
AS
MAXIMUM
FROM
EMPLOYEE
WHERE
HIREDATE
>
'1979-01-01'
GROUP
BY
WORKDEPT,
EDLEVEL
ORDER
BY
WORKDEPT,
EDLEVEL
结果为:
WORKDEPT
EDLEVEL
MAXIMUM
--------
-------
-----------
D11
17
18270.00
D21
15
27380.00
D21
16
36170.00
D21
17
28760.00
E11
12
15340.00
E21
14
26150.00
注意:在
SELECT
语句中指定的每个列名也在
GROUP
BY
子句中提到。未在这两个地方提到的列名将产生错误。GROUP
BY
子句对
WORKDEPT

EDLEVEL
的每个唯一组合各返回一行。

GROUP
BY
子句之后使用
HAVING
子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP
BY
子句后面包含一个
HAVING
子句。
HAVING
子句可包含一个或多个用
AND

OR
连接的谓词。每个谓词将组特性(如
AVG(SALARY))与下列之一进行比较:
该组的另一个特性
例如:
HAVING
AVG(SALARY)
>
2
*
MIN(SALARY)
常数
例如:
HAVING
AVG(SALARY)
>
20000
例如,下列查询寻找雇员数超过
4
的部门的最高和最低薪水:
SELECT
WORKDEPT,
MAX(SALARY)
AS
MAXIMUM,
MIN(SALARY)
AS
MINIMUM
FROM
EMPLOYEE
GROUP
BY
WORKDEPT
HAVING
COUNT(*)
>
4
ORDER
BY
WORKDEPT
此语句产生下列结果:
WORKDEPT
MAXIMUM
MINIMUM
--------
-----------
-----------
D11
32250.00
18270.00
D21
36170.00
17250.00
E11
29750.00
15340.00
有可能(虽然很少见)查询有
HAVING
子句但没有
GROUP
BY
子句。在此情况下,DB2
将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果
HAVING
条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。

以上是关于sql server中默认值约束是啥意思啊,是否就是在创建表的时候在列下面设置默认值吗?的主要内容,如果未能解决你的问题,请参考以下文章

在某些 sql server profiler sql 窗口中,默认值是啥意思?

请问下在sql server中,我创建约束的时候没有定义约束名,它默认的约束名是啥呀?

SQL Server 中的“键”是啥意思?主键和外键是啥?

SQL中unique作用是啥

SQL server PARTITION BY 是啥意思

in在sql中是啥意思