今日内容:    一,字段类型        在建表的时候,每个字段都有自己的类型            1,整型            2,浮点型            3,时间类型            4,字符类型            5,枚举与集合    二,约束条件            1,primary key            2,unique key            3,not null

    ps; 重点记住知识:

        unique 唯一        default   给某个字段设置默认值        auto_increment  自动递增        not null  不能为空        unsigned  无正负符号        zerofill  0填充多余的位数        char后面的数字是用来限制存储数据的长度的        枚举与集合类型            枚举(enum)  限制某个字段能够存储的数据内容            集合(set)   限制某个字段能够存储的数据内容        浮点型精确度:float < double < decimal   精确度依次越来越高        字符类型:            char与varchar的区别                char定长                    1.浪费空间                    2.存取速度快

            varchar变长                1.节省空间                2.存取速度慢(较于char比较慢)                    存的时候 需要给数据讲一个记录长度的报头                    取的时候 需要先读取报头才能读取真实数据                char(4)  # 最大只能存四个字符 超出来会直接报错  如果少了 会自动用空格填充                varchar(4)   # 最大只能存四个字符 超出来会直接报错  如果少了 有几个存几个              char后面的数字是用来限制存储数据的长度的

            特例:只有整型后面的数字不是用来限制存储数据的长度 而是用来控制展示的数据的位数                    int(8)  够/超8位有几位存几位,不够8位空格填充

                    修改约束条件  不够8位的情况下 用0填充                    强调:**对于整型来说,数据类型后的宽度并不是存储限制,                    而是显示限制,所以在创建表时,                    如果字段采用的是整型类型,完全无需指定显示宽度, 默认的显示宽度,足够显示完整当初存放的数据                    只要是整型 都不需要指定宽度 因为有默认的宽度 足够显示对应的数据

        模糊匹配            like                %匹配任意多个字符                _匹配任意一个字符

            set session  临时有效  只在你当前操作的窗口有效            set global   全局有效  终生有效            set global sql_mode = 'STRICT_TRANS_TABLES';            设置完之后 你只需要重新退出客户端再次进入即可         存储引擎        不同的数据应该有不同的处理机制

        mysql存储引擎           Innodb:默认的存储引擎  查询速度较myisam慢  但是更安全           myisam:mysql老版本用的存储引擎           memory:内存引擎(数据全部存在内存中)           blackhole:无论存什么 都立马消失(黑洞)

    创建完整表格语法:        
#语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);#注意:
1. 在同一张表中,字段名不能相同
2. 宽度和约束条件可选,字段名和类型是必须的
3. 最后一个字段后不能加逗号!# 补充:
# 1.宽度指的是对存储数据的限制
create table userinfo(name char);
insert into userinfo values('jason');
"""
1.没有安全模式的数据库版本,能够存放数据但是只会存进去一个j
2.最新数据库版本直接报错提示无法存储:Data too long for column 'name' at row 1
"""# 2.约束条件初识>>> null 与 nut null
create table t1(id int,name char not null);
insert into t1 values(1,'j');  # 正常存储
insert into t1 values(2,null);  # 报错# 总结 类型与约束条件区别
# 类型:限制字段必须以什么样的数据类型存储
# 约束条件:约束条件是在类型之外添加一种额外的限制

            1,整形                分类:tinyint  smallint mediumint int  bigint                作用:储存年龄, 等级, id, 各种号码等                1》 验证整型字段有无符号及范围                    unsigned :表示无负号                    tinyint 表示范围(127到 -128),即最小-128,最大127                           默认是否有符号   默认是带有符号的(-128,127)                         超出限制会如何   超出之后只会存最大值或者最小值                        create table t1(id tinyint);                        insert into t1 values(128),(-129);

                        create table t2(id tinyint unsigned);                        insert into t2 values(-1),(256);   结果为   0  255

                        create table t3(x int unsigned);                        insert into t3 values(4294967296);

                    强调:对于整型来说,数据类型后的宽度并不是储存限制,而是显示设置                        所以在创建表时,如果字段采用的是整型类型,完全无需指定显示宽度,默认的显示宽度就足以显示完整当初存放的数据            严格模式:                我们刚刚在上面设置了char,tinyint,存储数据时超过它们的最大存储长度,                发现数据也能正常存储进去,只是mysql帮我们自动截取了最大长度。但在实际情况下,                我们应该尽量减少数据库的操作,                缓解数据库的压力,让它仅仅只管理数据即可,这样的情况下就需要设置安全模式

                  默认是否有符号   默认是带有符号的(-128,127)         超出限制会如何   超出之后只会存最大值或者最小值

           浮点型                精确度:                    float < double < decimal

                float(255,30)  总共255位 小数部分占30位     结果精度较低
