mysql列约束

复制代码 代码如下:table a
columns(key,value); table b columns(key,value); SELECT a.* FROM a LEFT
JOIN b ON a.key = b.key WHERE b.key IS NULL

列属性(约束)
1: 是否允许为空(not null)  –not null不允许为空
create table t_1(
    a tinyint(3) zerofill not null,
    b tinyint(3)
);
例: insert into t_1 values(18,29);
例: insert into t_1 values(null,12);  –报错
例: desc t_1;
例: alter table t_1 modify a tinyint(3) not null zerofill; 
–报错zerofill不能数据类型分开
例: insert into t_1(a) values(19);
例: insert into t_1(b) values(28);

注意:以下sql以oracle为基础,有些sql可能与Mysql,Access,DB2有些差异。

*******************************************************************************************************************

创建数据库 database:create database databasename

2: 默认值属性(default)
    create table t_2(
        a tinyint(2) zerofill not null default 18,
        b tinyint(2)
    );
    例: insert into t_2(b) values(19);
*******************************************************************************************************************

创建数据库表 table:create table tablename(

3: 列注释(comment)
    create table t_3(
        id tinyint(2) zerofill not null default 18 comment ‘编号’,
        name varchar(30) comment ‘姓名’
    );
    use information_schema;
    show tables;
    desc information_schema.columns;
    select table_schema, table_name, column_name, column_comment
from information_schema.columns;
    select table_schema, table_name, column_name, column_comment
from information_schema.columns where table_schema = ‘test’ and
table_name = ‘t_3’;
*******************************************************************************************************************

                          column_name1  data-type,

4: 唯一约束  –不允许有重复的值
    drop table if exists t_4;
    create table t_4(
        id int,
        age tinyint,
        constraint un_id unique(id)    –创建一个唯一约束给id字段,
constraint un_id给这个唯一约束取名为un_id;
    );
    desc t_4;
    show create table t_4\G

                          column_name2  data-type,

    例: insert into t_4 values(1, 2);
    例: insert into t_4 values(1, 2);        –报错, id值要是唯一的
    例: alter table t_4 drop index un_id;    –删除唯一约束
un_id(约束名);
    例: alter table t_4 add unique(id);      –增加唯一约束,
    ps: 约束名可以不用写,
如果不写的话则会默认的创建一个唯一约束名字,可以通过show create table
t_4\G 来查看约束名;
        例: alter table t_4 drop index id;

                          ……

    例: insert into t_4 values(null, null);
    例: insert into t_4 values(null, null); 
–唯一约束允许null值的重复
*******************************************************************************************************************

)

5: 主键约束(primary key)
    create table t_6(
        t_no int(1) primary key,
        t_name varchar(30),
        t_sex varchar(3)
    );
    例: desc t_6;
    例: insert into t_6 values(null, ‘胖胖’, ‘男’);   –报错
主键值不能为null, 在创建主键时也会默认把字段设置not null
    例: insert into t_6 values(1, ‘胖胖’, ‘男’);
    例: insert into t_6 values(1, ‘小明’, ‘男’);      –报错
主键值不能重复

创建索引 index:create index index_name on table (columnname)

    ps: 一个表中只能有一个主键;
    drop table if exists t_7;
    create table t_7(
        a int,
        b int
    );
    alter table t_7 modify a int primary key;    –添加主键
    alter table t_7 modify b int primary key;    –报错
一个表中只能有一个主键;
    alter table t_7 drop primary key;            –删除主键

创建视图 view:create view view_name as select column from table

    ps: 可以设置组合主键
    drop table if exists t_8;
    create table t_8(
        a int,
        b tinyint,
        primary key(a, b)
    );        
    例: insert into t_8 values(1,2);
    例: insert into t_8 values(1,3);
    例: insert into t_8 values(1,3);
********************************************************************************************************************

获取表述所有数据:select * from table

6: 自动增长(auto_increment)
    create table t_9(
        id int primary key auto_increment,
        name varchar(30)
    );
    例: insert into t_9 values(null, ‘胖胖’);     
–如果添加了auto_increment,主键值可以用null来表示插入,但真正插入的并不是null值
    例: insert into t_9 values(null, ‘小明’);
    例: insert into t_9 values(null, ‘小红’);
    例: insert into t_9(name) values(‘哈哈’);
        insert into t_9 values(‘小哈’);            –报错
    ps: 自动增长需要整形和索引
        例: create table t_9(                      –报错
                id int auto_increment
            );

获取表中某列数据: select column_name from table

    自动增长的初始值从1开始, 可以自定义这个初始值
    create table t_10(                    
        id int primary key auto_increment
    );
    例: alter table t_10 auto_increment 10;             
–把自动增长的初始值 设置为10
    例: insert into t_10 values();
    例: insert into t_10 values(50);
    例: insert into t_10 values();                        
–自动增长会从已有的最大值开始增长;
********************************************************************************************************************

获取表中不重复的值 distinct:select distinct column_name from table

按某种条件查询数据 where:select * from table where condition