1、查看表和试图
我们提供的服务有:成都网站设计、成都网站建设、微信公众号开发、网站优化、网站认证、沾化ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的沾化网站制作公司
SELECT * FROM sys.objects WHERE object_id = object_id('表名或视图名')
在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法
如下:
if object_id('tb_table') is not null
print 'exist'
else
print'not exist'
如上,可用object_id()来快速达到相同的目的,tb_table就是我将要创建的资源的名称,所以要先判断当前数据库中不存在相同的资源
object_id()可接受两个参数,第一个如上所示,代表资源的名称,上面的就是表的名字,但往往我们要说明我们所要创建的是什么类型的资源,
这样sql可以明确地在一种类型的资源中查找是否有重复的名字,如下:
if object_id('tb_table','u') is not null
print 'exist'
else
print'not exist'
第二个参数 "u" 就表示tb_table是用户创建的表,即:USER_TABLE地首字母简写
查询sys.objects中可得到各种资源的类型名称(TYPE列),这里之举几个主要的例子
u ----------- 用户创建的表,区别于系统表(USER_TABLE)
s ----------- 系统表(SYSTEM_TABLE)
v ----------- 视图(VIEW)
p ----------- 存储过程(SQL_STORED_PROCEDURE)
2、查看表的列名
select * from syscolumns where id=object_id('表名') and name='列名'
3、查看数据库
select * from sys.databases where name = 'student'
4、查看备份设备
"select * from sys.backup_devices where name ='backupdb'
(添加备份设备:exec sp_addumpdevice 'disk','backupdb','d:\\backup\\backupdb.bak')
5、查看数据文件
select name, physical_name dbfile from sys.master_files where database_id=db_id('student')
master数据库中sysdatabases表(是sqlserver中所有的数据库的库名) :
如果你要查询的是所有数据库(用户/系统):
select * from master..sysdatabases
如果你要查询的是用户数据库,则使用:
select * from master..sysdatabases where dbid 4
如果你要查询的是系统数据库,只需要把where字句改为dbid 4即可。
6、查看执行的sql语句
SELECT cacheobjtype,objtype,usecounts,sql
from sys.syscacheobjects where sql not like'%cach%' and sql not like '%sys.%'
2.对应数据库中sysobjects表(反应的是相应数据库中所有的对象):
这个表的用处是最大的,因为它里面存放的有:表(系统/用户)、存储过程(系统/用户)、视图、主键、外键等。
这里就不一一说明了。
比如你sqlserver中有个数据库名叫 test,如果要查询该数据库中的所有表对象:
select * from test..sysobjects where type = ’u’ or type = ’s’
这里的type = ’u’是表示用户表对象,type = ’s’是系统表对象,怎样单独查询用户表对象或者系统表对象就不用说了吧。
如果你要查询的是存储过程当然也分了系统和用户了:
这个是查询数据库中所有存储过程
select * from test..sysobjects where type = ’p’
如果你要查询的是用户存储过程则加上 and category 2 即可。
查询系统存储过程就不用说了吧(category = 2 谁不知道。。。)
查询视图与查询存储过程一样,比如:
你查询的是数据库中所有视图
select * from test..sysobjects where type = ’v’
如果你要查询的是用户视图则加上 and category 2 即可。
其他的就不说了,就把 它们的type给大家说下:
type = ’ pk’ 表示主键。
type = ’ d’ 外键引用。
type = ’uq’ 唯一索引。
下面附录一些常用系统表
名称 地址 说明
sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号
syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexs 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
sysusers 每个数据库 用户
方法/步骤第一步:设计一张表,新加入一个字段“test”,数据类型为“numeric(18,1)”,不允许null值(如果你允许为null值的话,你所设置的默认值会无效,会默认为null)第二步:找到列属性下的“默认值或绑定”,在后面输入框中输入自己设置的默认值,例如“0”;设置好了以后,保存第三步:查询这张表的数据,你会发现新添加的“test”字段,已经有了值,就是刚刚前面设置的默认值“0”,因为数据类型是"numeric(18,1)"有一位小数,所以值是“0.0”
1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2、查询SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties')) 3、在Sql查询分析器,还有一个简单的查询方法: EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count(*) 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束L = 日志FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程S = 系统表TF = 表函数
TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjects.name from sysobjects.xtype ='U';SELECT name
WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status0,即:select * from sysobjects where xtype='U' and status0
sysconstraints 这个表
其中id表示拥有该约束的表ID,
status表示是哪种约束
位图指示状态。可能的值包括:
1 = PRIMARY KEY 约束。
2 = UNIQUE KEY 约束。
3 = FOREIGN KEY 约束。
4 = CHECK 约束。
5 = DEFAULT 约束。
16 = 列级约束。
32 = 表级约束。
colid嘛,是表示约束列的ID
sql server 的默认数据库是针对用户的。即用户登陆,默认连接的数据库。
例:数据库列表为:
将sa用户默认数据库设置为"glkf"
然后使用SA登陆,默认连接的是glkf数据库,系统默认则是 master数据库。
首先你不能给这个属性填充值,哪怕是null都不可以,不然它会把null插入到表里;给你举个例子:假设Users表:属性:uid,username,userpass,rid(状态,默认为0)你向这个user表里插入数据的时候可以这么插入:insert into Users(username,userpass) values('zhangsan','zhangsan')这样你得rid就会有一个默认值0,如果你插入了null,那么它就不会默认为0了,它就有值了,为null;