首先说表的定义--第一种
create table t(Id int,UserName varchar(20))
--第二种
create table #t(Id int,UserName varchar(20))
--第三种
declare @t table(Id int,UserName varchar(20))可能还有其他种,我知道的不多。问题一:
谁能告诉我为什么只有第一种可以在数据库的资源管理器中看到,其他的都看不到?
问题二:
#号是不是在sqlserver里有特殊的意义?然后是插入数据--第一种
insert into [tablename] values(1,'aaa')
--第二种
insert [tablename] select 1,'aaa'问题:不明白为什么用select也可以插入数据

解决方案 »

  1.   

    #t是临时表 
    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 
    法一:select * into b from a where 1 <>1 
    法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) 
    insert into b(a, b, c) select d,e,f from a; 3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) 
    insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 
    例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where.. 
      

  2.   


    --第一种
    create table t(Id int,UserName varchar(20)) --真正在数据库中创建一张表
    --第二种
    create table #t(Id int,UserName varchar(20))--在tempdb系统数据库中创建临时表
    --第三种
    declare @t table(Id int,UserName varchar(20))--指示一个表变量
      

  3.   

    --select 插入数据的用法
    if object_id('[tb]') is not null drop table [tb]
    create table [tb]([tid] int,[pid] int)
    insert [tb]
    select 1,1 union all
    select 1,5 union all
    select 2,3 union all
    select 3,6 union all
    select 2,0
      

  4.   

    --第一种
    insert into [tablename] values(1,'aaa')
    --第二种
    insert [tablename] select 1,'aaa'问题:不明白为什么用select也可以插入数据--这个其实就是语法问题,知道了就知道了,不知道就不会用