该SQL语句会使用到sys.extended_properties目录视图。
该视图的说明如下:
说明:该视图针对当前数据库中的每个扩展属性返回一行。
具体返回结果集中每列的含义请参考MSDN文档。
示例代码如下:
例如我要查询表table1的所有列的列说明:
select A.Value,B.Name,
C.Name as TypeName,B.Max_length,B.Precision,B.Scale
from sys.extended_properties A inner join sys.columns B
on A.major_id=B.object_id
and A.minor_id=B.Column_id
inner join sys.types c on B.user_type_id=C.user_type_id
where A.major_ID=object_id('Storage_Goods') and A.Value!=''
注意:目录视图只有SQL SERVER2005及以上版本才有。
② 如何扩展SQL以处理空间数据
利用SQL Server 2008中对空间数据的支持将空间能力添加到你的应用程序中。
使用测地学和平面数据类型
使用地理数据类型实现球体地球的解决方案:使用纬度和经度来定义地球表面的区域。使用几何数据类型实现平面地球解决方案:存储与设计的平面表面和实际的平面数据(例如内部空间)相关联的多边形、点和线。
③ 如何在SQL Server中实现扩展存储过程
存储过程的优点
(1)执行速度快。
存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译。
存储在数据库服务器,性能高。
(2)允许模块化设计。
只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改 。
(3)提高系统安全性。
可将存储过程作为用户存取数据的管道。可以限制用户对数据表的存取权限,建立特定的存储过程供用户使用,完成对数据的访问。
存储过程的定义文本可以被加密,使用户不能查看其内容
④ SQL增加记录语句怎么写
查询:select 字段名 from 表名 where 条件;
增加:insert into 表名(字段1,字段2,...) values('值1','值2',....) where 条件;
修改:update 表名 set 字段名='值' where 条件;
删除:delete 表名
⑤ 如何用sql语句增加记录
右键生成insert脚本,把insert的字段复制出来做select找一个其他科目做查询,注意看查询结果里边有金额的全手写0,有些字段改成null,然后直接insert就行了既然你丢了11个月的,不管你记账结账到什么时候,都返回到2月初重新记账结账当然如果你是大神可以自己按月计算出sum之后直接插入合计的数就不用反记账反结账了
⑥ 如何用SQL语句向一个表中插入多行记录
insert一般是用来给表插入一条指定的列值的,但是,insert还存在另一种形式,可以利用它将一条select语句的结果插入表中。
这就是所谓的insert select,顾名思义,它是由一条insert语句和一条select语句组成的。假如你从另一张表中合并客户列表到你的Custumers表,不需要每次读取一行,然后再将它用insert插入,可以如下进行:
insert into Custumer(cust_id,
cust_cintact,
cust_name,
cust_email,
cust_address,
cust_country)
select cust_id,
cust_cintact,
cust_name,
cust_email,
cust_address,
cust_country
from CustNew;
(6)用sql扩展记录扩展阅读
insert select中的列名为简单起见,这个例子在insert和select语句中使用了相同的列名,但是,不一定要求列名匹配。事实上,DBMS甚至不关心select返回的列名,它使用的是列的位置。
因此,select中的第一列(不管其列名)将用来填充表列中的指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。
⑦ 如何对SQL Server数据库进行横向扩展
一般人们会选择纵向扩展(scale up)SQL Server数据库,而非横向扩展(scale out)。纵向扩展很容易:增加硬件、处理能力、内存、磁盘和提高网络速度。其原理就是仍然在一台服务器上运行数据库,但是增加了服务器的处理能力和资源。这种方法很昂贵,但是非常简单直接。
采用云技术
有时候,最简单的方法就是将问题交由其他人处理。微软的Windows Azure云服务包含一个基于云的SQL Server版本SQL Azure.这在技术上并非真正意义的横向扩展,因为它是一种无限纵向扩展方法。所以,转移到Azure并不需要对您的应用程序进行大改动。实际上,您只需要将应用程序迁移到SQL Azure,然后支付存储、处理和数据传输费用。这些都是收费服务,但是您不需要再担心扩展问题。
复制
SQL Server原生复制是一种支持横向扩展的解决方案,与数据库的创建和使用方式有关。您只需要在多台服务器上复制多个数据库副本,然后将不同的用户指向各台服务器。这种方法通常最适合支持地理位置分散的用户,如亚洲办公室的用户使用服务器1,而北美办公室的用户则使用服务器2.每一台服务器都拥有完整的数据副本,并且会复制伙伴服务器的所有修改。
这种方法不支持自动负载均衡,并且最适合用在用户固定只使用一部分数据的情况。换而言之,如果亚洲用户只需要编辑与他们办公室相关的数据--例如,主要是亚洲客户的信息,那么复制能够保证其他数据库副本也包含这些记录的副本。如果所有用户都需要编辑完整的数据集,那么复制就变得有一些复杂,因为SQL Server必须在支持用户的同时,编辑位于不同服务器的同一个数据。
SQL Server的合并复制能够处理这种冲突,但是您必须进行一些自定义合并编程,这意味着您的开发人员必须开发一些算法,确定用户并发访问数据时谁获取编辑权限。客户应用程序也需要增加编程;使它们不仅向数据库提交数据修改,也要循环检查这些修改是否被其他并发用户重写。用户也需要重新培训,因为客户端应用程序可能会提示:"您正在编程的数据已经发生变化。您需要重新检查,确定您的编辑是否仍然有效。"
联合数据库
另一个重要的横向扩展方法是联合。通过这种方法,您可以将数据库划分到多台服务器上。垂直分割将同一个表的不同行保存到不同的服务器上。同时,地理分区是最常用的方法:将所有亚洲数据记录保存在一台服务器上,而所有欧洲数据则保存在另一台服务器上。这种方法不同于整体复制:每一个位置的服务器都不具备完整的数据库,而只拥有该位置的数据。通过实现一种SQL Server分布式分区视图而形成完整的表,用户就可以浏览一个"联合"或组合的数据视图。水平分割则将表的字段保存在不同的服务器上,因此各台服务器一起协作构成组合的表。
这些数据库的创建并不简单,其中涉及一种整体操作。您需要掌握关于数据访问和使用的详细信息,才能够实现正确的部署。此外,您还需要一位SQL Server数据库架构师,他应该全面理解这些技术,分析您的业务情况,并且能够正确地创建这些组件。
在一些情况中,实现这种横向扩展对客户端应用程序的改动很小。对于本身在设计上大量使用视图和存储过程进行数据访问的应用程序,更是如此。因为这些元素只是是在后台抽象,在客户端上不会发生变化。但是,这些应用程序并不常见;通常,实现横向扩展都需要修改客户端程序,使客户端与后台结构分离。
横向扩展并不简单
毫无疑问,实现SQL Server横向扩展非常复杂--这也是Azure等云数据库系统流行的原因之一。此外,有一些第三方供应商能够帮助实现横向扩展技术,而不需要完全依赖SQL Server的原生特性。您需要自己下功夫了解这些方法,理解数据访问和使用方法,这样才能够选择最符合您要求的方法。
⑧ sql语句怎么添加一条记录
sql语句中,添加记录的语法为:insert into 表名 (col1,col2....coln)values(value1,value2.....valuen);
其中,如果你插入的每一列都是顺序插入,无一缺漏的话,(col1,col2...coln)可以省略。
也就是上式也可以简化为:insert into 表名values(value1,value2.....valuen);
看了你写的sql代码,问题出在insert into 的整体语句出现在了不该出现的地方,只需做一点小改动即可解决,如下图:
解析:insert into语句需要在user表已经存在的情况下才可以使用。而你原来的语句中,将上图2中的语句插入到了create table user的语句中,致使create table user 语句未能成功执行,所以才会报错。
而将“INSERT INTO user(uid,tel) values('甲','3354986');”整条语句直接拿出来放在“ENGINE=InnoDB DEFAULT CHARSET=gbk;”后面之后,整个sql就可以顺利执行了。
(8)用sql扩展记录扩展阅读:
当mysql大批量插入数据的时候就会变的非常慢,mysql提高insert into 插入速度的方法有三种:
1、第一种插入提速方法:
如果数据库中的数据已经很多(几百万条), 那么可以加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M
举例:bulk_insert_buffer_size=100M;
2、第二种mysql插入提速方法:
改写所有 insert into 语句为insertdelayed into
这个insert delayed不同之处在于:立即返回结果,后台进行处理插入。
3、第三个方法: 一次插入多条数据:
insert中插入多条数据,举例:
insert into table values('11','11'),('22','22'),('33','33')...;
⑨ 使用SQL语句向表插入一条学生记录:(其中学号的值为自动编号)如何实现
insert into 表名(字段名逗号隔开(不用写自动增长那列)) values(对应的值也是逗号隔开)
要是每个字段都要插入那就可以写成
insert into 表名 values(顺序写值,每个字段都要写(不包括自动增长列))
into可以省略不写
insert into语句可以有两种编写形式:
1、无需指定要插入数据的列名,只需提供被插入的值即可:
insert into table_name
values (value1,value2,value3,...);
2、需要指定列名及被插入的值:
insert into table_name (column1,column2,column3,...)
values (value1,value2,value3,...);
(9)用sql扩展记录扩展阅读
SQL常用语句
查所有数据库 show databases;
创建数据库 create database db1;
查看数据库 show create database db1;
创建数据库指定字符集 create database db1 character set utf8/gbk
删除数据库 drop database db1;
使用数据库 use db1;
创建表 create table t1(id int,name varchar(10));
查看所有表 show tables;
查看单个表属性 show create table t1;
查看表字段 desc t1;
创建表指定引擎和字符集 create table t1(id int,name varchar(10)) engine=myisam/innodb charset=utf8/gbk;
⑩ 用SQL命令插入一个记录
1、在数据库中建立一张test表,可以看到test表中有id,name,second三个字段,id设置为自动递增,