引擎

show engines : 查看引擎

innodb(默认引擎):支持事务,行级锁,外键
myisam:查询效率由于innodb,不需要支持事务,行级锁,外键,可以选用myisam来优化数据库 mysql> create table t1(id int)engine=innodb;
mysql> create table t2(id int)engine=myisam;
mysql> create table t3(id int)engine=blackhole;
mysql> create table t4(id int)engine=memory;
eg:
  create table t1(name char,id int) engine=innodb
  insert into t1 values(1)

一个完整的建表语句

create table 表名 (
  字段名1 类型[(宽度)约束条件],
  字段名2 类型[(宽度)约束条件],
  字段名3 类型[(宽度)约束条件],
)engine=innodb charset="utf8";
#engine 指引擎,charset指字符编码集

数据库模式:

 严格模式:超出范围报错      非严格模式:超出范围不报错

show variables like "%sql_mode%"  查看当前数据库模式,% 代表模糊查找
set global sql_mode="strict_trans_tables"; 设置数据库模式 no_engine_substitution:非安全性,默认
strict_trans_tables:安全模式(严格模式)

mysql数据类型

规定数据存放的哪些数据
整形 浮点型 字符型 时间类型 枚举类型 集合类型

整形:(长度默认是11)

整形: 不同类型所占字节数不一样,决定所占空间及存放数据大小限制
tinyint:1字节 -128 到 127
smallint:2字节
mediumint:3字节
int:4字节
bigint:8字节

形式  tinyint    smallint   mediumint   int    bigint

字节  1(255)        2          3         4       8

宽度:

1.不能决定整形存放数据的宽度,超过宽度可以存放,最终由数据类型所占字节决定

2.如果没有超过宽度,且有zerofill限制,会用0填充前置位的不足为

3.没有必要规定整形的宽度,默认设置的宽度就为最大宽度

整形的限制:不是容量限制,而是显示宽度

  create table t1(id int(5) zerofill)  当查看的数是小于长度5,用0补上

浮点型

   float   double     decimal
字节  4       8     (自定义)
float:4字节         精度最低,最常用
double:8字节 精度高,占位多
decimal:自定义字节 字符串存,全精度
float(M,D) M为总位数,D为小数位
根据总位数可以算出整数位的位数
float(6,3)

字符集

char:定长    一定按规定存放数据,以规定宽度读取数据
varchar:不定长 首先根据数据长度计算宽度,并在数据开始以数据头方式将宽度信息保存起来,计算耗时
宽度:
char(4):以四个字符长度存储,超出报错浪费空间,以空间换取时间效率,减少IO
varchar(4):数据长度决定字符长度,但也不能超出长度,节省空间 总结:数据长度相近的数据提倡用char来存取数据,数据需要高速存取,异空间换时间 char(3)  在硬盘保存为3 字符长度
    yxx exx lxx zxx char(3)
如果是char类型 ,数据不足,空格补全
smysql自动去除空格 select *from t1 where name='yh'

char 存取效率高/ 浪费存储空间

varchar 存取效率低于char/节省存储空间

字符串现出原形:

char_length(x)  字符的个数
我们可以设置sql模式 来让它现出原形
set global sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"
设置完成后重启msyql 再次查询长度

时间类型

year:年  yyyy(1901/2155)
date:年-月-日 yyyy-MM-dd
time:时分秒 HH:mm:ss
datetime:年月日时分秒 yyyy-MM-dd HH-mm-ss 可以为空,不依赖时区
timestamp:年月日时分秒 yyyy-MM-dd HH-mm-ss 不能为空,默认位当前时间,依赖时区 共同点: 时间存取通过字符串类型 都可以使用now()函数来插入当前时间

create table student(

id int primary key auto_increment,

name char(16),

born_year year,

birth date,

class_time time,

reg_time datetime

);

insert into student value(2,'zxx',2000,2018-11-11,now(),now());

枚举与集合

枚举 enum:单选
集合 set:多选
性别:单选
爱好:多选
create table t1 (
  sex enum('male',"female","wasai") not null default "wasai"", #枚举
  hobbies set("play","read","music") #集合
); insert into t1(sex,hobbit) values("male","play,read");

约束条件

foreign ket:外键(联合索引)

