前言:昨天跟大家分享了MySQL的账号管理、建库及四大引擎,今天与大家分享的知识是MySQL之数据类型、建表和六大约束。

一、数据类型介绍

1、作用:MySQL中定义数据字段的类型对你数据库的优化是非常重要的。。

2、MySQL的数据类型与之前我们学习的sqlserver和oracle大同小异,MySQL支持三种类型:数值、日期/时间和字符串(字符)类型。

2.1:字符类型:char、varchar、text、blob

2.2:日期类型:date、time、datetime、timestamp(date指年月日时分秒,time指时分秒,datetime指年月日,timestamp指时间戳(长整数))

2.3数值类型  int、bigint、float、decimal(bigint就当于java中的long类型)

二、建表:

1.1、建表和之前的sqlserver以及oracle是一样的,其语法如下:

语法:
                                    create table 表名(
                                               列名 列的类型【(长度) 约束】,
                                               列名 列的类型【(长度) 约束】,
                                               列名 列的类型【(长度) 约束】,                                         
                                               列名 列的类型【(长度) 约束】
                                       )

案列:

create table t_mysql_user(
id int ,
uname VARCHAR(20),
usex varchar(30)
)

1.2、搜索表结构:

desc t_mysql_users

2.表的修改:

  语法:ALTER TABLE 表名 ADD|DROP|MODIFY|CHANGE COLUMN  列名 【列类型 约束】;(注意大小写)

2.1:修改列名:

ALTER TABLE book CHANGE COLUMN publishdate(原列名) pubDate(现列名) DATETIME(数据类型);

代码:

--新建表
create table t_mysql_user(
id int ,
uname VARCHAR(20),
usex varchar(30)
)--1、修改列名(将uname改成unames)
ALTER TABLE t_mysql_user CHANGE COLUMN uname unames varchar(30);

运行结果:

2.2添加新列:

ALTER TABLE author ADD COLUMN annual DOUBLE;

                                                      代码:

--3、增加列名
ALTER  TABLE t_mysql_user ADD COLUMN uprice BIGINT

                                               运行结果: 

2.3删除列:

ALTER TABLE book_author DROP COLUMN annual;

                                                  代码:

--4、删除列名
ALTER TABLE t_mysql_user DROP COLUMN uprice 

                                           运行结果:

2.4修改表名:

ALTER TABLE author RENAME TO book_author;

                                                    代码:

ALTER TABLE t_mysql_user RENAME TO t_mysql_userss

                                             运行结果:

3、表的删除:

DROP TABLE IF EXISTS book_author;

                                    代码:

DROP TABLE IF EXISTS t_mysql_usersss

                              运行结果:

4、表的复制:

4.1、复制表的结构:

                                                                  代码:

CREATE TABLE t_authors as select * from author where 1=0

                                                           运行结果:

author表:

4.2.复制表的结构+数据:

                                                                          代码:

CREATE TABLE t_author as select * from author

                                                                    运行结果:

4.3.只复制部分数据:

                                                                    代码:

CREATE TABLE t_authorss as select aid,aname from author

                                                              运行结果:  

4.4. 仅仅复制某些字段:

                                                                          代码:

CREATE TABLE t_authorsss as select aid,address from author where 1=0

                                                                    运行结果:

三、六大约束:

一、 1、定义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性

2、分类:

2.1: NOT NULL:非空,用于保证该字段的值不能为空
                                                     比如姓名、学号等
                        2.2:   DEFAULT:默认,用于保证该字段有默认值
                                                     比如性别
                        2.3:  PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空
                                                     比如学号、员工编号等
                        2.4: UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空
                                                     比如座位号
                        2.5: CHECK:检查约束【mysql中不支持】
                                                     比如年龄、性别
                        2.6: FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值

3、添加约束的时机:1.创建表时 2.修改表时

4、约束的添加分类:
                                列级约束:六大约束语法上都支持,但外键约束没有效果

表级约束:除了非空、默认,其他的都支持

5、主键和唯一的大对比:

                     保证唯一性    是否允许为空      一个表中可以有多少个   是否允许组合
            主键:      √                     ×                               至多有1个           √,但不推荐
            唯一”:    √                     √                               可以有多个          √,但不推荐

6、添加约束:
                      6.1添加列级约束:

语法:直接在字段名和类型后面追加 约束类型即可。

只支持:默认、非空、主键、唯一

6.2添加表级约束:

语法:在各个字段的最下面

【constraint 约束名】约束类型(字段名)

二、修改表时添加约束​​:

1、添加列级约束:

alter table 表名 modify column 字段名 字段类型 新约束;

2、添加表级约束:

alter table 表名 add 【constraint 约束名】 约束类型(字段名) 【外键的引用】;

3、添加非空约束:

ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;

代码

ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20)  null

                                运行效果:

4、添加默认约束:

ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;

                                        代码:

ALTER TABLE stuinfo MODIFY COLUMN  age int

                                 运行效果:

5、添加主键:

5.1列级约束:

ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;

                                                      代码:

