精华内容
下载资源
问答
  • mysql修改字段约束条件
    千次阅读
    2021-05-17 15:19:05

    本文章转载为了记录学习,如有侵犯隐私权益,请联系删除!

    原文连接

    1、主键约束

    alter table 表名 add primary key (列名);

    drop primary key;

    2、外键约束

    alter table 表名 add [constraint] foreign key (列名) references 表2(列名)
    drop foreign key 外键名字(通过show create table 表名 查询出外键名字)
    当删除外键之后,会留下自动创建的索引,用语句 alter table 表名 drop index 索引名字; 删除索引;
    3、唯一键约束

    alter table 表名 add [constraint] unique key (列名)
    用语句 alter table 表名 drop index 索引名字;删除唯一键约束。

    4、设置默认约束

    alter table 表名 alter 列名 {set default literal| drop default}

    5、修改列名称,及其类型:

    alter table 表名 change 旧列名 新列名 类型;

    6、修改列定义:

    alter table 表名 列名 类型;

    7、修改表名:

    alter table 表名 rename [to] 新表名;

    更多相关内容
  • (1)表级约束(约束针对于两个或两个以上的字段使用)(2)列级约束(针对于一个字段使用)3、约束类型有:(1)NOT NULL(非空约束)(2)PRIMARY KEY(主键约束)(3)UNiQUE KEY(唯一约束)(4)DEFAULT(默认约束)(5)FOREIGN KEY(外键...

    一、约束

    1、约束保证数据完整性和一致性。

    2、约束分为表级约束和列级约束。

    (1)表级约束(约束针对于两个或两个以上的字段使用)

    (2)列级约束(针对于一个字段使用)

    3、约束类型有:

    (1)NOT NULL(非空约束)

    (2)PRIMARY KEY(主键约束)

    (3)UNiQUE KEY(唯一约束)

    (4)DEFAULT(默认约束)

    (5)FOREIGN KEY(外键约束)

    实现一对一或一对多关系。

    4、要求

    3224a2494de447551ca112c00d47e772.png

    (1)有参照列为父表,有外键列为子表

    (2)加上FOREIGN KEY的列为外键列

    【把my.ini文件里的default-storage-engine=innoDB】

    (3)建立provinces表和users表

    ea99329a6800a6f4081345bbd0f96f3b.png

    4c0e27f4d60b875eb69023e68efed84b.png

    6c4f161ba25d600d4b548587fbd4cf55.png

    45b72639f5ff7c1bfe5e41aad17ff14d.png

    (4)查看INDEXES

    7d19ea2cfc3f81072be302ee8156cd11.png

    12a34b87f923a8941593823dcc9a1426.png

    5、外键约束参照操作

    9e07c790e17f76bbf92c5ba605171dfc.png

    (1)我们建立一个表结构

    473e5b64f203ce74541ec0417c74bd90.png

    09cf1e95e220ccd8d9b4a25fb1fa37eb.png

    (2)加入元素

    4fa12ce5b5e3c2e379416f866f9d57ab.png

    2f0a46ca4ff41401be99503c15aa955e.png

    (3)删除父表一个元素

    27dab4b1a4266d1b85df1ea97efd425b.png

    父表中的3、C删除之后,子表1、Tom、3也删除了

    6、表级约束,列级约束

    2f61d386a49bf1e042ebc8c3ad42153e.png

    二、修改数据表

    一 、添加列

    015b06f782a44a2700e1a4ab80dd5b3e.png

    b85af68fc17852e21891a02c2bec5d72.png

    ef26ec90a19ec9e7c9d0a50611039c37.png

    cb1e5b167633ce5be8ae019820175176.png

    二、添加约束

    3a5eb4e7418f81b96c033bbb74369047.png(示例)

    1、添加主键约束

    cb4cfcde2db8cba8282426f3bb81f15f.png

    mysql>ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);

    2、添加唯一约束

    966d4fcba853e10b2c88b6346c88f32c.png

    mysql> ALTER TABLE users2 ADD UNIQUE (username);

    3、添加外键约束

    ccb4860cf078f2dcf2c3c8447816ee62.png

    mysql>  ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);

    4、添加/删除默认约束

    ea4d146bb296252a5e3280cee43726cb.png

    添加默认:mysql> ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL;

    修改默认值:mysql> ALTER TABLE users2 ALTER age SET DEFAULT 15;

    删除默认值:mysql> ALTER TABLE users2 ALTER age DROP DEFAULT;

    三、删除约束

    1、删除主键约束

    993bb014cb28426feb638bc4cd0ec2dd.png

    mysql> ALTER TABLE users2 DROP PRIMARY KEY;

    2、删除唯一约束

    d9fe3e893ece6132ccfe9b7b961a9062.png

    mysql> SHOW INDEXES FROM users2\G;//显示INDEXES

    *************************** 1. row ***************************

    Table: users2

    Non_unique: 0

    Key_name: username

    Seq_in_index: 1

    Column_name: username

    。。。。。。

    *************************** 2. row ***************************

    Table: users2

    Non_unique: 1

    Key_name: pid

    Seq_in_index: 1

    Column_name: pid

    。。。。。。

    e0dbd9b9907cef9c72253a8b0a6fb375.png

    mysql> ALTER TABLE users2 DROP INDEX username ;

    (删除约束而不是字段)

    3、删除外键约束

    e36693ed952bb92353ae0620f811606d.png

    (1)查看属性mysql> SHOW CREATE TABLE users2;

    63886b54eb1e740d87cd5d7f5da695cf.png

    users2_ibfk_1为外键名字

    mysql> ALTER TABLE users2 DROP FOREIGN KEY users2_ibfk_1;(利用外键名删除外键)

    此时外键已被删除

    d5020aec31ce809dda871b997b2f6f5b.png

    此时还有索引‘pid’删除它

    ALTER TABLE users2 DROP  INDEX pid;

    四、修改列定义

    84e29daa08c8719f1473d7f4eaaa8db8.png

    mysql> ALTER TABLE users2 MODIFY id SMALLINT NOT NULL FIRST;(将id字段调整到第一的位置)

    mysql> ALTER TABLE users2 MODIFY id TINYINT NOT NULL;(可以把SMALLINT强转成TINYINT,会有溢出)

    bcc57b05f569d9c19cb5a7616ce21b3a.png

    mysql> ALTER TABLE users2 CHANGE pid p_id TINYINT NOT NULL;(将pid改为p_id)

    d4419dc393b4e1c8040294f474c3be94.png

    方法一:mysql>  ALTER users2 RENAME users3;

    方法二: mysql> RENAME users3 TO users1;(可以对多个数据表更名)

    总结:

    9bedd68ad711cdb61ffd61226e50ad82.png

    展开全文
  • mysql字段类型与约束条件

    千次阅读 2021-01-19 00:00:01
    一、数值类型二、日期类型三、枚举与集合四、约束条件五、设置严格模式一、数值类型1.1 整型应用场景: id号、年龄...tinyint:有符号:默认范围 -128, 127无符号:默认范围 0,255#tinyint 默认有符号:create table ...

    一、数值类型

    二、日期类型

    三、枚举与集合

    四、约束条件

    五、设置严格模式

    一、数值类型

    1.1 整型

    应用场景: id号、年龄...

    tinyint:

    有符号:默认范围 -128, 127

    无符号:默认范围 0,255

    #tinyint 默认有符号:

    create table t1(id tinyint,

    name varchar(16)

    );

    insert into t1 values(-128,'tank'),(127,'jason');

    insert into t1 values(-129,'sean') #报错

    select * from t1;

    +------+-------+

    | id | name |

    +------+-------+

    | -128 | tank | #有符号,最小值为-128

    | 127 | jason | #有符号,最大值127

    +------+-------+

    #设置无符号tinyint

    create table t2(id tinyint unsigned);

    insert into t2 values((-1)); #报错

    insert into t2 values((0));

    insert into t2 values((255));

    insert into t2 values((256)); #报错

    select * from t2;

    +------+

    | id |

    +------+

    | 0 | #无符号,最小值为0

    | 255 | #无符号,最大值为255

    +------+

    int:

    有符号:默认范围(-2147483648, 2147483647)

    无符号:默认范围 (0,4294967295)

    默认宽度为11

    #int 默认有符号:

    create table t3(id int);

    insert into t3 values(-2147483648);

    insert into t3 values(-2147483649); #报错

    insert into t3 values(2147483647);

    insert into t3 values(2147483648); #报错

    select * from t3;

    +-------------+

    | id |

    +-------------+

    | -2147483648 | #有符号,最小值为-2147483648

    | 2147483647 | #有符号,最大值为2147483647

    +-------------+

    #设置无符号int

    create table t4(id int unsigned)

    insert into t4 values((-1));

    insert into t4 values((0));

    insert into t4 values((4294967295));

    insert into t4 values((4294967296));

    select * from t4;

    ------------+

    | id |

    +------------+

    | 0 | #无符号,最小值为0

    | 4294967295 | #无符号,最大值为4294967295

    +------------+

    1.2 浮点型

    应用场景:存储薪资、身高、体重、体质参数等

    float :FLOAT[(M,D)] ,单精度浮点数(非准确小数值)

    double:DOUBLE[(M,D)],双精度浮点数(非准确小数值)

    以上两个的m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30

    decimal:DECIMAL[(M,D)],准确的小数值

    m最大值为65,d最大值为30。

    # 范围255是最大长度(包括.小数), 30代表是小数的位数

    create table t5(x float(255, 30));

    create table t6(x double(255, 30));

    create table t7(x decimal(65, 30));

    # 三种浮点型: 区别在于精确度不一样

    insert into t5 values(1.111111111111111111111111111111);

    insert into t6 values(1.1111111111111111111111111111);

    insert into t7 values(1.1111111111111111111111111111);

    #随着小数的增多,精度开始不准确

    mysql> select * from t5;

    +----------------------------------+

    | x |

    +----------------------------------+

    | 1.111111164093017600000000000000 |

    #精度比float要准确点,但随着小数的增多,同样变得不准确

    mysql> select * from t6;

    +----------------------------------+

    | x |

    +----------------------------------+

    | 1.111111111111111200000000000000 |

    #精度始终准确,d为30,于是只留了30位小数

    mysql> select * from t7;

    +----------------------------------+

    | x |

    +----------------------------------+

    | 1.111111111111111111111111111100 |

    +----------------------------------+

    cdd525274428a22664dec72455eac32d.png

    1.4 字符串类型

    char: 定长,简单粗暴,浪费空间,存取速度快。

    字符长度范围:0-255(一个中文是一个字符,是utf8编码的3个字节)。

    存储char类型的值时,会往右填充空格来满足长度

    create table t8(id int,name char(4));

    insert into t8 values(1, 'tank');

    insert into t8 values(1, 't');

    insert into t8 values(1, '你个大傻子'); #字符长度超过4报错

    mysql> select * from t8;

    +------+--------------+

    | id | name |

    +------+--------------+

    | 1 | tank |

    | 1 | t | # t+3个空格

    +------+--------------+

    varchar: 不定长字符,精准,节省空间,存取速度慢

    存几个字符,就是几个字符的大小,每个字符前都要+1bytes

    create table t9(id int, name varchar(4));

    insert into t9 values(1, 'bob'); # 1bytes + bob

    insert into t9 values(2, 'tank'); # 1bytes + tank

    insert into t9 values(3, 'sean'); # 1bytes + sean

    insert into t9 values(4, 'jason'); #报错

    mysql> select * from t9;

    +------+------+

    | id | name |

    +------+------+

    | 1 | bob |

    | 2 | tank |

    | 3 | sean |

    +------+------+

    bc1b2c72fa4b450535ac67e8f9e27af7.png

    二、日期类型

    c7c5db88dab71c0dbfdc37dd4203c103.png

    例如:

    date: 2019-12-11

    datetime: 2019-12-11 11:11:11

    time: 11:11:11

    year: 2019

    timestamp: 时间戳

    注意:TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。

    create table student(

    id int,

    name varchar(10),

    birth date,

    register datetime,

    born_year year,

    t_time time,

    update_time timestamp

    );

    insert into student values(1, 'baohan', '1996-06-23', '2019-12-12 11:11:11', '1996', '11:11:11', null);

    insert into student values(2, 'HCY', '1000-11-11', '1980-11-11 11:11:11','2019', '11:11:11', null);

    mysql> select * from student;

    +------+--------+------------+---------------------+-----------+----------+---------------------+

    | id | name | birth | register | born_year | t_time | update_time |

    +------+--------+------------+---------------------+-----------+----------+---------------------+

    | 1 | baohan | 1996-06-23 | 2019-12-12 11:11:11 | 1996 | 11:11:11 | 2019-12-11 16:02:45 |

    | 2 | HCY | 1000-11-11 | 1980-11-11 11:11:11 | 2019 | 11:11:11 | 2019-12-11 16:03:22 |

    +------+--------+------------+---------------------+-----------+----------+---------------------+

    三、枚举与集合

    字段的值只能在给定范围中选择,如单选框,多选框

    enum: 单选 只能在给定的范围内选一个值(多选一),如性别 sex 男male/女female

    set : 多选 在给定的范围内可以选择一个或一个以上的值 ,如(爱好1,爱好2,爱好3...)

    #enum:多选一

    create table t10(id int, name varchar(4), gender enum('male', 'female', 'others'));

    # insert into 表名(字段名) values(字段名对应的值);

    insert into t13(id, name, gender) values(1, 'tank', 'male');

    insert into t13(id, name, gender) values(1, 'tank', '人妖'); #报错,‘人妖’不在范围内

    mysql> select * from t10;

    +------+------+--------+

    | id | name | gender |

    +------+------+--------+

    | 1 | tank | male |

    +------+------+--------+

    #set 可 多选一 或 多选多

    create table t11(

    id int,

    name varchar(4),

    hobbies set('read', 'sing', 'run', 'think')

    );

    insert into t11 values(1, 'bob', 'read,sing');

    mysql> select * from t11;

    +------+------+-----------+

    | id | name | hobbies |

    +------+------+-----------+

    | 1 | bob | read,sing |

    +------+------+-----------+

    四、约束条件

    初始约束条件:not null

    #约束插入记录时id不能为空

    create table t1(id int not null,name varchar(6));

    insert into t1 values(1,'tank');

    insert into t1 values(null,'tank'); #报错

    mysql> select * from t1;

    +----+------+

    | id | name |

    +----+------+

    | 1 | tank |

    +----+------+

    unique: :唯一,将某个字段设置为唯一的值

    create table t2(id int not null unique,name varchar(4));

    insert into t2(id, name) values(1, 'tank'), (2, 'sean');

    insert into t2(id, name) values(1, 'bob'); #报错,1已用过

    +----+------+

    | id | name |

    +----+------+

    | 1 | tank |

    | 2 | sean |

    +----+------+

    primary key(主键)----> not null unique: pk就是表中的索引: 可以通过索引快速查找某些数据,提高查询效率。

    # 将id设置为主键,非空且唯一

    create table t3(id int primary key,name varchar(4));

    insert into t3(id, name) values(1, 'tank');

    insert into t3(id, name) values(2, 'sean');

    insert into t3(id, name) values(1, 'bob'); #报错

    mysql> desc t3;

    +-------+------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-------+------------+------+-----+---------+-------+

    | id | int(11) | NO | PRI | NULL | |

    | name | varchar(4) | YES | | NULL | |

    +-------+------------+------+-----+---------+-------+

    auto_increment:自增

    # 将id设置为自增

    create table t4(id int primary key auto_increment,name varchar(4));

    # 自增默认从0开始

    insert into t4(name) values('tank');

    insert into t4(name) values('sean');

    insert into t4(name) values('bob');

    insert into t4(name) values('哈哈哥');

    mysql> select * from t4;

    +----+-----------+

    | id | name |

    +----+-----------+

    | 1 | tank |

    | 2 | sean |

    | 3 | bob |

    | 4 | 哈哈哥 |

    +----+-----------+

    ## 若想自增从指定值开始,可插入第一条数据时先指定id的值;

    insert into t4(id, name) values(10, 'tank');

    insert into t4(name) values('sean'); # 11

    insert into t4(name) values('bob'); # 12

    insert into t4(name) values('哈哈哥'); # 13

    mysql> select * from t4;

    +----+-----------+

    | id | name |

    +----+-----------+

    | 10 | tank |

    | 11 | sean |

    | 12 | bob |

    | 13 | 哈哈哥 |

    +----+-----------+

    zerofill:使用0填充空格

    create table t5(id int zerofill);

    insert into t5 values(100);

    mysql> select * from t5;

    +------------+

    | id |

    +------------+

    | 0000000100 |

    +------------+

    default:约束插入数据时的默认值

    create table t7(id int,

    name varchar(32) unique,

    password varchar(255) default '000000');

    insert into t7(id,name) values(1,'tank');

    mysql> select * from t7;

    +------+------+----------+

    | id | name | password |

    +------+------+----------+

    | 1 | tank | 000000 |

    +------+------+----------+

    delete:清空表中所有记录:

    truncate:清空表中的所有记录,并且id重置为0

    #delete

    create table t6(id int primary key auto_increment,name varchar(4));

    insert into t6(name) values('tank');

    insert into t6(name) values('大大大'), ('sean');

    delete from t6;

    insert into t6(name) values('tank');

    insert into t6(name) values('大大大'), ('sean');

    mysql> select * from t6;

    +----+-----------+

    | id | name |

    +----+-----------+

    | 4 | tank |

    | 5 | 大大大 |

    | 6 | sean |

    +----+-----------+

    #truncate

    create table t6(id int primary key auto_increment,name varchar(4));

    insert into t6(name) values('tank');

    insert into t6(name) values('sean');

    truncate table t6;

    insert into t6(name) values('tank');

    insert into t6(name) values('sean');

    mysql> select * from t6;

    +----+-----------+

    | id | name |

    +----+-----------+

    | 1 | tank |

    | 2 | sean |

    +----+-----------+

    五、设置严格模式

    # 查看数据库配置中变量名包含mode的配置参数:

    show variables like "%mode%";

    # 修改安全模式:

    set session; # 局部有效,只在你当前操作的窗口有效

    set global session; # 全局有效,永久有效

    # 修改完之后退出当前客户端重新登录即可,不用关闭服务端

    set global sql_mode = 'STRICT_TRANS_TABLES';-------------------------------------------------------------------------

    六,补充内容

    #__author:86188#date: 2020/7/29#约束某一个字段#无符号的 int unsigned#不能为空 not null#默认值是什么 not null default ''#不能重复 unique#自增 auto_increment#主键 primary key#外键#create table biaoming(id int not null,name char(18) unique)

    #联合唯一#ip +端口两列不能重复,单列可以重复#create table t14(id int,#server_name char(12 ),#ip char(15),#port char(15),#unique(ip,port));两个字段联合唯一 应用场景:姓名姓和名分开存的 unique(字段1,字段2)

    #非空+唯一约束#第一个被定义为非空+唯一的那一列会成为这张表的**!主键primary key#一章表只能有一个主键#create table t15(#id int not null unique,#username char(18) not null unique)

    #create table t16(id int not null unique,#username char(18) primary key) 指定主键

    #联合主键

    #create table t14(id int,#server_name char(12 ),#ip char(15), default '' 在空的时候默认添加''#port char(15),#primary key(ip,port));

    #create table t14(id int,#server_name char(12 ),#ip char(15) not null,#port char(15) not null,#unique(ip,port));

    #auto_increment 自增 如果自己增加了数据就从自己的数据开始加#只能对数字有效,自带非空约束#至少是unique的约束条件之后才能使用auto_increment;#create table t20(id int unique auto_increment,name char(20);#insert into t20(name) values('alex');

    #show create table 表名#select * from 表名

    #学生表#create table student(

    id int primary key auto_increment,

    name char(12) notnull,

    gender enum('male','female') default 'male',

    class_id int,

    foreign key(class_id) referencesclass(cid), #foreign key(自己的字段)references 外表(外表字段)##外表字段至少是‘唯一’的,unique

    );#班级表

    create table class(

    cid int primaey key auto_increment,

    cname char(12) notnull,

    startd date,

    );#mysql命令行 \c表示不执行

    create table student(

    id int primary key auto_increment,

    name char(12) notnull,

    gender enum('male','female') default 'male',

    class_id int,#即连修改,即连更新 删除太危险了!!!,删cid的话会使学#生表中与之对应的记录也删除

    foreign key(class_id) references class(cid) on update cascade on delete cascade, #删除做联动效果

    );

    创建press表

    CREATE TABLE `press` (

    `id` int(11) NOT NULL,

    `name` char(10) DEFAULT NULL,

    PRIMARY KEY (`id`)

    ) ;

    创建book表

    CREATE TABLE `book` (

    `id` int(11) DEFAULT NULL,

    `bk_name` char(12) DEFAULT NULL,

    `press_id` int(11) NOT NULL,

    KEY `press_id` (`press_id`) #暂时感觉有点多余

    ) ;

    为book表添加外键 这里的constraint是固定的

    alter table book add constraint fk_id foreign key(press_id) references press(id);

    删除外键

    alter table book drop foreign key fk_id;

    https://www.cnblogs.com/Eva-J/articles/9677452.html#_label7

    展开全文
  • MySQL修改字段大全

    千次阅读 2021-07-27 11:05:09
    修改字段属性: -- 修改字段属性 -- ALTER TABLE tb_name MODIFY 字段名称 字段类型 [完整性约束条件] -- 将email字段 VARCHAR(50)修改成VARCHAR(200) -- 注意,修改时如果不带完整性约束条件,原有的约束条件将丢失...

    修改字段属性:

    -- 修改字段属性
    -- ALTER TABLE tb_name MODIFY 字段名称 字段类型 [完整性约束条件]
    -- 将email字段 VARCHAR(50)修改成VARCHAR(200)
    -- 注意,修改时如果不带完整性约束条件,原有的约束条件将丢失,如果想保留修改时就得带上完整性约束条件
    ALTER TABLE user10 MODIFY email VARCHAR(200) NOT NULL DEFAULT 'a@a.com';
    
    -- 将card移到test后面
    
    ALTER TABLE user10 MODIFY card CHAR(10) AFTER test;
    
    -- 将test放到第一个,保留原完整性约束条件
    ALTER TABLE user10 MODIFY test CHAR(32) NOT NULL DEFAULT '123' FIRST;
    
    修改字段名称和属性:
    
    -- 将test字段改为test1
    -- ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件
    ALTER TABLE user10 CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
     
    
    添加删除默认值:
    
    
    -- 创建新表
    CREATE TABLE user11(
    id TINYINT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL UNIQUE,
    age TINYINT UNSIGNED
    );
    
    -- 给age添加默认值
    ALTER TABLE user11 ALTER age SET DEFAUTL 18;
    -- 添加一个字段
    ALTER TABLE user11 ADD email VARCHAR(50);
    -- 给email添加默认值
    ALTER TABLE user11 ALTER email SET DEFAULT 'a@a.com';
    
    -- 删除默认值
    ALTER TABLE user11 ALTER age DROP DEFAULT;
    ALTER TABLE user11 ALTER email DROP DEFAULT;
    
     
    
    添加主键:
    
    
    -- 创建一个表
    CREATE TABLE test12(
    id INT
    );
    -- 添加主键
    -- ALTER TABLE tb_name ADD [CONSTRAINT [sysmbol]] PRIMARY KEY [index_type] (字段名称,...)
    ALTER TABLE test12 ADD PRIMARY KEY(id);
    
    
    -- 添加复合主键
    -- 先创建个表
    CREATE TABLE test13(
    id INT,
    card CHAR(18),
    username VARCHAR(20) NOT NULL
    );
    -- 添加复合主键
    ALTER TABLE test13 ADD PRIMARY KEY(id,card);
    
    删除主键:
    
    -- 删除主键
    ALTER TABLE test12 DROP PRIMARY KEY;
    
    -- 再给test12添加主键, 完整形式
    ALTER TABLE test12 ADD CONSTRAINT symbol PRIMARY KEY index_type(id);
    在删除主键时,有一种情况是需要注意的,我们知道具有自增长的属性的字段必须是主键,如果表里的主键是具有自增长属性的;那么直接删除是会报错的。如果想要删除主键的话,可以先去年自增长属性,再删除主键
    
    
    -- 再创建一个表,
    CREATE TABLE test14(
    id INT UNSIGNED KEY AUTO_INCREMENT
    );
    
    -- 删除主键,这样会报错,因为自增长的必须是主键
    ALTER TABLE test14 DROP PRIMARY KEY;
    
    -- 先用MODIFY删除自增长属性,注意MODIFY不能去掉主键属性
    ALTER TABLE test14 MODIFY id INT UNSIGNED;
    -- 再来删除主键
    ALTER TABLE test14 DROP PRIMARY KEY;
    
     
    
     
    
    唯一索引:
    
    -- 添加唯一性约束
    -- ALTER TABLE tb_name ADD [CONSTANT [symbol]] UNIQUE [INDEX | KEY] [索引名称](字段名称,...)
    
    -- 创建测试表
    CREATE TABLE user12(
    id TINYINT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL,
    card CHAR(18) NOT NULL,
    test VARCHAR(20) NOT NULL,
    test1 CHAR(32) NOT NULL
    );
    
    -- username添加唯一性约束,如果没有指定索引名称,系统会以字段名建立索引
    ALTER TABLE user12 ADD UNIQUE(username);
    -- car添加唯一性约束
    ALTER TABLE user12 ADD CONSTRAINT symbol UNIQUE KEY uni_card(card);
    -- 查看索引
    SHOW CREATE TABLE user12;
    
    -- test,test1添加联合unique
    ALTER TABLE user12 ADD CONSTRAINT symbol UNIQUE INDEX mulUni_test_test1(test, test1);
    
    -- 删除唯一
    -- ALTER TABLE tb_name DROP {INDEX|KEY} index_name;
    -- 删除刚刚添加的唯一索引
    ALTER TABLE user12 DROP INDEX username;
    ALTER TABLE user12 DROP KEY uni_card;
    ALTER TABLE user12 DROP KEY mulUni_test_test1;
    
     
    
    修改表的存储引擎:
    
    -- 修改表的存储引擎
    -- ALTER TABLE tb_name ENGINE=存储引擎名称
    ALTER TABLE user12 ENGINE=MyISAM;
    ALTER TABLE user12 ENGINE=INNODB;
     
    
    修改自增长值:
    
    -- 修改自增长的值
    -- ALTER TABLE tb_name AUTO_INCREMENT=值
    ALTER TABLE user12 AUTO_INCREMENT=100;
    
    
    展开全文
  • 一、约束的含义与分类 含义:一种限制,用于限制表中的数据,为了保证表中的数据的...CHECK: 检查,【mysql中不支持】,用于检查值 FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表
  • mysql添加列级约束修改约束

    千次阅读 2022-03-20 08:54:44
    添加列级约束 主键接受列级约束和表级约束两种写法 #2.添加主键 列级约束 ALTER TABLE school MODIFY COLUMN id INT PRIMARY KEY; #表级约束 ALTER TABLE school ADD PRIMARY KEY(id); 第一种方式 CREATE ...
  • ALTER TABLE table1 ALTER COLUMN ... 您可能感兴趣的文章:sql server建库、建表、建约束技巧mysql建库时提示Specified key was too long max key length is 1000 bytes的问题的解决方法Mysql 建库建表技巧分享SQL S
  • MySQL 字段增删改查 和 约束条件

    千次阅读 2021-01-18 18:37:44
    一、字段操作1.添加字段 (add)alter table add 字段名 数据类型;desc ;2.修改字段数据类型 (modify)alter table ...#可用来修改字段数据类型#也可以在修改数据类型后添加默认值或其它约束条件#可以在最后修改字段位...
  • mysql修改字段长度命令_值得收藏:一份非常完整的 MySQL 规范 一、数据库命令规范 二、数据库基本设计规范 三、数据库字段设计规范 四、索引设计规范 五、常见索引列建议 六、如何选择索引列的顺序 七、...
  • mysql修改字段名-Mysql,修改

    千次阅读 2021-01-26 07:54:27
    本教程分享:《mysql修改字段名》,在MySQL数据库,如何修改字段名alter table student change physics physisc char(10) not null;其中char(10) not null是你physisc字段的create_definition.MySQL怎么修改字段名...
  • MySQL 查看数据库表结构 修改表结构 修改字段 修改约束条件 修改表名 删除数据库表 查看数据库表结构 可以使用 describe 语句来查看数据表结构,代码如下: describe users; 在控制台中输入上述语句后的执行...
  • 完整性约束是对字段进行限制,从而符合该字段达到我们期望的效果比如字段含有默认值,不能是NULL等 直观点说:如果插入的数据不满足限制要求,数据库管理系统就拒绝执行操作 设置表的主键 主键能够标识表中每条信息...
  • mysql alter table语句可以修改表的基本结构,例如添加字段、删除字段、添加主键、添加索引、修改字段数据类型、对表重命名等等操作,本文章通过两个简单的实例向大家介绍mysql alter table的使用方法  实例一:...
  • 日期类型四、mysql字段约束条件1.无需正负号2.零填充3.非空4.默认值5.唯一值6.自增7.主键 一、字符编码 \s 查看数据库字符编码信息 如果是5.X系列 显示的编码有多种 latin1 gbk 如果是8.X系列 显示的统一是utf8mb4...
  • mysql主键非空约束怎么设置?

    千次阅读 2021-02-02 07:23:20
    mysql中可以通过在“CREATE TABLE”语句中,使用“ PRIMARY KEY [默认值]”语句来设置主键约束,使用“ NOT NULL”语句来设置非空约束mysql主键约束主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用...
  • char 类型字段设置默认值(如 ''),那么在mysql 他存储的就是null所以,如果你是要查指定cityId 并且 regionId 为空的sql 就这么写:SELECT*FROMcontentWHEREcityId='C-e834160464892529719476' andregionId is null...
  • mysql alter table语句可以修改表的基本结构,例如添加字段、删除字段、添加主键、添加索引、修改字段数据类型、对表重命名等等操作,本文章通过两个简单的实例向大家介绍mysql alter table的使用方法。  实例一:...
  • alter table .. modify .. varcher(n)会不会改变表原来的索引,非空约束等?
  • mysql字段唯一约束

    千次阅读 2021-01-21 06:52:17
    MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。在创建表时设置唯一约束在定义完列之后直接使用 UNIQUE 关键字指定唯一约束,语法规则如下: ...
  • 文章目录创建表的完整语法约束条件not ... 字段名1 数据类型 约束条件1 约束条件2 约束条件3, 字段名2 数据类型 约束条件1 约束条件2 约束条件3, 字段名3 数据类型 约束条件1 约束条件2
  • MYSQL约束条件

    2022-04-12 15:01:22
    一、主键约束 1.特点:不能添加重复的值,并且值不能为NULL。 2.分类: (1)单链主键 CONSTRAINT pk1 primary key(eid) (2)联合主键: 就是由一张表中多个字段组成的。 primary key(字段1,字段2,……,字段n...
  • 字段字段类型[(宽度) 约束条件], ………… 字段字段类型[(宽度) 约束条件] ) # 栗子 create database testnow; use testnow; create table info(name char); insert int...
  • 展开全部update table set col2=case when col1 ...或者分为几句修改update table set col2=值1 where col1 条件1update table set col2=值2 where col1 条件2扩展资料:SQL修改字段属性总636f70793231313335323631...
  • MySQL修改字段、修改表索引等操作

    万次阅读 2018-05-14 16:30:18
    1、展示一张已经存在的表的建表语句show create table (目标表格) 2、将表引擎改为innodbaalter table t_starmcn engine=...4、修改表中字段的数据类型alter table table_name modify 属性名 数据类型;5、修改表中...
  • ALTER TABLE 表名 CHANGE 原字段名 新字段字段类型 约束条件 alter table (table_name) change (old_col_name) (new_col_name) [约束] 5.1)添加字段的外键约束 保留字:add,constraint alter table ...
  • mysql 数据类型 约束条件

    千次阅读 2021-01-19 02:05:18
    不同的用户体验数据类型:规定了数据库可以存放哪些数据约束:限制储存数据的规则引擎: 针对于表的前提:引擎是建表时规定,提供给表使用,不是数据库mysql>> show engines ; 展示所有引擎重点:innodb(默认):支持...
  • 使用SSMS数据库管理工具修改UNIQUE约束1、连接数据库,选择数据表-》右键点击-》选择设计(或者展开键,选择要修改的键,右键点击,选择修改,后面步骤相同)。2、选择要修改的数据列-》右键点击-》选择索引/键。3、在...
  • mysql- 字段各种处理、添加各种约束

    千次阅读 2018-04-20 15:23:29
    修改字段属性: -- 修改字段属性 -- ALTER TABLE tb_name MODIFY 字段名称 字段类型 [完整性约束条件] -- 将email字段 VARCHAR(50)修改成VARCHAR(200) -- 注意,修改时如果不带完整性约束条件,原有的约束条件将...
  • mysql-修改字段属性(8)

    千次阅读 2018-07-28 10:23:23
    modify和change关键字修改属性,使用modify和change关键字都可以修改字段属性,可以字段的数据格式类型,以及约束条件。 但是change和modify也有不同之处的,change可以修改字段名,但是modify不能。下面分别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,536
精华内容 22,614
关键字:

mysql修改字段约束条件

mysql 订阅