码迷,mamicode.com
首页 > 数据库 > 详细

mysql数据类型和约束条件

时间:2021-01-07 12:14:11      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:pass   两种   默认   innodb   jason   创建表   唯一值   sql数据类型   reg   

上周内容回顾

  • 库的增删改查

    show databases;
    show create databese db;
    
    create database db1;
    
    alter datebase charset=‘gbk‘
    
    drop database db1;
    
  • 表的增删改查

    # 操作表之前一定要明确库
    use db1;
    # 查看当前所在的库
    select database();
    
    show tables;
    show create table t1;
    desc t1;
    
    create table t1(id int,name varchar(32));
    
    alter table modify/rename/change ...
    
    drop table t1;
    
    
  • 记录的增删改查

    select * from t1;
    select id,namm,password from t1;
    
    insert into t1 values(1,‘jason‘);
    insert into t1 values(),(),();
    
    update t1 set name=‘jasonNB‘ where id=1;
    
    delete from t1 where id>3;
    
  • 存储引擎

    show engines;
    
    myisam
    innodb			现在主要使用的存储引擎
    memory
    blackhole
    
    create table t1(id int,name char(32)) engine=‘Memory‘;
    
  • mysql的基本数据类型整型

    tinyint
    smallint
    int
    bigint
    
    # 默认都是自带正负号的
    create table t2(id int unsigned);
    # unsigned不带符号
    
  • mysql的基本数据类型之浮点型

    float
    	float(255,30)
    double
    	double(255,30)
    decimal
    	decimal(65,30)
    精确度
    float < double < decimal
    # 1.有时候看似需要用数字存储的数据内部可能使用的是字符类型,字符类型可以避免存储转化的问题
    # 2.python对数字其实不是很敏感,之所以能够做数据分析是因为模块(聚合怪)
    
  • mysql的基本数据类型之字符类型

    char
    	定长
    varchar
    	变长
        
    # 子分类型括号里面的数字用来限制存储的字符个数
    
  • 严格模式

    show variables like ‘%mode%‘
    
    set global sql_mode=‘STRICT_TRANS_TABLES‘
    

今日内容概要

  • 数字类型与字符类型括号后面的数字区别

    字符类型括号里的数字用来表示存储限制
    整型类型括号里的数字用来表示展示长度(不够是否zerofill填充等,一般默认设置就可以了)
    
  • 数据类型之时间类型

    以后主要是模块收集而来的时间而非自己输入
    
  • 数据类型之枚举与集合(单选与多选)

    一选一,比如统计人的性别,国家等
    	enum 语句
    多选多或多选一,如兴趣爱好
    	set 语句
    
  • 创建表的完整语法

  • 修改表

  • 查询流程

  • 插入数据的两种方式

  • 针对主键

今日内容详细

数字类型与字符类型括号后面的数区别

1.我们知道字符类型括号里面的数字里面的标识用来表示存储限制
2.针对整型其实我们需要额外注意并不是用来标识存储限制

整型后面的数字回用于控制展示长度的,并且我们在定义整型字段的时候根本无需制定,默认使用的就可以了

# zerofill数字不够用0填充
create table ti(id int(4) zerofill);

日期类型

date
# 年月日
datetime
# 年月日时分秒
time
# 是分秒
year
# 年
create table user(id int,
                 name char(16),
                 birth date,
                 register_time datatime,
                 study_time time,
                 join_date year);
# 手动模拟时间数据
insert into user values(x,x,x,x,x,x)

枚举类型

其实就是多选一,比如统计人的性别

create table userinfo(
	id int,
    name varchar(32),
    gender enum(‘male‘,‘female‘,‘others‘)
);
# 使其只能进行选择,而非输入

集合类型

其实就是多选多(多选一),比如统计人的爱好
	create table user1(
	id int,
    name varchar(32),
    hobbies set(‘basketball‘,‘football‘,‘doublecolorball‘)
);

创建表的完整语法

create table 表名(
	字段名1 字段类型(宽度) 约束条件,
	字段名2 字段类型(宽度) 约束条件,
	);
1.字段名和字段类型是必须的!!!
2.宽度和约束是可选的(按需求)
3,约束条件可以有多个(空格隔开即可)
4.常见表的最后一个字段结尾不能加逗号

字段的约束条件

unsigned	无符号

zerofill 	0填充

not null 	
# 非空	输入某一个字段必须有内容,但是也可以输入的是(‘‘) 结果也是空
not null
create table t1(
	id int,
    name varchar(32) not null
);

default 	
# 默认值 	不进行输入便选定一个默认的数值输出结果
create table t2(
	id int,
    name varchar(32),
    gender enum(‘男‘,‘女‘,‘其他‘) default ‘男‘
);

unique		
# 唯一/联合唯一	不能重复的唯一值,可以是多个组合但是单个字段可以重复,多个字段的组合不能重复
create table t3(
	id int unique,
    name varchar(32) unique
);
# 联合唯一
create table t4(
	id int,
    ip varchar(32),
    port int,
    unique(ip,port)
);

primary key	主键
create table t5(
	id int primary key,
    name char(32)
);

1.在约束层面上的效果等价于not null 加 unique
2.innodb存储引擎都规定了所有的表都应该有一个主键字段
‘‘‘
1.如果·没有主键字段且表中有非空且唯一的字段会自动升级
2.如果没有主键字段且表中也没有其他带有约束条件的字段,那么innodb会采用采用内部隐藏的一个字段位主键,但是该字段无法使用到

3.我们在创建表的时候应该设置一个id字段并且id字段是表的主键
‘‘‘
auto_increment 自增 其实就是专门给primary key用的

################################
‘‘‘以后我们自创建表的时候,针对主键字段固定按照下列的语句书写‘‘‘
主键字段名 int primary key auto_increment
###################################

# 联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键(了解)
create table t18(
	  ip char(16),
      port int,
      primary key(ip,port)
);
desc t18;
# 非空且唯一

修改表

# mysql对大小写并不敏感
语法:
1. 修改表名  
      ALTER TABLE 表名 
                          RENAME 新表名;
2. 增加字段
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…],
                          ADD 字段名  数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;                       
3. 删除字段
      ALTER TABLE 表名 
                          DROP 字段名;
4. 修改字段  # modify只能改字段数据类型完整约束,不能改字段名,但是change可以!
      ALTER TABLE 表名 
                          MODIFY  字段名 数据类型 [完整性约束条件…];
      ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
      ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

查询流程

1.客户端输入sql语句
2.基于网络将sql语句发送给服务端
3.腐竹段校验审核执行sql语句
4.将sql语句的结果给予网络返回给客户端
5.客户端收到信息后渲染成表给用户看

# 了解
只复制表数据语句
create table t8 select * from t7;
只复制表结构语句
create table t9 like t7;

插入数据的两种方式

insert into t1 values(按照字段依次填值)

insert into t19(id) values(按照字段依次填值)

针对主键

1.不会因为数据的删除而自动重置/回退
# 在分析中有利于有记录利于工作进行 不推荐直接完全格式化
2.如果真的想重置主键只能格式化表
	delete from 不可以
    truncate 	可以

作业

1.今日笔记整理
2.间隔客商操作语句至少敲三遍
	做到脱稿
学习就是反复记忆的过程!!!!!!!!!

mysql数据类型和约束条件

标签:pass   两种   默认   innodb   jason   创建表   唯一值   sql数据类型   reg   

原文地址:https://www.cnblogs.com/kailun-aixuexi/p/14233276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!