ALTER TABLE stuinfo MODIFY COLUMN  id int PRIMARY KEY

                                               运行效果:

5.2表级约束:

ALTER TABLE stuinfo ADD PRIMARY KEY(id);

                                                     代码: 

ALTER TABLE stuinfo ADD UNIQUE(seat)

                                               运行效果:

6、添加唯一:

6.1列级约束:

ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;

6.2:表级约束:

ALTER TABLE stuinfo ADD UNIQUE(seat);

7、添加外键:

ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);

三:修改表时删除约束:

1、删除非空约束:

ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;

代码:

--删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20)   null

运行效果:

2、删除默认约束 :

ALTER TABLE stuinfo MODIFY COLUMN age INT ;

代码:

--删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN  age int 

运行效果:

3、删除主键 :

ALTER TABLE stuinfo DROP PRIMARY KEY;

代码:

ALTER TABLE stuinfo DROP PRIMARY KEY 

运行效果:

4、删除唯一 :

ALTER TABLE stuinfo DROP INDEX  seat 

代码:

ALTER TABLE stuinfo DROP INDEX  seat

运行效果:

5、删除外键:

ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;

                              代码:

ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major

                              运行效果: 

总结:今天的知识就分享到这里了,MySQL知识只要靠识记,并将学的知识反复练习就可以达到一个目标了,最后祝大家生活愉快!

MySQL之数据类型、建表和六大约束相关推荐

  1. oracle建表6大约束,oracle 建表 约束 constraint

    约束命名规则 如果不指定约束名Oracle server 自动按照SYS_Cn 的格式指定约束名,也可手动指定, 推荐的约束命名是:约束类型_表名_列名. NN:NOT NULL           ...

  2. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  3. Python Web开发框架之Django篇——二、Django连接MySQL数据库以及建表的操作

    二.Django连接MySQL数据库以及建表的操作 准备工作:安装Python访问MySQL的模块 一.修改project同名目录下面的__init__.py文件 二.修改project同名目录下面的 ...

  4. quartz各版本MySQL数据库存储建表SQL语句

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 用quartz管理任务计划很方便,但是当使用数据库作为存储介质的时候,必须要先创建表,不然就会报错. ...

  5. mysql存储过程批量建表

    asif mysql存储过程批量建表 用MySql的存储过程建立100张表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  6. 数据库(Mysql)----mysql建表中的约束

    1.主键约束 它能够唯一确定一张表中的一条记录,增加主键约束之后,就可以使得字段不重复而且不为空 create table user(id int PRIMARY KEY,name VARCHAR(2 ...

  7. mysql中如何删除表中int约束,MySQL中的约束,添加约束,删除约束,以及其他修饰

    一.NOT NULL(非空约束) 添加非空约束 1)建表时直接添加 CREATE TABLE t_user(user_id INT(10) NOT NULL); 2)通过ALTER 语句 ALTER ...

  8. mysql nn_mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI含义说明

    mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI含义说明 时间:3年前 作者:庞顺龙 浏览:674 [站内原创,转载请注明出处] mysql workbench建表时PK ...

  9. mysql用代码建表基础语法

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 创建表 一.基本创 ...

最新文章

  1. LA3971组装电脑
  2. 动态分辨率是什么意思_什么是1080p、2k、4k?视频基础参数解释
  3. 【小技巧】Xcode7.1中KSImageNamed无效的解决方法
  4. 为什么需要ORM 框架
  5. 大数据、AI“武装”企业服务:风控、检索、安全
  6. struts-resultType属性
  7. C#读取文本数据(按行读取)
  8. 计算机常见的多媒体端口,常用的多媒体设备接口有哪些?
  9. poj2689Prime Distance
  10. 软件测试用例模板和例子_如何编写测试用例?
  11. 系统开发中的时间类型的处理问题
  12. dcs world f15c教学_高端DCS带电清洗用的什么清洗剂
  13. js中文乱码解决方法
  14. 使用Hash表时,针对Hash冲突的几个常见解决办法
  15. html页面转excel文件,html格式文件转excel
  16. C语言入门“hello word”编写
  17. 明源云与华为联合发起828 B2B企业节,共同成就好生意!
  18. 使用app管理家庭路由器(TP-Link,水星,腾达等)
  19. samba报错:smbd dead but pid file exists
  20. 会玩计算机游戏英语,英语口语表达:他整天就只会玩计算机游戏

热门文章

  1. django中的关联查询
  2. 分享四个一键生成神器:Logo、App、小程序、H5等五分钟快速搞定
  3. MSDC 4.3 接口规范(11)
  4. 编写你的应用程序(三)、3D图形
  5. mybatis/mybatis plus lambda会话缓存失效(1)
  6. Python——pyqt5的计算器(源码+打包)
  7. UPC 2020年夏混合个人训练第五十场【DEG】
  8. RT-Thread Studio 项目实战教程 | 快速打造一个桌面mini网络时钟
  9. CLRS 17.4动态表
  10. [转] 大三下,我们该做什么?