show variables like "%mode%";  # 查看数据库配置中变量名包含mode的配置参数
# 修改安全模式
set session # 只在当前操作界面有效
set global  # 全局有效

set global sql_mode ='STRICT_TRANS_TABLES'
# 修改完之后退出当前客户端重新登陆即可

                double(255,30) 总共255位 小数部分占30位     结果精度中等                decimal(65,30) 总共65位 小数部分占30位      结果精度最高

                create table t12(id FLOAT(255,30));                create table t13(id DOUBLE(255,30));                create table t14(id DECIMAL(65,30));

                insert into t12 values(1.111111111111111111111111111111);                insert into t13 values(1.111111111111111111111111111111);                insert into t14 values(1.111111111111111111111111111111);    字符类型            char(4)  # 最大只能存四个字符 超出来会直接报错  如果少了 会自动用空格填充            varchar(4)   # 最大只能存四个字符 超出来会直接报错  如果少了 有几个存几个

            create table t15(name char(4));            create table t16(name varchar(4));

            char_length()

            mysql在存储char类型字段的时候 硬盘上确确实实存的是固定长度的数据            但是再取出来的那一瞬间 mysql会自动将填充的空格去除

            可以通过严格模式 来修改该机制 让其不做自动去除处理

            char与varchar的区别                char定长                    1.浪费空间                    2.存取速度快

            varchar变长                1.节省空间                2.存取速度慢(较于char比较慢)                    存的时候 需要给数据讲一个记录长度的报头                    取的时候 需要先读取报头才能读取真实数据

            char(4)                   varchar(4)            取的时候方便          取的时候比较繁琐了 无法知道数据到底多长            直接按固定的长度取即可

    日期类型            date       年月日            datetime   年月日 时分秒            year       年            time       时分秒

        枚举与集合类型            枚举(enum)  限制某个字段能够存储的数据内容            集合(set)   限制某个字段能够存储的数据内容

    约束条件        not null  不能为空        default   给某个字段设置默认值(当用户写了的时候用用户的,当用户没有写就用默认值)        create table t17(id int,name char(16) default 'jason');

        往表中插入数据的时候  可以指定字段进行插入 不需要全部都插        insert into t17(name,id) values('egon',2);

        unique 唯一

        单列唯一   限制某一个字段是唯一的        联合唯一(在语句的最后 用括号的形式 表示哪几个字段组合的结果是唯一的)            ip            port

            create table server(                    id int,                  ip char(16),                  port int,                  unique(ip,port)                )

        primary key  主键            限制效果跟 not null + unique 组合效果一致   非空且唯一

            create table t18(id int primary key);

            primary key也是innodb引擎查询必备的索引                索引你就把当成书的目录

            innodb引擎在创建表的时候 必须要有一个主键            当你没有指定主键的时候                1.会将非空切唯一的字段自动升级成主键                2.当你的表中没有任何的约束条件  innodb会采用自己的内部默认的一个主键字段                    该主键字段你在查询时候是无法使用的                    查询数据的速度就会很慢                    类似于一页一页的翻书

                    create table t19(                        id int,                      name char(16),                      age int not null unique,                      addr char(16) not null unique                    );

            主键字段到底设置给谁呢???                通常每张表里面都应该有一个id字段                并且应该将id设置为表的主键字段

            联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键!!!                !!!!!!!!!!!!!!!!!ps:innodb引擎中一张表有且只有一个主键!!!!!!!!!!!!!!!!!!!!!!!

            create table t20(                    ip char(16),                  port int,                  primary key(ip,port)                );                desc t20;

            主键字段应该具备自动递增的特点                每次添加数据  不需要用户手动输入                auto_increment  自动递增            create table t21(id int primary key auto_increment,name varchar(16));

            create table t22(id int primary key,name varchar(16));        语句delete from  仅仅是删除数据   不会重置主键        语句truncate   初始化表  会重置主键

转载于:https://www.cnblogs.com/Fzhiyuan/p/11379053.html

