表结构操作:

  添加单列:alter table tb_name add [column] col_name

  添加一列: alter table `sudty` add `aaa` int;

    

  添加多列:

    

  指定添加在哪:默认添加在最后一列,用after+col_name可以添加在某一列之后

            使用first可以添加第一列。

    alter table `sudty` add `bbb` int after `name`;在sudty这个表的name后添加一列bbb。

    

    alter table `sudty` add `科目` int first;

    

  删除列:alter table sudty drop bbb;

  删除多列:alter table sudty drop aaa,drop scx;

  修改表:

    

    修改age的数据类型:

    alter table sudty modify `age` varchar(20);

    修改age的列名为年龄:

    alter table sudty change `age` `年龄` varchar(20);

    修改表名sudty为school:

    alter table sudty rename to school;

非空约束:not null

  建表时约束:

    

  建表后约束:

    

  

  此时,id和name的Null值都变为NO了。有非空约束的列,传值进去的时候就必须传它。

唯一约束:

  确保字段中的值的唯一:  unique key

  同not null一样,它可以在建表的时候:

  

  删除唯一约束:

  

  添加唯一约束:现在给tb 添加一列`name`,让后添加一个联合唯一:

  

  此时,联合唯一的key名是id,所以删除只需要写:alter table tb drop key id;

  insert into tb (id,name) values(1,'王五'),(2,'王五'); 注意两个联合起来才唯一,

    即只要id和name不是两个同时相同就可以。

    

主键约束:

  

  主键保证记录的唯一性, 唯一标识每一条数据主键自动为NOT NULL;每张数据表只能存在

一个主键not null+unique key,一个unique key 又是一个not null的时候,那么它被当做primary

key主键当一张表里没有一个主键的时候,第一个出现的非空且为唯一的列被视为有主键。

  自然可以在建表的时候添加主键约束,下面讨论给表tb的id添加主键约束:

  

  删除主键:

  

  添加联合主键:任然只有一个主键(虽然有两个PRI)

  

  删除联合主键和正常删除主键是一样的操作。

自增长AUTO_INCREMENT

  自动编号,一般与主键组合使用。一个表里面只有一个自增默认情况下,起始值为1,

每次的增量为1。当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则

会出现两种情况。

  情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为数据列的值必须

是唯一的;

  情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编

号将从这个新值开始递增。也就是说,可以跳过一些编号。如果自增序列的最大值被删除

了,则在插入新记录时,该值被重用。(可以调大,不可以缩小)如果插入的值小于现有

的值且不重复,则会成功,但是下一个数据过来还是默认从最大的值开始增长。

  

  

  

默认约束:default

  初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

  

  插入值:

  

  此时表的详情:

  

  删除default:

  

  

  添加默认default

  方法一:

  

  方法二:

  

  

mysql数据库表结构与表约束的更多相关文章

  1. 用户中心mysql数据库表结构的脚本

    /* Navicat MySQL Data Transfer Source Server : rm-m5e3xn7k26i026e75o.mysql.rds.aliyuncs.com Source S ...

  2. mysql数据库表结构导出

    mysql数据库表结构导出 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据 mysqldump -h localh ...

  3. 比较两个mysql数据库表结构的差异

    需求来源:一个线上系统,一个开发系统,现在要把开发系统更新到线上,但是开发系统的数据库结构与线上的略有差异,所以需要找出两个数据库的表结构差异. 数据库表结构的差异 注:操作均在Linux系统下完成 ...

  4. 一个漂亮的输出MySql数据库表结构的PHP页面

    经常为了方便和直观,我们会首先直接在数据库中设计出表,但是接下来又要将表的结构和设计编写在设计文档中,以便编码的时候可以直观的查询,一旦数据库表非常多,字段非常多的时候,这无疑是件非常郁闷的工作. 这 ...

  5. centos/windows服务器,Mysql数据库表结构损坏-已解决

    [问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...

  6. PHP快速获取MySQL数据库表结构

    直接举例某个数据库中只有两个数据表,一个 test ,一个 xfp_keywords ,获取他们的数据库表结构. 此功能可以用于开发人员快速获取数据表结构通过获取的数据生成各种文件形式,用来快速理解数 ...

  7. PowerDesigner逆向生成MYSQL数据库表结构总结

    由于日常数据建模经常使用PowerDesigner,使用逆向工程能更加快速的生成模型提高效率,所以总结使用如下: 1.      安装MYSQL的ODBC驱动 Connector/ODBC 5.1.1 ...

  8. 反向读取Mysql数据库表结构到PowerDesigner中

    使用PowerDesigner挺长时间了,只是一些简单的表结构设计,因需要对当前数据库进行再设计,需要看一下数据库中所有的表,及表之间的关系,并重新修改表结构,因此需求就是怎么把数据库中的表结构反向生 ...

  9. powerDesigner如何动态显示mysql数据库表结构

    原文链接:http://jingyan.baidu.com/article/e5c39bf5d64efa39d760333c.html 有时候,由于数据库中的表太多,主外键关系复杂,对数据库的非设计人 ...

随机推荐

  1. redis的hash类型

    1.简单描述 hash是一个string类型的field和value的映射表.添加和删除操作都是O(1)(平均)的复杂度.hash类型特别适合用于存储对象.在field的数量在限制的范围内以及valu ...

  2. Caused by: java.net.SocketException: Broken pipe

    异常信息 时间:2017-03-24 17:22:16,719 - 级别:[ WARN] - 消息: [other] The web application [ROOT] appears to hav ...

  3. 分享一个开源免费、目前最好的API接口管理平台----eoLinker

    一.概况 eoLinker 是目前业内领先.国内最大的在线 API 接口管理平台,提供自动生成 API 文档.API 自动化测试.Mock 测试.团队协作等功能,旨在解决由于前后端分离导致的开发效率低 ...

  4. Android项目实战(三十六):给背景加上阴影效果

    圆角背景大家应该经常用: 一个drawable资源文件  里面控制corner圆角 和solid填充色 <shape xmlns:android="http://schemas.and ...

  5. iKcamp|基于Koa2搭建Node.js实战(含视频)☞ HTTP请求

    POST/GET请求--常见请求方式处理

  6. 关于使用Xcode9.0使用[UIImage imageNamed:]返回null的问题

    最近升级Xcode9.0,没少折腾,再加上iOS11出现的问题,又要适配一些奇怪的问题.这都没啥,但是如果Xcode出问题,那问题可真是难找.因为习惯的操作潜意思的告诉自己这样做是不会错的. 在Xco ...

  7. MySQL操作时间的函数集

    求两个Timestamp之间的秒差值: select TIMESTAMPDIFF(SECOND,TIMESTAMP("2017-03-01 07:58:20"),timestamp ...

  8. android v4兼容包

    一句话解释android兼容包就是:支持更多的组件,样式更好看了.好粗糙的解释啊! 我们都知道Android一些SDK比较分裂,为此google官方提供了Android Support Library ...

  9. Tomcat 组件介绍

    用了好长时间tomcat,但是其实自己只是反复听了这个名字,对Tomcat并不了解 1.Tomcat组件 Catalina Coyote Jasper Cluster 2.组件介绍 Tomcat Co ...

  10. ES6(四)字符串的扩展

    1.字符的表示方式 最早在  \u0000-\uFFFF 之间的字符已经足够使用吗,每个字符占两个字节,超出范围,必须使用双字节形式表达, 即每个字符占四个字节.超出范围的字符,会被解读成  \uXX ...