引擎

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. ARC 086 E - Smuggling Marbles(dp + 启发式合并)

    题意 Sunke 有一棵 \(N + 1\) 个点的树,其中 \(0\) 为根,每个点上有 \(0\) 或 \(1\) 个石子, Sunke 会不停的进行如下操作直至整棵树没有石子 : 把 \(0\) ...

  2. 【转】设置 vim 显示行号永久有效

    在linux环境下,vim是常用的代码查看和编辑工具.在程序编译出错时,一般会提示出错的行号,但是用vim打开的代码确不显示行号,错误语句的定位非常不便.那么怎样才能让vim显示代码的行号呢? 1 临 ...

  3. our happy ending(状压dp)

    题意:给定一个n,k,l. 问有多少长度为n的序列满足选出一些数使得他们相加为k,数列中每个数都在1-l以内. Solution 正解还是很妙的. 状压dp,设dp[i][j]表示长度为i的序列,能表 ...

  4. 洛谷P2178 品酒大会

    题意:若两个字符开始的后面r个字符都一样,则称这两个字符是r相似的.它们也是r-1相似的. 对于r∈[0,n)分别求有多少种方案,其中权值最大方案权值是多少.此处权值是选出的两个字符的权值之积. 解: ...

  5. 洛谷P2824 排序

    解:splay + 线段树合并,分裂. 首先有个乱搞做法是外层拿splay维护,有序区间缩成splay上一个节点.内层再开个数据结构支持合并分裂有序集合. 内层我一开始想的是splay,然后就没有复杂 ...

  6. 做IT项目管理也需要具备产品思维

    不知道大家有没有听过大胡子姜志辉老师的公开课,我自己认为讲的还是不错的. 因为本身大胡子老师就是一个IT行业的人士,自己还经历了程序员.架构师.项目经理.敏捷教练.产品经理.公司持有人等多个角色.所以 ...

  7. python 字典的定义以及方法

    7.字典的转换: dict(x=1,y=2)  ==>  {'y': 2, 'x': 1} dict([(i,element) for i, element in enumerate(['one ...

  8. Circular view path xxx would dispatch back to the current handler URL,Check your ViewResolver setup

    Circular view path xxx would dispatch back to the current handler URL 通过原因分析,造成问题有两个因素:1). 缺省转发, 2). ...

  9. shell 脚本不能执行多条?何解

    #!/bin/sh ps -e | grep svnserve | awk '{print $1}'  | xargs kill -9 svnserve -d -r /projects/svn --c ...

  10. hystrix项目实战

    闲话少说: 总共分6步: (1)添加hystrix依赖以及监控的依赖 <dependency> <groupId>org.springframework.cloud</g ...