2,数据类型,约束条件相关推荐

  1. mysql数据库约束无符号_mysql 数据类型 约束条件

    今日内容: 引擎:决定数据库存取数据的方式==>不同的特点==>不同的用户体验 数据类型:规定了数据库可以存放哪些数据 约束:限制储存数据的规则 引擎: 针对于表的 前提:引擎是建表时规定 ...

  2. MySQL基础——DDL语言学习\数据库的建立\MySQL数据类型\MySQL常见约束\表的增删改

    接上篇文章 MySQL基础--数据库和SQL概述\MySQL基本使用\DQL语言学习 DDL语言学习 Data Definition Language 数据定义语言 主要用于数据库和数据表的管理和操作 ...

  3. 【FPGA学习笔记】VHDL语言(二):VHDL的数字表示,数据对象,数据类型

    VHDL 的语法规则 一.数字表示 整数:5,34,123_789_456 实数:44.66E-2(44.66*0.01) 以数制基数表示的数:2#1111_1110#254表示二进制数,111111 ...

  4. MySql基础篇---003 SQL之DDL、DML、DCL使用篇:创建和管理表 ,数据处理之增删改,MySQL数据类型精讲 ,约束:联合主键

    第10章_创建和管理表 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步.只有正确地 ...

  5. mysql 删除一个约束条件_MySQL 字段增删改查 和 约束条件

    一.字段操作 1.添加字段 (add) alter table add 字段名 数据类型; desc ; 2.修改字段数据类型 (modify) alter table modify ; 3.字段重命 ...

  6. mysql四列数据表代码_MySQL数据库常用代码

    MySQL数据库常用代码启动数据库服务:[ net Start MySQL ] 使用命令登录:[ Mysql -h localhost -u root -p] 关闭数据库服务: [net stop m ...

  7. Mysql之alter用法汇总

    为实现数据库中表规范化设计的目的,有时候需要对之前已经创建的表进行结构修改或者调整. 在MySQL中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列.创建或取消索引.更改原有 ...

  8. 第五次作业——软件设计

    第五次作业--软件设计 在开始软件设计之前,首先确定软件设计中的各个模块需要考虑的任务,绘制概要图如下: 下面根据上述各个模块,逐层进行软件设计: 一.概要设计 首先,概要设计的目的是确定软件的结构以 ...

  9. oracle 基础1

    目    录 一. 数据库基础部分 第一章       oracle基础介绍 第二章  数据查询语言(QL) 第三章  数据定义语言(DDL) 第四章  Oracle数据分区表 第五章  PL/SQL ...

  10. MySQL修改数据表(ALTER TABLE语句)

    为实现数据库中表规范化设计的目的,有时候需要对之前已经创建的表进行结构修改或者调整. 在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列.创建或取消索引.更改 ...

最新文章

  1. Spring使用外部属性文件
  2. 启明云端分享|乐鑫推出在线选型工具 ESP Product Selector
  3. 算法与数据结构(part6)--单向链表
  4. SAP UI5 myTask setBindingContext in SAP Fiori application
  5. java 优秀源码_想要快速进阶Java架构师?这份超强(长)学习计划单 请签收!...
  6. 中国新时代贡献人物_关于如何鼓励新贡献者的8个新博客文章
  7. 2014电池测试软件,【技术】关于锂电池GB31241-2014洗涤测试要求
  8. 罗永浩的电子烟公司融资3000万元?8月或将发布新品 定价600元左右
  9. Hello World@@@@
  10. Redis客户端Redisson+SpringBoot实现的分布式锁案例
  11. 嵩天python测验_考试 嵩天老师 :测验3: Python语法程序与设计(第3周)
  12. 黑马程序员宣传语征集大赛
  13. Channel~scatter and gather
  14. Git使用:拉取最新代码、提交本地代码到远程仓库冲突
  15. 王之泰《面向对象程序设计(java)》课程学习总结
  16. 一、Jmeter总结
  17. mysql 中 一个汉字吗_MySQL 中一个汉字占多少存储?
  18. qt tableWidget 去掉网格线
  19. 请问肾阴虚吃什么药?饮食注意什么?还有桂附地黄丸是治肾阴虚还是治肾阳虚的?谢谢...
  20. mongodb 地理距离_MongoDB地理空间移动演示

热门文章

  1. HTML如何实现单元格自动编号,如何在Excel中自动为列编号?
  2. linux离线安装virtualen,在Virtualbox中安装PuppyLinux实录三
  3. python3学习日志Gui编程
  4. preg_match_all中的标记
  5. 一个简单的mysql服务检测启动脚本
  6. React 的慢与快:优化 React 应用实战
  7. CMM关键过程域剖析:需求管理
  8. 修改打开方式的程序列表中列出程序的名称
  9. vs2008生成lib文件
  10. Expression Blend实例中文教程(6) - 项目控件和用户交互控件快速入门