主键: 表默认都有主键
primary key:主键(不为空,唯一性)
单例主键:
create table t1(id int primary key)
联合主键:
create table t1(ip char(16),port int,primary key(ip,port)) 唯一性:
unique key: 唯一性约束,联合唯一
单列唯一(单个字段不能重复)
create table t1(id int unique) 联合唯一(指联合的字段不能同时重复)
create table t1(
  ip char(16),
  port int,
  unique(ip,port)
) 自增:
auto_increment:自增,只能跟key字段连用
create table t1(id int primary key auto_increment ) not null:不能为空
default:默认值 unsigned : 无符号
zerofill : 0填充

mysql引擎,完整的见表语句,数据库模式, 常用数据类型,约束条件的更多相关文章

  1. 百万年薪python之路 -- MySQL数据库之 常用数据类型

    MySQL常用数据类型 一. 常用数据类型概览 # 1. 数字: 整型: tinyint int bigint 小数: float: 在位数比较短的情况下不精确 double: 在位数比较长的情况下不 ...

  2. MySql数据库之常用数据类型及常用约束简述

    本文呢,主要给大家简述一下数据库中常用的几种数据类型以及约束. 1.数据类型 数据类型,是指数据表中可以存储的数据的种类. 数据库中常用的数据类型有: 1.整型:int.bit 2.小数:decima ...

  3. MySQL学习记录(导入Excel表到数据库,并筛选条件输出)

    附上:重置mysql账号密码方法 ubuntu系统下mysql重置密码和修改密码操作 - skh2015java的博客 - CSDN博客(改完重启,登录mysql要root/sudo权限) Cento ...

  4. sql 标准见表语句

    建一张表 /******************************************************************************** 小区主档记录,要保证与Or ...

  5. mysql命令行查看建表语句

    命令如下: SHOW CREATE TABLE tbl_name 例子: mysql> SHOW CREATE TABLE t\G . row ************************* ...

  6. MYSQL数据库的常用数据类型

    列类型 说明 tinyint/smallint/mediumint int(integer)/bigint 1字节.2字节.3字节.4字节.8字节整数,又可分有符号和无符号两种.这些整数类型的区别仅仅 ...

  7. 获取impala下所有的数据库建表语句

    方法一: 现在的导出还是有缺陷的,导出的文件中还是存在其他不必要的信息 #!/bin/bash ##获取数据库 databases=$(hive -e "show databases; ex ...

  8. [MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]

    [MySQL数据库之数据库相关概念.MySQL下载安装.MySQL软件基本管理.SQL语句] 数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序. 我们在编写任何程 ...

  9. Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。

    题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...

随机推荐

  1. Android 简单调用摄像头

    IDE: android studio3.1.2 界面: activity_main2.xml

  2. python学习日记(生成器函数进阶)

    迭代器和生成器的概念 迭代器 对于list.string.tuple.dict等这些容器对象,使用for循环遍历是很方便的.在后台for语句对容器对象调用iter()函数.iter()是python内 ...

  3. 给 Haproxy 创建日志文件

    背景介绍:默认下的Haproxy配置是不会生成日志文件的,而无运行日志,无法确定系统运行是否流畅,无法提起预判可能发生的故障 创建Haproxy日志文件的步骤如下vi /etc/rsyslog.con ...

  4. 【CF1097E】Egor and an RPG game(动态规划,贪心)

    [CF1097E]Egor and an RPG game(动态规划,贪心) 题面 洛谷 CodeForces 给定一个长度为\(n\)的排列\(a\),定义\(f(n)\)为将一个任意一个长度为\( ...

  5. bzoj4481非诚勿扰(期望dp)

    有n个女性和n个男性.每个女性的如意郎君列表都是所有男性的一个子集,并且可能为空.如果列表非空,她们会在其中选择一个男性作为自己最终接受的对象.将“如意郎君列表”中的男性按照编号从小到大的顺序呈现给她 ...

  6. Linux的wget命令详解【转载】

    Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器.如果我们使用虚拟主机,处理这样的 ...

  7. Linux:文件系统层次结构标准(Filesystem Hierarchy Standard)

    Linux FHS_2.3标准文档:http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf

  8. js 函数声明和函数表达式的区别

    javascript中声明函数的方法有两种:函数声明和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函数 ...

  9. 洛谷P3321 序列统计

    气死了,FFT了半天发现是NTT... 1004535809 这个东西是NTT模数,原根为3. 题意:给定集合,元素的大小不超过M.用这些元素组成长为n的序列,要求乘积模M为k,求方案数. n < ...

  10. react-native中的props

    效果图 大多数组件在创建时就可以使用各种参数来进行定制.用于定制的这些参数就称为props(属性). 以常见的基础组件Image为例,在创建一个图片时,可以传入一个名为source的 prop 来指定 ...