大家好
MySQL 组合键怎么写?一个表有2列 - colA 和 colB, 他们都不是唯一的, 但是组合起来是唯一的, 请问SQL语句怎么写, 谢谢

解决方案 »

  1.   

    CREATE TABLE tf(col1 INT,col2 INT, PRIMARY KEY(col1,col2))
      

  2.   

    unique key key_name(colA,colB);
      

  3.   

    create table `一个表`(
    colA int,
    colB int,
    colC int,
    primary key(colA,colB)
    );
      

  4.   

    楼主可以参考一下手册中的语法说明和例子。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  5.   

    13.1.5. CREATE TABLE语法
    13.1.5.1. 沉寂的列规格变更
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        [(create_definition,...)]
        [table_options] [select_statement]
    或:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
        [(] LIKE old_tbl_name [)];
     
    create_definition:
        column_definition
      | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
      | KEY [index_name] [index_type] (index_col_name,...)
      | INDEX [index_name] [index_type] (index_col_name,...)
      | [CONSTRAINT [symbol]] UNIQUE [INDEX]
            [index_name] [index_type] (index_col_name,...)
      | [FULLTEXT|SPATIAL] [INDEX] [index_name] (index_col_name,...)
      | [CONSTRAINT [symbol]] FOREIGN KEY
            [index_name] (index_col_name,...) [reference_definition]
      | CHECK (expr)
     
    column_definition:
        col_name type [NOT NULL | NULL] [DEFAULT default_value]
            [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
            [COMMENT 'string'] [reference_definition]
     
    type:
        TINYINT[(length)] [UNSIGNED] [ZEROFILL]
      | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
      | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
      | INT[(length)] [UNSIGNED] [ZEROFILL]
      | INTEGER[(length)] [UNSIGNED] [ZEROFILL]
      | BIGINT[(length)] [UNSIGNED] [ZEROFILL]
      | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
      | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
      | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
      | DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
      | NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
      | DATE
      | TIME
      | TIMESTAMP
      | DATETIME
      | CHAR(length) [BINARY | ASCII | UNICODE]
      | VARCHAR(length) [BINARY]
      | TINYBLOB
      | BLOB
      | MEDIUMBLOB
      | LONGBLOB
      | TINYTEXT [BINARY]
      | TEXT [BINARY]
      | MEDIUMTEXT [BINARY]
      | LONGTEXT [BINARY]
      | ENUM(value1,value2,value3,...)
      | SET(value1,value2,value3,...)
      | spatial_type
     
    index_col_name:
        col_name [(length)] [ASC | DESC]
     
    reference_definition:
        REFERENCES tbl_name [(index_col_name,...)]
                   [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
                   [ON DELETE reference_option]
                   [ON UPDATE reference_option]
     
    reference_option:
        RESTRICT | CASCADE | SET NULL | NO ACTION
     
    table_options: table_option [table_option] ...
     
    table_option:
        {ENGINE|TYPE} = engine_name
      | AUTO_INCREMENT = value
      | AVG_ROW_LENGTH = value
      | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
      | CHECKSUM = {0 | 1}
      | COMMENT = 'string'
      | CONNECTION = 'connect_string'
      | MAX_ROWS = value
      | MIN_ROWS = value
      | PACK_KEYS = {0 | 1 | DEFAULT}
      | PASSWORD = 'string'
      | DELAY_KEY_WRITE = {0 | 1}
      | ROW_FORMAT = {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
      | UNION = (tbl_name[,tbl_name]...)
      | INSERT_METHOD = { NO | FIRST | LAST }
      | DATA DIRECTORY = 'absolute path to directory'
      | INDEX DIRECTORY = 'absolute path to directory'
     
    partition_options:
        PARTITION BY
               [LINEAR] HASH(expr)
            |  [LINEAR] KEY(column_list)
            |  RANGE(expr)
            |  LIST(column_list)
        [PARTITIONS num]
        [  SUBPARTITION BY
               [LINEAR] HASH(expr)
             | [LINEAR] KEY(column_list)
          [SUBPARTITIONS(num)]  
        ]
        [(partition_definition), [(partition_definition)], ...]
     
    partition_definition:
        PARTITION partition_name
            [VALUES { 
                      LESS THAN (expr) | MAXVALUE 
                    | IN (value_list) }]
            [[STORAGE] ENGINE [=] engine-name]
            [COMMENT [=] 'comment_text' ]
            [DATA DIRECTORY [=] 'data_dir']
            [INDEX DIRECTORY [=] 'index_dir']
            [MAX_ROWS [=] max_number_of_rows]
            [MIN_ROWS [=] min_number_of_rows]
            [TABLESPACE [=] (tablespace_name)]
            [NODEGROUP [=] node_group_id]
            [(subpartition_definition), [(subpartition_definition)], ...]
     
    subpartition_definition:
        SUBPARTITION logical_name
            [[STORAGE] ENGINE [=] engine-name]
            [COMMENT [=] 'comment_text' ]
            [DATA DIRECTORY [=] 'data_dir']
            [INDEX DIRECTORY [=] 'index_dir']
            [MAX_ROWS [=] max_number_of_rows]
            [MIN_ROWS [=] min_number_of_rows]
            [TABLESPACE [=] (tablespace_name)]
            [NODEGROUP [=] node_group_id]
     
    select_statement:
        [IGNORE | REPLACE] [AS] SELECT ...   (Some legal select statement)
    ·         PRIMARY KEY可以是一个多列索引。但是,在列规约中使用PRIMARY KEY关键字属性无法创建多列索引。这么做只能把一个列标记为主列。您必须使用一个单独的PRIMARY KEY(index_col_name, ...)子句。
      

  6.   

    一个表有2列 - colA 和 colB, 他们都不是唯一的, 但是组合起来是唯一的, 请问SQL语句怎么写
    ====>
    create table tb(
    colA int,
    colB int,
    colC int,
    unique key(colA,colB) --或者primary key(colA,colB)
    );