好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mysql数据类型和约束条件

上周内容回顾

库的增删改查

 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   

查看更多关于mysql数据类型和约束条件的详细内容...

  阅读:28次