精华内容
下载资源
问答
  • myBatis配置实现数据库字段下划线映射到java对象驼峰式命名属性。 在mybatisConfig.xml配置文件中添加如下设置: !--设置启用数据库字段下划线映射到java对象驼峰式命名属性,默认为false--> 在mybatis配置...

    myBatis配置实现数据库字段下划线映射到java对象的驼峰式命名属性。

    在mybatisConfig.xml配置文件中添加如下设置:

    !--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
    <setting name="mapUnderscoreToCamelCase" value="true"/>

    在mybatis的配置文件里加入如上的配置,就基本不用property进行字段和实体和属性的映射

     在进行sql查询和初始化实体时mybatis会为我们自动转化,写sql语句的时候也不必为有下划线的字段设置与实体类相同的别名。
    如未加配置之前的sql查询语句为:
    select id, user_name as userName, user_sex as userSex, user_age as userAge from user
    加入配置之后的sql语句为:
    select id, user_name, user_sex, user_age from user

    备注:

    resultMap中的property属性或别名要和对象中属性的名字相同,但是实际匹配是,MyBatis会先将两者都转换为大写形式,然后再判断是否相同,即property=“userName”和property=“username”都可以匹配到对象userName属性上。

    展开全文
  • 目录SQLyog工具数据库的一些基本操作命令结构化查询语句数据值和列类型列类型数据字段属性数据表类型数据表存储位置 : SQLyog工具     一款可视化操作数据库的工具,简洁,易用,图形化,可是基本...

    SQLyog工具

        一款可视化操作数据库的工具,简洁,易用,图形化,可是基本的DOS命名大家还是要记住!
    下载地址:
    打开后可以看到:
    在这里插入图片描述
    点击测试连接;查看是否可以连接成功,进入后:
    在这里插入图片描述
    使用SQLyog管理工具自己完成以下操作 :

    • 连接本地MySQL数据库
    • 新建MySchool数据库
    • 数据库名称MySchool
    • 新建数据库表(grade)
    • 字段
      GradeID : int(11) , Primary Key (pk)
      GradeName : varchar(50)

    数据库的一些基本操作命令

    update user set password=password('123456')where user='root'; 修改密码
    flush privileges;  刷新数据库
    show databases; 显示所有数据库
    use dbname; 选择某个数据库并打开
    show tables; 显示数据库mysql中所有的表
    describe user; 显示表mysql数据库中user表的列信息
    create database name; 创建数据库
    
    exit; 退出Mysql
    ? 命令关键词 :寻求帮助
    #表示注解
    help:出现所有帮助
    

    结构化查询语句

    名称 解释 命令
    DDL(数据定义语言) 定义和管理数据对象,如数据库,数据表等 CREATE、DROP、ALTER
    DML(数据操作语言) 用于操作数据库对象中所包含的数据 INSERT、UPDATE、DELETE
    DQL(数据查询语言) 用于查询数据库数据 SELECT
    DCL(数据库控制语言) 用来管理数据库的语言,包括管理权限及数据更改 GRANT、COMMIT、ROLLBACK

    数据值和列类型

    列类型

    列类型:规定数据库中该列存放的数据类型

    • 数值类型
    类型 说明 取值范围 存储需求
    tinyint 非常小的数据 有符值:-27~27-1 无符值:0~28-1 1字节
    smallint 较小的数据 有符值:-215~215-1 无符值:0~216-1 2字节
    mediumint 中等大小的数据 有符值:-223~223-1 无符值:0~224-1 3字节
    int 常用整数 有符值:-231~231-1 无符值:0~232-1 4字节
    bigint 较大的整数 有符值:-263~263-1 无符值:0~264-1 8字节
    float 单精度浮点数 ±1.1754351e -38 4字节
    double 双精度浮点数 ±2.225073858507e -308 8字节
    decimal 字符串形式的浮点数 decimal(m,d) m字节
    • 字符串类型
    类型 说明 取值范围
    char[(M)] 固定长字符串,检索快但费时间,0<=M<=255 M字符
    varchar[(M)] 可变字符串,0<=M<=65535 可变长度
    tinytext 微型文本串 28-1字节
    text 文本串 216-1字节
    • 日期和时间型数值类型
    类型 说明 取值范围
    DATE YYYY-MM-DD,日期格式 1000-01-01~9999-12-31
    TIME Hh:mm:ss,时间格式 -838:59:59~838:59:59
    DATETIME YY-MM-DD hh:mm:ss 1000-01-01 00:00:00~9999-12-31 23:59:59
    TIMESTAMP YYYYMMDDhhmmss格式表示的时间戳 197010101000000~2037年的某一个时刻
    YEAR YYYY格式的年份 1901~2155
    • NULL值

    理解为没有值或未知值,用null进行结果运算,结果还是null

    数据字段属性

    UnSigned:

    • 无符号的
    • 声明该数据列不允许负数

    ZEROFILL:

    • 0填充的
    • 不足位数的用0来填充,如int(3),5表示结果为005

    Auto_InCrement:

    • 自动增长的,没添加一条数据,自动在还是哪个一个记录数上加1(默认)
    • 通常用于设置主键,且为整数类型
    • 可定义其实质和步长
      当前表设置步长( AUTO_INCREMENT=100):只影响当前表
      SET@@suto_increemnt_increment=5;影响所有使用自增长的表(全局)

    NULLNOT NULL:

    • 默认为NULL,即没有插入该列的数值
    • 如果设置为NOT NULL,该列必须有值

    DEFAULT:

    • 默认的
    • 用于设值默认值
      例如,姓名字段,默认为"男",否则为"女";若无指定该列的值,则默认值为"男"的值

    数据表类型

    CREATE TABLE 表名{
    	#省略代码
    }ENGINE =MyISAM (or InnoDB)
    #查看mysql所支持的引擎类型(表类型)
    SHOW ENGINES;
    #查看默认引擎
    SHOW VARIABLES LIKE 'storage_engine';
    

    Mysql的数据类型的类型有:MyISAM,InnoDB,HEAP,BOB,CSV等…
    常见的MyISAM和InnoDB类型比较:

    名称 MyISAM InnoDB
    事务处理 不支持 支持
    数据行锁定 不支持 支持
    外键约束 不支持 支持
    全文索引 支持 不支持
    表空间大小 较小 较大,约2倍

    使用场合:

    • 使用MyISAM:节约空间及相应速度
    • 使用InnoDB:安全性,事务处理及多用户操作数据表

    数据表的存储位置 :

    MySQL数据表以文件方式存放在磁盘中
    包括表文件 , 数据文件 , 以及数据库的选项文件
    位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表 .
    注意 :
    InnoDB类型数据表只有一个 *.frm文件 , 以及上一级目录的ibdata1文件
    MyISAM类型数据表对应三个文件 :

    • . frm – 表结构定义文件
    • . MYD – 数据文件(data)
    • . MYI – 索引文件(index)
    展开全文
  • 数据库的基本属性,你知道吗?

    千次阅读 2012-10-21 10:25:54
    以前在做数据库脚本开发时,新建表时,对各个字段的描叙要么是记录在文档里面,要么自己建一个表,来保存这些内容,以便日后开发、维护的方便。其实这些信息完全可以放在数据库自己的系统视图里面。 对字段的...
    用SQL Doc生成数据库字典文档的时候,突然发现有字段描叙(Description)这项内容,以前一直没有注意过,故特意研究了一下,结果越挖越深,就写了这篇文章。
    以前在做数据库脚本开发时,新建表时,对各个字段的描叙要么是记录在文档里面,要么自己建一个表,来保存这些内容,以便日后开发、维护的方便。其实这些信息完全可以放在数据库自己的系统视图里面。
    对字段的说明、描述一般都放在系统视图sys.extended_properties中,例如(表dbo.Employee的字段Department的说明)
    [c-sharp] view plaincopy
    1. SELECT * FROM dbo.Employee  
    2. SELECT * FROM sys.extended_properties   
     

     

    其中 当class =1时,major_id它的值是dbo.Employee的id,minor_id是Department的id(详细信息参见MSDN),如下图所示

     

    SELECT OBJECT_ID(N'dbo.Employee')

    SELECT  column_id FROM    sys.columns
    WHERE   object_id = OBJECT_ID('dbo.Employee')
            AND name = 'Department'

     

     

    其实在MSSMS 管理器中,选中要添加字段说明的表,单击右键——》修改(08是设计),如下图所示,增加后,保存。就会在sys.extended_properties里添加相应的记录。

     

    当然你也可以用脚本命令添加数据库表的字段说明
    EXEC sp_addextendedproperty N'MS_Description', N'雇员名称', 'SCHEMA', N'dbo', 'TABLE', N'Employee', 'COLUMN', N'EmployeeName'

     

     

    如果已经存在刚才记录,你再执行上面这段脚本,就会提示:

    消息 15233,级别 16,状态 1,过程 sp_addextendedproperty,第 38 行
    无法添加属性。'dbo.Employee.EmployeeName' 已存在属性 'MS_Description'。

     

    下面看看工具生成的文档,工具生成这些信息肯定是数据库里存有对象的这些信息,下面我们来看看这些信息都是从何而来吧

     这里先列举一些保存表信息的系统表、视图吧,可能有些遗漏了,实在太多了,要仔细把这些全部列举出来还得花费一番功夫

    代码
    SELECT * FROM sys.columns

    --为每个表和视图中的每列返回一行,并为数据库中的存储过程的每个参数返回一行。
    SELECT * FROM syscolumns

    --每个表对象的信息
    SELECT * FROM sys.tables

    SELECT * FROM sysobjects

    --在数据库中创建的每个用户定义的架构范围内的对象的信息
    SELECT * FROM sys.objects

    --数据库实例中的每个数据库的信息
    SELECT * FROM sys.databases

    --系统数据类型
    SELECT * FROM sys.types

    --含数据库中每个视图、规则、默认值、触发器、CHECK 约束、DEFAULT 约束和存储过程的项
    SELECT * FROM dbo.syscomments

    --保存表的自增列信息
    SELECT * FROM sys.identity_columns

     

     

    下面来看看属性那栏的信息保存在那些表里面。如果表是数据库的默认排序规则,就可以用下面脚本。
    代码
    SELECT  create_date  AS Created ,
            modify_date  AS Last Modified,
            ( SELECT    collation_name
              FROM      sys.databases
              WHERE     name = 'MyAssistant'
            ) AS collation_name
    FROM    SYS.tables
    WHERE   NAME = 'Employee'

     

    如果用某个列的排序规则可用下面的脚本
    代码
    SELECT  create_date  AS Created,
            modify_date  AS Last Modified,
            ( SELECT DISTINCT
                        collation
              FROM      syscolumns
              WHERE     id = OBJECT_ID(N'dbo.Employee')
                        AND collation IS NOT NULL
                        AND name ='EmployeeName'
            ) AS collation_name
    FROM    sys.tables
    WHERE   NAME = 'Employee'

     

    查看数据库的排序规则可以从 sys.databases查看,而表的某个列的排序规则信息保存在syscolumns里面。上图的Heap, Row Count信息我还不知是从哪里来的。
    接下来看看Cloumns信息吧
    代码
    SELECT 
        C.Name AS FieldName,
        T.Name AS DataType,
        CASE WHEN C.Max_Length = -1 THEN 'Max' ELSE CAST(C.Max_Length AS VARCHAR) END AS Max_Length,
        CASE WHEN C.is_nullable = 0 THEN '×'  ELSE '√' END AS Is_Nullable,
        C.is_identity,
        ISNULL(M.text, '')  AS  DefaultValue,
        ISNULL(P.value, '') AS FieldComment
        
    FROM sys.columns  C
    INNER JOIN  sys.types T ON C.system_type_id = T.user_type_id
    LEFT JOIN dbo.syscomments M ON M.id = C.default_object_id
    LEFT  JOIN sys.extended_properties P ON P.major_id = C.object_id AND C.column_id = P.minor_id 
    WHERE C.[object_id] = OBJECT_ID('dbo.Employee')
    ORDER BY C.Column_Id ASC

     

    如图所示,得到结果与文档还是有些区别,我通过该脚本实现与文档一致的时候,怎么也找不到nvarchar(30)的30,这个值的出处,后来才发现它其实就是nvarchar的max_length 的一半。

     

    修改脚本如下所示 

    代码
    SELECT 
        C.Name AS FieldName,
        CASE WHEN T.Name ='nvarchar' THEN 
                  T.name +'(' + CAST(C.max_length/2 AS VARCHAR) +')' 
             ELSE T.name END AS DataType,
        CASE WHEN C.Max_Length = -1 THEN 'Max' ELSE CAST(C.Max_Length AS VARCHAR) END AS Max_Length,
        CASE WHEN C.is_nullable = 0 THEN '×'  ELSE '√' END AS Is_Nullable,
        ISNULL(CAST(I.seed_value AS VARCHAR) + '-' + CAST(I.increment_value AS VARCHAR), '') AS is_identity,
        ISNULL(M.text, '')  AS  DefaultValue,
        ISNULL(P.value, '') AS FieldComment
        
    FROM sys.columns  C
    INNER JOIN  sys.types T ON C.system_type_id = T.user_type_id
    LEFT  JOIN  dbo.syscomments M ON M.id = C.default_object_id
    LEFT  JOIN  sys.extended_properties P ON P.major_id = C.object_id AND C.column_id = P.minor_id 
    LEFT  JOIN  sys.identity_columns I ON I.column_id= C.column_id AND C.object_id = I.object_id
    WHERE C.[object_id] = OBJECT_ID('dbo.Employee')
    ORDER BY C.Column_Id ASC

     

     

    接下来看看Perssion信息来自何处。 首先我们来看看赋与、收回权限的脚本(我是在sa账号下运行的)

    代码
    DENY  SELECT ON [dbo].[Employee] TO [Kerry]
    GO

    GO
    DENY DELETE ON [dbo].[Employee] TO [Kerry]
    GO

    REVOKE DELETE ON [dbo].[Employee] TO [Kerry]
    GO

    REVOKE SELECT ON [dbo].[Employee] TO [Kerry]
    GO 

     

    那么这些权限信息保存在那个系统表或系统视图中,我查了很多资料,还是没有查到,呵呵,希望有知道的告诉一声。但是可以同过系统函数和系统存储过程得到一些相关的权限设置信息。

    1:系统存储过程 sp_table_privileges, 它返回指定的一个或多个表的表权限(如 INSERT、DELETE、UPDATE、SELECT、REFERENCES)的列表,表具体参见(MSDN)。 

    2:系统函数 fn_my_permissions 返回有效授予主体对安全对象的权限的列表,表具体参见(MSDN)

    EXEC sp_table_privileges @table_name = 'Employee';

    EXEC sp_table_privileges @table_name ='Employee' , @table_owner ='dbo'

     

     

     

    SELECT * 
    FROM fn_my_permissions('dbo.Employee', 'OBJECT') 
    ORDER BY subentity_name, permission_name ; 

     

     

    --查看用户Kerry的有效权限
    SELECT * FROM fn_my_permissions('Kerry', 'USER');

     

    再来看看SQL Srcipt,好像没有那个系统表、系统视图保存创建表的脚本(如果有的话,算我孤陋寡闻了),也不能通过SP_HELPTEXT来得到(存储过程可以),在

    网上搜索了下大概有SMO 方式和存储过程来实现的,SMO方式我还没来得及验证,存储过程倒是找到一个(本来打算自己尝试下的。呵呵,那这篇文章得耗上好长时间了,等写完了,自己再写个试试),下面的存储过程是我在http://edu.codepub.com/2009/0603/5408.php这里搜索到,也不知道原创作者是谁。

     

    代码
    If object_id('up_CreateTable') Is Not Null
        Drop Proc up_CreateTable
    Go
    /* 生成建表脚本(V2.0)  OK_008 2009-5-18 */
    Create Proc up_CreateTable
    (
        @objectList nvarchar(max)=null
    )
    --With ENCRYPTION
    As
    /*  参数说明:
        @objectList 对象列表,对象之间使用","隔开
        
        改存储过程生成的建表脚本,包含Column,Constraint,Index
    */
    Set Nocount On
        Declare @sql nvarchar(max),
                @objectid int,
                @id int,
                @Rowcount int,
                @ObjectName sysname,
                @Enter nvarchar(2),
                @Tab nvarchar(2)

        Select     @Enter=Char(13)+Char(10),
                @Tab=Char(9)    

        Declare @Tmp Table(name sysname)
        
        If @objectList>''
        Begin
            Set @sql='Select N'''+Replace(@objectList,',',''' Union All Select N''')+''''
            Insert Into @Tmp (name) Exec(@sql)

            Set @sql=null
            Select @sql=Isnull(@sql+',','')+name 
                From @Tmp As a
                Where Not Exists(Select 1 From sys.objects Where type='U' And name=a.name)

            If @sql>''
            Begin
                Set @sql='发现无效的表名: '+@sql
                Raiserror 50001 @sql
                Return(1)
            End
        End

        If object_id('tempdb..#Objects') Is Not Null
            Drop Table #Objects
        
        If object_id('tempdb..#Columns') Is Not Null
            Drop Table #Columns    
        
        Create Table #Objects(id int Identity(1,1) Primary Key,object_id int,name sysname)

         
        ;With t As 
        (
        Select Object_id,Convert(int,0) As LevelNo,name As object_name
                From sys.objects a 
                Where Type='U' And is_ms_shipped=0 And Not Exists(Select 1 From sys.foreign_keys Where referenced_object_id=a.object_id)
        Union All
        Select a.referenced_object_id As Object_id,b.LevelNo+1 As LevelNo,c.name As object_name
            From sys.foreign_keys a 
                Inner Join t b On b.object_id=a.parent_object_id
                Inner Join sys.objects c On c.object_id=a.referenced_object_id And c.is_ms_shipped=0
        )
        Insert Into #Objects(object_id,name)
            Select a.object_id,object_name
                From t a
                Where    Not Exists(Select 1 From t Where object_id=a.object_id And LevelNo>a.LevelNo) And
                        Not Exists(Select 1 From sys.extended_properties Where major_id=a.object_id And minor_id=0 And class=1 And Name=N'microsoft_database_tools_support')
                        And (Exists(Select 1 From @Tmp Where name=a.object_name) Or Not Exists(Select 1 From @Tmp))
                Group By object_id,object_name,LevelNo
                Order By LevelNo Desc

        Set @Rowcount=@@Rowcount
        If @Rowcount=0
        Begin
            Raiserror 50001 N'没有可以生产脚本的表!'
            Return(1)
        End

        --Column
        Select    a.object_id,
                a.column_id As Seq,
                Cast(1 As tinyint) As DefinitionType,
                Quotename(a.name)+Char(32)+ c.name +
                Case 
                    When a.user_type_id In (231,239) Then '('+Case a.max_length When -1 Then 'Max' Else Rtrim(a.max_length/2) End +')'
                    When a.user_type_id In (62,165,167,173,175) Then '('+Case a.max_length When -1 Then 'Max' Else Rtrim(a.max_length) End+')'
                    When a.user_type_id In (106,108) Then '('+Rtrim(a.[precision])+','+Rtrim(a.scale)+')' 
                    Else ''
                End
                + Char(32)+
                Case a.is_rowguidcol When 1 Then 'Rowguidcol ' Else '' End +
                Case a.is_identity When 1 Then 'Identity('+Cast(d.seed_value As nvarchar(10))+','+Cast(d.increment_value As nvarchar(10))+') ' Else '' End+ 
                Case a.is_nullable When 1 Then 'Null ' Else 'Not Null ' End+
                Isnull('Constraint '+Quotename(e.name)+' Default('+e.definition+')','') As definition

                Into #Columns
            From sys.columns As a
                Inner Join #Objects As b On b.object_id=a.object_id
                Inner Join sys.types As c On c.user_type_id=a.user_type_id
                Left Outer Join sys.identity_columns As d On d.object_id=a.object_id And d.column_id=a.column_id And a.is_identity=1
                Left Outer Join sys.Default_constraints As e On e.object_id=a.default_object_id And e.parent_column_id=a.column_id

            Create Nonclustered Index IX_#Columns_object_id On #Columns(object_id Asc)

            --Constraint
            Insert Into #Columns
        
            Select    a.parent_object_id As object_id,
                    Row_number() Over(Partition By a.parent_object_id Order By Case a.type When 'PK' Then 1 When 'C' Then 2 Else 3 End)As Seq,
                    2 As DefinitionType,
                    'Alter Table '+Quotename(object_name(a.parent_object_id)) +' Add Constraint '+Quotename(a.name)+
                    Case a.type 
                        When 'PK' Then ' Primary Key '+Case When Exists(Select 1 From sys.indexes Where object_id=a.parent_object_id And is_primary_key=1 And type=1) Then N'Clustered ' Else N'Nonclustered ' End+
                                                    '('+Stuff((Select ','+Quotename(c1.Name)+Case a1.is_descending_key When 1 Then ' Desc' Else ' Asc' End
                                                            From sys.index_columns As a1
                                                                Inner Join sys.indexes As b1 On b1.object_id=a1.object_id And b1.index_id=a1.index_id And b1.is_primary_key=1
                                                                Inner Join sys.columns As c1 On c1.object_id=a1.object_id And c1.column_id=a1.column_id
                                                            Where a1.object_id=a.parent_object_id 
                                                            For Xml Path('')
                                                        ),1,1,'')+
                                                    ')'
                        When 'F' Then ' Foreign Key ('+Stuff((Select ','+Quotename(b1.Name)
                                                            From sys.foreign_key_columns As a1
                                                                Inner Join sys.columns As b1 On b1.object_id=a1.parent_object_id And b1.column_id=a1.parent_column_id
                                                            Where a1.constraint_object_id=a.object_id 
                                                            Order By a1.constraint_column_id
                                                            For Xml Path('')
                                                        ),1,1,'')+
                                                    ') References '+(Select Quotename(object_name(referenced_object_id)) From  sys.foreign_keys Where object_id=a.object_id)+
                                                    ' ('
                                                        +Stuff((Select ','+Quotename(b1.Name)
                                                            From sys.foreign_key_columns As a1
                                                                Inner Join sys.columns As b1 On b1.object_id=a1.referenced_object_id And b1.column_id=a1.referenced_column_id
                                                            Where a1.constraint_object_id=a.object_id 
                                                            Order By a1.constraint_column_id
                                                            For Xml Path('')
                                                        ),1,1,'')+
                                                    ')'
                        When 'UQ' Then ' Unique'+(Select Case a1.type When 1 Then ' Clustered' Else ' Nonclustered' End
                                                        From sys.indexes As a1
                                                        Where a1.object_id=a.parent_object_id 
                                                                    And Exists(Select 1 From sys.key_constraints Where object_id=a.object_id And parent_object_id=a1.object_id And unique_index_id=a1.index_id)
                                                   )+                        
                                                    '('+Stuff((Select ','+Quotename(c1.Name)+Case a1.is_descending_key When 1 Then ' Desc' Else ' Asc' End
                                                            From sys.index_columns As a1
                                                                Inner Join sys.indexes As b1 On b1.object_id=a1.object_id And b1.index_id=a1.index_id And b1.is_unique_constraint=1
                                                                Inner Join sys.columns As c1 On c1.object_id=a1.object_id And c1.column_id=a1.column_id
                                                            Where a1.object_id=a.parent_object_id 
                                                                    And Exists(Select 1 From sys.key_constraints Where object_id=a.object_id And parent_object_id=a1.object_id And unique_index_id=a1.index_id)
                                                            For Xml Path('')
                                                        ),1,1,'')+
                                                    ')'
                        When 'C' Then ' Check' +(Select definition From sys.check_constraints Where object_id=a.object_id)
                        Else ''
                    End As definition

                From sys.objects As a
                Where a.type In('PK','F','C','UQ')
                        And Exists(Select 1  From #Objects Where object_id=a.parent_object_id)

            --Index
            Insert Into #Columns
            Select    a.object_id ,
                    a.index_id As Seq,
                    3 As DefinitionType,
                    'Create '+Case a.is_unique When 1 Then 'Unique ' Else '' End+
                    Case a.type When 1 Then 'Clustered ' Else 'Nonclustered ' End+
                    'Index '+Quotename(a.name)+' On '+Quotename(b.name)+
                                            ' ('+Stuff((Select ','+Quotename(b1.Name)+Case a1.is_descending_key When 1 Then ' Desc' Else ' Asc' End
                                                            From sys.index_columns As a1
                                                                Inner Join sys.columns As b1 On b1.object_id=a1.object_id And b1.column_id=a1.column_id
                                                            Where a1.object_id=a.object_id And a.index_id=a1.index_id And a1.is_included_column=0
                                                            For Xml Path('')
                                                        ),1,1,'')+
                                            ')'+
                                            Isnull(' Include('+Stuff((Select ','+Quotename(b1.Name)
                                                            From sys.index_columns As a1
                                                                Inner Join sys.columns As b1 On b1.object_id=a1.object_id And b1.column_id=a1.column_id
                                                            Where a1.object_id=a.object_id And a.index_id=a1.index_id And a1.is_included_column=1
                                                            For Xml Path('')
                                                        ),1,1,'')+
                                            ')','')
                        As definition
                From sys.indexes As a
                    Inner Join #Objects As b On b.object_id=a.object_id
                Where a.type>0
                        And Not Exists(Select 1 From sys.key_constraints Where parent_object_id=a.object_id And unique_index_id=a.index_id)

            

            --Print
            

            Print 'Use '+Quotename(db_name())+@Enter+'Go'+@Enter+'/* 创建表结构 Andy '+Convert(nvarchar(10),Getdate(),120)+'*/'+@Enter

            Set @id=1
            While @id<=@Rowcount
            Begin
                Select @objectid=object_id,@ObjectName=name From #Objects Where id=@id

                Set @Sql=@Enter+'--('+Rtrim(@id)+'/'+Rtrim(@Rowcount)+') '+@ObjectName+@Enter+'If object_id('''+Quotename(@ObjectName)+''') Is Null'+@Enter+'Begin'+@Enter+@Tab+
                        'Create Table '+Quotename(@ObjectName)+@Enter+@Tab+'('+@Enter
                Select @Sql=@Sql+@Tab+@Tab+definition+','+@Enter
                    From #Columns 
                    Where object_id=@objectid 
                            And DefinitionType=1
                    Group By Seq,definition
                    Order By Seq
                Set @sql=Substring(@sql,1,Len(@sql)-3)+@Enter+@Tab+')'+@Enter
                Select @Sql=@Sql+@Tab+definition+@Enter
                    From #Columns 
                    Where object_id=@objectid 
                            And DefinitionType>1
                    Group By DefinitionType,Seq,definition
                    Order By Seq

                Print Substring(@sql,1,Len(@sql)-2)+@Enter+'End'
                Set @id=@id+1
            End

            Print 'Go'

        Drop Table #Columns
        Drop Table #Objects
    Go
    展开全文
  • 在CodeSmith中为了实现对数据库中表字段选择和针对字段来设置属性,决定用XML文件作为中间数据交换方式,在CodeSmith中读取数据库对象信息不再使用SchemaExplorer来读取,而是转为直接对XML文件读取。...

       在CodeSmith中为了实现对数据库中表字段的选择和针对字段来设置属性,决定用XML文件作为中间数据的交换方式,在CodeSmith中读取数据库对象的信息不再使用SchemaExplorer来读取,而是转为直接对XML文件的读取。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    这两天做了一个配置工具,先发个界面上来:

    <?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />PIC072.gif

    主要是用SQLDMO来获取数据库中的对象信息,并通过PropertyGrid控件来进行属性的设置,基本的功能已经实现。

     

    网友的意见:

    主界面从上往下由以下控件构成:
    1.菜单
    2.工具栏(数据库连接按钮、?、保存、退出)
    3.左侧是TabControl和treeview控件、中间是Label(BorderStyle=Fixed3D)和ListView控件、右侧是PropertyGrid

    根据界面,本人的实现思路如下:
    1.数据库treeview列表
    单击[数据库连接按钮]打开数据源配置对话框,其中包括数据源、连接字符串等等.如果数据源是SQL Server库可用以下方式枚举SQL Server实例
    using System.Data.Sql

    private void EnumInstance()
    {
    SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
    DataTable dataTable = instance.GetDataSources();
    //将数据库实例名添加至ComboBox,假如窗体有cboInstance控件
    foreach (DataRow row in dataTable.Rows)
    {
    cboInstance.Items.Add(row[1]);
    }
    }

    数据源连接如果能成功打开,则:将实例下的所有数据库加载至TreeView控件(数据库名可从SQL Server系统字典中获得,Oracle库同理)
    某个SQL Server实例下的所有数据库可通过如下语句获得:
    select name from master..sysdatabases

    2.TreeView控件内容:
    单击左侧树形结点至[表]结点后,引发treeView控件的AfterSelect事件,AfterSelect事件的内容大概如下:
    select * from sysobjects //获得库中的表信息
    select * from syscolumns //获得库中的列信息

    用sysobjects和syscolumns两表作内联结就应该能做出ListView的内容项

     

    我用的是SQLDMO,没有用SQL语句去系统表中查询

     

    出处:http://terrylee.cnblogs.com

    展开全文
  • 由于代码基本完成,改代码时,需要添加个属性,为了不改太多代码,只能添加到实体类中 数据库表中没有这个列,spring效验导致报错, 会报类似:Cause: ...
  • sails 数据库字段

    千次阅读 2018-11-09 17:16:34
    模型的属性是一个模型的基本的信息。一个Person的模型可能有属性叫做firstName,lastName,phoneNumber,age,birthDate和emailAddress。 属性选项 这些选项可以用来执行各种约束条件并且添加特殊的增强功能到我们的...
  • 属性 存储空间 描述 char/varchar 1字节 定、变长字符型数据 nchar/nvarchar 2个字节 nchar、nvarchar用来存储Unicode字符集定、变长字符型数据 text...
  • MYSQL数据库字段命名及设计规范

    万次阅读 2018-01-12 09:12:01
    1. 设计原则 ...简单来说,遵守3NF标准的数据库的表设计原则是:“OneFactinOnePlace”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间关系通过外键相连接。它具有以下
  • 数据库字段命名及设计规范

    千次阅读 2015-03-17 09:26:30
    转至元数据起始 ...数据标准化有助于消除数据库数据冗余。标准化有好几种形式,但 ...简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当
  • 1.设计原则 1) 标准化和规范化 ...简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间关系通过外键...
  • 今天在写代码时候,发现使用insertSelective时,有一个字段type值无法插入到数据库中。 查看日志中Sql语句: 发现这里并没有包含这个字段 后来想起来,我之前看到一个要求: JavaBean 整体要求: 不得...
  • 简单来说,遵守3NF 标准的数据库的表设计原 则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间关系通过外键 相连接。它...
  • 创建表SQL语句,指定表名,每个字段的名称,每个字段的数据类型;数据类型,最基本的,有数值型和字符串型;不能混乱;在数值型字段不能录入字符串值;在字符串型字段录入数字,该数字其实是字符串; ..
  • [b]1.设计原则[/b] 1) 标准化和规范化 ...简单来说,遵守3NF 标准的数据库的表设计原 则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之...
  • 数据库中用来存储数据的基本单位就是表; 一个表包括若干字段或记录; 在数据库中,大多数时,表的“列”称为“字段” ,每个字段包含某一专题的信息。就像“通讯录”数据库中,“姓名”或“联系电话”这些都是表...
  • 数据库字段有详细说明 鱼鱼 WEB IM 20090818 本程序版权归暗夜qq240766341、310880211所有, 此程序非经暗夜许可禁止用于商业用途, 作者保留该程序名称、源码等相关权利] [----------------------------------...
  • 1.我们给每个表都加上ID、CODE、创建日期、最后修改日期、备注、数据状态公共字段,方便后续操作 规则:以SYS_USER表为例,加上如下字段USER_ID,USER_CODE,GMT_CREATE,GMT_MODIFIED,MEMO,DATA_STATE 系统表...
  • 数据库的基本概念

    2020-01-10 11:43:22
    数据库的基本概念 描述事物的符号记录称为数据包括数字,文字,图形,图像,声音,档案记录等以记录形式按统一的格式进行存储每一行记录:行每一段字段-属性-列 从而形成了表表将不同的记录组织在一起,就形成了表...
  • 我们知道,sql里面的字段基本都是下划线分隔单词的(aa_bb_cc),而在类中我们一般使用驼峰表达式(aaBbCc),我们进行类的属性和sql字段的对应的时候,一般都会改动很大,而且最关键的是容易出错。通过下面这些小...
  • 在Django中,定义了一些Field来与数据库表中的字段类型来进行映射。以下将介绍那些常用的字段类型。 AutoField: 映射到数据库中是int类型,可以有自动增长特性。一般不需要使用这个类型,如果不指定主键,那么...
  • 比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库的字段就行。但是如果系统经常会访问“地址”属性“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,087
精华内容 834
关键字:

数据库字段的基本属性