MySQL--表操作(innodb表字段数据类型、约束条件)、sql_mode操作
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
类型:使用限制字段必须以什么样的数据类型传值
约束条件:约束条件是在类型之外添加一种额外的限制
a、在同一张表中,字段名是不能相同
b、宽度和约束条件可选,字段名和类型是必须的
c、最后一个字段后不加逗号
1、作用:id号,各种号码,年龄,等级
tinyint(**): 1个字节,有符号可表示(-128,127),无符号可表示(0,255)
int (*****): int为最常用类型;4个字节
bigint(***): 8个字节
create table t1(x tinyint);
insert into t1 values(128),(-129); #默认整型在非严格模式下,超出范围不报错,存成127和-128
insert into t2 values(-1),(256); #无符号整型在非严格模式下,超出范围不报错,存成0和255
insert into t3 values(4294967296); #在非严格模式下,超出范围不报错,存成4294967295
insert into t4 values(4294967296123); #对于整型来说宽度不是存储限制,这里的宽度是显示宽度。
对于其他类型,宽度为存储限制。
create table t5(x int(8) unsigned zerofill); # 显示时,不够8位用0填充,如果超出8位则正常显示; zerofill只能用于数字模式(如int)
insert into t5 values(4294967296123); # 13位在严格模式下,报错
insert into t5 values(1); # 00000001
a、查看sql_mode
mysql> show variables like "%sql_mode%";
+----------------------------+---------------------+
| Variable_name | Value |
+----------------------------+---------------------+
| binlogging_impossible_mode | IGNORE_ERROR |
| block_encryption_mode | aes-128-ecb |
| gtid_mode | OFF |
| innodb_autoinc_lock_mode | 1 |
| innodb_strict_mode | OFF |
| pseudo_slave_mode | OFF |
| slave_exec_mode | STRICT |
| sql_mode | STRICT_TRANS_TABLES |
+----------------------------+---------------------+
8 rows in set (0.00 sec)
mysql> set global sql_mode="strict_trans_tables"; #global为全局,session为当前
1、作用:存储身高、体重、薪资
float (*****):最为常用 FLOAT(M,D) M:数字个数 max 255, D:小数位个数 max 30
double (**):DOUBLE(M,D) M:数字个数 max 255, D:小数位个数 max 30
decimal (**):DECIMAL(M,D) M:数字个数 max 65, D:小数位个数 max 30 (即整数位个数 max 35)
a、对于三者来说,都能存放30位小数,
a、精度的排序从低到高:float,double,decimal
b、float与double类型能存放的整数位比decimal更多
create table t10(x double(255,30));
create table t11(x decimal(65,30));
insert into t9 values(1.111111111111111111111111111111); # 1.111111164093017600000000000000
insert into t10 values(1.111111111111111111111111111111); # 1.111111111111111200000000000000
insert into t11 values(1.111111111111111111111111111111); # 1.111111111111111111111111111111
1、作用:姓名,地址,描述类的信息
char: 定长
varchar: 变长
#推荐使用char;不推荐混用,如果混用需定长在前、变长在后。
create table t12(x char(4)); # 超出4个字符则报错,不够4个字符则用空格补全成4个字符
create table t13(y varchar(4)); # 超出4个字符则报错,不够4个字符那么字符有几个就存几个
insert into t13 values('hello'); #报错
insert into t13 values('a'); #'a'
select char_length(y) from t13; #1
set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH"; #在屏蔽mysql中的处理,还原真实效果
select char_length(x) from t12; #4
select char_length(y) from t13; #1
mysql> select * from t14 where name="lxx"; # name字段明确地等于一个值,该值后填充空格是没有用; 即能搜索到
mysql> select * from t14 where name like "lxx"; # name字段模糊匹配一个值,该值后填充空格是有用的: 即搜索不到,需搜索"lxx__", 或"lxx ",或"lxx%"
%: 任意长度的任意字符
_: 任意一个字符
name char(5)
# 缺点:浪费空间
# 优点:存取速度都快
egon alex lxx wxx yx
# 缺点:存取速度都慢
# 优点:节省空间(it depends); 需要一个头(1-2个字节)存长度 # 2bytes可存65535个字符,mysql中所有字符串(char)中字符数皆不超过65535
(1bytes+egon)(1bytes+alex)(1bytes+lxx)
1、作用:时间相关
date:1999-01-27
time: 11:11:11
datetime:1999-01-27 11:11:11
year:1999
create table student(
id int,
name char(16),
born_year year,
birth date,
class_time time,
reg_time datetime
);
1、作用与分类:
枚举enum,多选一个
集合set,多选多
create table teacher(
id int,
name char(16),
sex enum('male','female','others'),
hobbies set('play','read','music','piao')
);
# 默认null (可传空)
id int,
name char(16) not null,
sex enum('male','female','other') not null default "male" # 常用用法: not null 和 default连用
);
(1,'egon1'),
(2,'egon2'),
(3,'egon3');
1、单列唯一
create table t16(
id int unique, #key: PRI
name char(16)
);
create table server(
id int unique,
ip char(15),
port int,
unique(ip,port) #ip可以重复,port可以重复,ip+port不可重复
);
1、强调(******)
a、一张表中必须有,并且只能有一个主键
#如果没有主动指定primary key,从上至下把找到的第一个not null unique变成primary key
#如果没有主动指定primary key,且没有not null unique,默认一个隐藏字段(7bytes)为主键,并根据其组织数据结构;进而丧失了加速查询优势
id int primary key, #key:PRI
name char(16),
age int,
sex char(6)
)engine=innodb;
create table t19(
ip char(15),
port int,
primary key(ip,port)
);
a、通常与primary key连用,而且通常是给id字段加
b、auto_incremnt只能给被定义成key(unique key,primary key)的字段加
id int primary key auto_increment,
name char(16)
)engine=innodb;
key(索引)为mysql中一种特殊的数据结构
a、unique 约束条件,加速查询
b、primary key 约束条件,加速查询,innodb组织数据结构的依据
c、index key 加速查询
d、foreign key 没有加速查询功能
MySQL--表操作(innodb表字段数据类型、约束条件)、sql_mode操作的更多相关文章
- [MySQL数据库之表的详细操作:存储引擎、表介绍、表字段之数据类型]
[MySQL数据库之表的详细操作:存储引擎.表介绍.表字段之数据类型] 表的详细操作 存储引擎 mysql中建立的库======>文件夹 库中建立的表======>文件 用来存储数据的文件 ...
- mysql / pgsql 使用sql语句查询数据库所有表注释已经表字段注释
mysql使用sql语句查询数据库所有表注释已经表字段注释(转载) 场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammo ...
- MySQL 基本语法(1.表字段操作,2表记录管理 3.运算符管理4.SQL查询 5.约束6.索引
.表字段的操作 .语法:alter table 表名 执行动作; .添加字段(add) .添加到末尾 alter table 表名 add 字段名 数据类型; .添加到第一列 alter table ...
- MySQL知识补充(表字段操作、视图、触发器、事物、存储过程、内置函数、流程控制、索引、慢查询)
今日内容概要 表字段操作补充(掌握) 视图(了解) 触发器(了解) 事务(掌握) 存储过程(了解) 内置函数(了解) 流程控制(了解) 索引(熟悉) 内容详细 1.表字段操作补充 # 1.添加表字段 ...
- mysql使用sql语句查询数据库所有表注释已经表字段注释
场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammothcode’ 所有表注释 */ SELECT TABLE_NAME,T ...
- coding++ :MySQL 使用 SQL 语句查询数据库所有表注释已经表字段注释
1.要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammothcode’ 所有表注释 */ SELECT TABLE_NAME,TABLE_ ...
- explain为mysql关键字,不能作为表字段创建
在用jpa自动建表时,字段名命名为了explain,发现报实体类与数据库表字段不一致的错,查询才发现explain是mysql的关键字,无法作为表字段建立,特此记录
- django学习-25.admin管理后台里:把表名称和表字段名称的展示值都由英文显示改为由中文显示
目录结构 1.前言 2.完整的操作步骤 2.1.第一步:修改模型类Article 2.2.第二步:重启服务 2.3.第三步:退出登录并再次成功登陆admin管理后台 2.4.第四步:查看最新的表名称展 ...
- oracle查看表名称和表字段注释
--查询该表字段的注释select * from user_col_comments where Table_Name like '%SMS%' --查询类似表select * from user_t ...
随机推荐
- java生产环境增量发版陷阱【原】
前言 在生产环境,我们为了降低发版风险,一般都只做增量发布,不做全量发布. 除非项目只有一到两人开发,对时间线和代码脉络结构一清二楚,才可全量发布. 然而增量发布也是有一定隐藏陷阱在里面的,以下就是笔 ...
- 转载---滋滋有味看完的一篇文章关于python与java夜话
这是一个程序员的电脑硬盘,在一个叫做"学习"的目录下曾经生活着两个小程序,一个叫做Hello.java,即Java小子:另外一个叫做hello.c ,也就是C老头儿. C老头儿的命 ...
- idea上使用maven模块开发
使用maven模块开发: 使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为common(域模型层).dao(数据库访问层).s ...
- C#中foreach命令的使用
在Python中,for循环不仅可以用来做指定次数的循环,还可以利用for i in xxx:来实现元素的遍历,遍历的对象几乎可以是任意格式.而在C++以及C#中,除了普通的for循环之外,也提供了这 ...
- CMD之入门篇
本博文最早是记录在本地电脑的,由于清理电脑的缘故,顺便将这篇笔记转移到公共博客,以便日后查阅和快速上手使用. 开门见山,步入正题,以下是Windows系统的常用CMD命令. 一 文件系统操作 0.[脚 ...
- css flex布局详解
来源:https://blog.csdn.net/liveinmylife/article/details/51838939 1,flex布局是个什么东西? 官方说法:Flex是Flexible Bo ...
- 嵌入式开发-迅为4418开发板Android4.4.4实现ble功能
①.如果是迅为4418开发板:在4418/android/device/nexell/drone2/device.mk中添加: frameworks/native/data/etc/android.h ...
- webpack指定第三方模块的查找路径
通常我们会使用一些地方模块在我们的项目中,比如bootstrap import 'bootstrap' 导入的bootstrap默认会查找当前目录的node_modules文件,但是如果这个文件没有, ...
- Element-ui 中dialog的使用方法
<template> <div> <el-button type="text" @click="dialogFormVisible = tr ...
- UOJ #36「清华集训2014」玛里苟斯
这怎么想得到啊......... UOJ #36 题意:求随机一个集合的子集的异或和的$k$次方的期望值,保证答案$ \lt 2^{63},1 \leq k \leq 5$ $ Solution:$ ...