sql server 2008学习5 sql基础
2012-09-11 12:28
302 查看
查看数据库的信息:
INFORMATION_SCHEMA.CHECK_CONSTRAINTS
INFORMATION_SCHEMA.COLUMN_DOMAIN_USAGE
INFORMATION_SCHEMA.COLUMN_PRIVILEGES
INFORMATION_SCHEMA.COLUMNS 查看数据库中的所有列
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
INFORMATION_SCHEMA.DOMAIN_CONSTRAINTS
INFORMATION_SCHEMA.DOMAINS
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
INFORMATION_SCHEMA.PARAMETERS
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
INFORMATION_SCHEMA.ROUTINE_COLUMNS
INFORMATION_SCHEMA.ROUTINES
INFORMATION_SCHEMA.SCHEMATA
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
INFORMATION_SCHEMA.TABLE_PRIVILEGES
INFORMATION_SCHEMA.TABLES 查看数据库中表
INFORMATION_SCHEMA.VIEW_COLUMN_USAGE
INFORMATION_SCHEMA.VIEW_TABLE_USAGE
INFORMATION_SCHEMA.VIEWS 查看数据库中视图
group by 子句:
在使用时,select 列表 中的所有列必须为聚合列或是 group by 子句中包括的列.
同样,如果在select 列表中使用聚合列,select列表必须值包括聚合列,否则必须有一个 group by 子句.
count聚合函数
除了count(*)函数以外,以其他任意形式使用的count函数都忽略null值.
having 子句
对 分组后的数据 进行 过滤.
系统存储过程
exec sp_help 表名 查看表的属性
inner join
stu
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546135112.png)
sec
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546162377.png)
sql : selert a.Name,b.tel,b.qq from stu a join sec b on a.sec=b.ID
cross join
返回的 join两侧表记录的笛卡尔积
约束
键约束: 主键约束,外键约束,唯一约束
系统存储过程 查看 表的约束: exec sp_helpconstraint 表名
设置主键: alter table 表名 add constraint 约束名 primary key (列名)
设置外键: alter table 表名 add constraint 约束名 foreign key (本表外键列名) references 外键表名(外键表的列名)
那么也可以在 一个表中建立外面外键连接 同个表中的其他列.
需要注意的是,在添加外键之前表中至少要有一行数据.因为 实际上 是在检查并强制外键操作之后才选择并填充标识值的 .
那就意味着当检查发生时,还没有值供第一行引用.
关于外键的考虑:
1.要想使外键的值为 必须 或是 可选的,那么就需要把外键列 赋值为 null,那么 用户插入外键的值时,即使 被引用的表的列没有值,
那么 引用表依然可以插入数据.
2.外键 实现双向的方式.
sql server默认是不让删除 或修改 被引用表的数据的.因为如果修改了,那么就会 使 引用表 产生很多孤立数据.
那么就可以使用 cascade, 即:级联操作. 当修改或删除 被引用表的信息时,可以级联影响到 引用表的数据.
唯一约束:和主键类似, 指定列的每个值必须是唯一的.
由于 唯一约束 不会自动防止设置一个null值,如果允许列为null,那么只能插入一个null,因为在唯一约束看来,null都是相等的.
对已有的表创建约束: alter table table_name add constraint AK_uniquename unique (columnName)
Check约束
创建check约束: alter table table_name add constraint CN_name check (条件) //几乎所有where的条件可以应用再此
default约束
默认值 只在 insert语句中使用,而在 update ,delete语句中 被 忽略掉.
如果在 insert中提供了值,那么就不会使用默认值,如果没提供,永远都是默认值的.
创建default约束: alter table table_name add constraint constraint_name default ‘default_value’ for column_name
禁用约束
不能禁用主键约束或者唯一约束,仅适用于 外键和检查约束
在创建约束时,忽略无效的数据(应用在给已存在数据的表中加约束,但是原来的数据不符合现在的约束标准)
alter table table_name with nocheck add constraint constraint_name check (条件)
下面看这个sql 用于屏蔽约束( 主要用于 向当前表中导入外部数据,那有可能外部数据的格式不符合当前的列约束,可以暂时屏蔽掉约束)
alter table table_name nocheck constraint contraint_name
下面是操作check_s这个约束,禁用之前:
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546171463.png)
这样就屏蔽的了一个 约束,那么可以通过 执行 sp_helpconstraint ,来查看 该约束的状态, 禁用之后:
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546217366.png)
恢复check约束, sql : alter table table_name check constraint constraint_name
INFORMATION_SCHEMA.CHECK_CONSTRAINTS
INFORMATION_SCHEMA.COLUMN_DOMAIN_USAGE
INFORMATION_SCHEMA.COLUMN_PRIVILEGES
INFORMATION_SCHEMA.COLUMNS 查看数据库中的所有列
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
INFORMATION_SCHEMA.DOMAIN_CONSTRAINTS
INFORMATION_SCHEMA.DOMAINS
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
INFORMATION_SCHEMA.PARAMETERS
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
INFORMATION_SCHEMA.ROUTINE_COLUMNS
INFORMATION_SCHEMA.ROUTINES
INFORMATION_SCHEMA.SCHEMATA
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
INFORMATION_SCHEMA.TABLE_PRIVILEGES
INFORMATION_SCHEMA.TABLES 查看数据库中表
INFORMATION_SCHEMA.VIEW_COLUMN_USAGE
INFORMATION_SCHEMA.VIEW_TABLE_USAGE
INFORMATION_SCHEMA.VIEWS 查看数据库中视图
group by 子句:
在使用时,select 列表 中的所有列必须为聚合列或是 group by 子句中包括的列.
同样,如果在select 列表中使用聚合列,select列表必须值包括聚合列,否则必须有一个 group by 子句.
count聚合函数
除了count(*)函数以外,以其他任意形式使用的count函数都忽略null值.
having 子句
对 分组后的数据 进行 过滤.
系统存储过程
exec sp_help 表名 查看表的属性
inner join
stu
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546135112.png)
sec
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546162377.png)
sql : selert a.Name,b.tel,b.qq from stu a join sec b on a.sec=b.ID
cross join
返回的 join两侧表记录的笛卡尔积
约束
键约束: 主键约束,外键约束,唯一约束
系统存储过程 查看 表的约束: exec sp_helpconstraint 表名
设置主键: alter table 表名 add constraint 约束名 primary key (列名)
设置外键: alter table 表名 add constraint 约束名 foreign key (本表外键列名) references 外键表名(外键表的列名)
那么也可以在 一个表中建立外面外键连接 同个表中的其他列.
需要注意的是,在添加外键之前表中至少要有一行数据.因为 实际上 是在检查并强制外键操作之后才选择并填充标识值的 .
那就意味着当检查发生时,还没有值供第一行引用.
关于外键的考虑:
1.要想使外键的值为 必须 或是 可选的,那么就需要把外键列 赋值为 null,那么 用户插入外键的值时,即使 被引用的表的列没有值,
那么 引用表依然可以插入数据.
2.外键 实现双向的方式.
sql server默认是不让删除 或修改 被引用表的数据的.因为如果修改了,那么就会 使 引用表 产生很多孤立数据.
那么就可以使用 cascade, 即:级联操作. 当修改或删除 被引用表的信息时,可以级联影响到 引用表的数据.
唯一约束:和主键类似, 指定列的每个值必须是唯一的.
由于 唯一约束 不会自动防止设置一个null值,如果允许列为null,那么只能插入一个null,因为在唯一约束看来,null都是相等的.
对已有的表创建约束: alter table table_name add constraint AK_uniquename unique (columnName)
Check约束
创建check约束: alter table table_name add constraint CN_name check (条件) //几乎所有where的条件可以应用再此
default约束
默认值 只在 insert语句中使用,而在 update ,delete语句中 被 忽略掉.
如果在 insert中提供了值,那么就不会使用默认值,如果没提供,永远都是默认值的.
创建default约束: alter table table_name add constraint constraint_name default ‘default_value’ for column_name
禁用约束
不能禁用主键约束或者唯一约束,仅适用于 外键和检查约束
在创建约束时,忽略无效的数据(应用在给已存在数据的表中加约束,但是原来的数据不符合现在的约束标准)
alter table table_name with nocheck add constraint constraint_name check (条件)
下面看这个sql 用于屏蔽约束( 主要用于 向当前表中导入外部数据,那有可能外部数据的格式不符合当前的列约束,可以暂时屏蔽掉约束)
alter table table_name nocheck constraint contraint_name
下面是操作check_s这个约束,禁用之前:
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546171463.png)
这样就屏蔽的了一个 约束,那么可以通过 执行 sp_helpconstraint ,来查看 该约束的状态, 禁用之后:
![](http://images.cnblogs.com/cnblogs_com/Mr-Joe/201205/201205071546217366.png)
恢复check约束, sql : alter table table_name check constraint constraint_name
相关文章推荐
- sql server 2008学习5 sql基础
- SQL_Server_2008完全学习之第十七章访问SQL Server 2008
- SQL Server 2008技术内幕:T-SQL语言基础 笔记(转)
- 学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础
- T_SQL 2008 语言基础学习笔记
- sql server 2008语言基础: T-sql语言基础2简单技巧
- SQL Server基础一之SQL Server 2008 R2安装图解
- sql语句基础要点(以sql server 2008 为例)
- sql server 2008 之利用SQL Server Management Studio创建数据库(最基础)
- 学习《Microsoft SQL Server 2008 技术内幕:T-SQL 语言基础 》之一:学习资料、数据库、数据库脚本准备
- sql server 2008 之利用SQL Server Management Studio创建数据库(最基础)
- SQL Server 2008技术内幕:T-SQL语言基础 笔记
- sql server 2008语言基础: 再回首之Sql 2008的merge关键字
- sql server 2008 之利用SQL Server Management Studio创建数据库(最基础)
- SQL Server 2008技术内幕:T-SQL语言基础 笔记
- 学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础--第4章
- sqlcmd命令导入大容量的SQL本地文件至SQL server 2008
- SQL点滴15—在SQL Server 2008中调用C#程序
- Silverlight配置web.config连接sql server 2008(学习笔记)
- SQL Server 2008中SQL查询语句字段值不区分大小写的问题解决