一、创建表的完整语法
#[]内的可有可无,即创建表时字段名和类型是必须填写的,宽度与约束条件是可选择填写的。
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
); #解释:
类型:使用限制字段必须以什么样的数据类型传值
约束条件:约束条件是在类型之外添加一种额外的限制 # 注意:
a、在同一张表中,字段名是不能相同
b、宽度和约束条件可选,字段名和类型是必须的
c、最后一个字段后不加逗号 二、基本数据类型之整型
1、作用:id号,各种号码,年龄,等级 2、分类:
tinyint(**): 1个字节,有符号可表示(-128,127),无符号可表示(0,255)
int (*****): int为最常用类型;4个字节
bigint(***): 8个字节 3、默认整型都是有符号的
create table t1(x tinyint);
insert into t1 values(128),(-129); #在非严格模式下,超出范围不报错,存成127和-128 create table t2(x tinyint unsigned);
insert into t2 values(-1),(256); #在非严格模式下,超出范围不报错,存成0和255 create table t3(x int unsigned);
insert into t3 values(4294967296); #在非严格模式下,超出范围不报错,存成4294967295 create table t4(x int(12) unsigned);
insert into t4 values(4294967296123); #对于整型来说宽度不是存储限制,这里的宽度是显示宽度。 4、强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制。所以在创建表示,如果字段采用的是整型类型,完全无需指定显示宽度,默认的显示宽度,足够显示完整当初存放的数据。
对于其他类型,宽度为存储限制。
create table t5(x int(8) unsigned zerofill); # 显示时,不够8位用0填充,如果超出8位则正常显示; zerofill只能用于数字模式(如int)
insert into t5 values(4294967296123); # 在严格模式下,报错
insert into t5 values(1); # 三、补充sql_mode
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) b、修改sql_mode为严格模式:在该模式下,如果插入的数据超过限制,则会立即报错
mysql> set global sql_mode="strict_trans_tables"; #global为全局,session为当前 四、浮点型
1、作用:存储身高、体重、薪资 2、分类:
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) 3、相同点
a、对于三者来说,都能存放30位小数, 4、不同点:
a、精度的排序从低到高:float,double,decimal
b、float与double类型能存放的整数位比decimal更多 create table t9(x float(255,30));
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、作用:姓名,地址,描述类的信息 2、分类:
char: 定长
varchar: 变长
#推荐使用char;不推荐混用,如果混用需定长在前、变长在后。 3、字符的宽度限制单位是字符个数
create table t12(x char(4)); # 超出4个字符则报错,不够4个字符则用空格补全成4个字符
create table t13(y varchar(4)); # 超出4个字符则报错,不够4个字符那么字符有几个就存几个 insert into t12 values('hello'); #报错
insert into t13 values('hello'); #报错 insert into t12 values('a'); #'a '
insert into t13 values('a'); #'a' select char_length(x) from t12; #1 #在mysql中进行了处理,即使硬盘中已存入'a ',在此查看仍是1个字符,需要做以下设置方可还原真实效果
select char_length(y) from t13; #
set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH"; #在屏蔽mysql中的处理,还原真实效果
select char_length(x) from t12; #
select char_length(y) from t13; # 4、针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中。但会在读出结果时自动去掉末尾的空格,因为末尾的空格在以下场景中是无用。
mysql> select * from t14 where name="lxx"; # name字段明确地等于一个值,该值后填充空格是没有用; 即能搜索到
mysql> select * from t14 where name like "lxx"; # name字段模糊匹配一个值,该值后填充空格是有用的: 即搜索不到,需搜索"lxx__", 或"lxx ",或"lxx%" 5、模糊匹配 like (以下非正则)
%: 任意长度的任意字符
_: 任意一个字符 6、对比char与varchar
name char(5)
# 缺点:浪费空间
# 优点:存取速度都快
egon alex lxx wxx yx name varchar(5)
# 缺点:存取速度都慢
# 优点:节省空间(it depends); 需要一个头(1-2个字节)存长度 # 2bytes可存65535个字符,mysql中所有字符串(char)中字符数皆不超过65535
(1bytes+egon)(1bytes+alex)(1bytes+lxx) 6、日期类型
1、作用:时间相关 2、分类:
date:1999-01-27
time: 11:11:11
datetime:1999-01-27 11:11:11
year:1999 3、
create table student(
id int,
name char(16),
born_year year,
birth date,
class_time time,
reg_time datetime
); insert into student values(1,'egon','','2000-01-27','08:30:00','2013-11-11 11:11:11'); 七、枚举与分类
1、作用与分类:
枚举enum,多选一个
集合set,多选多 2、
create table teacher(
id int,
name char(16),
sex enum('male','female','others'),
hobbies set('play','read','music','piao')
);

Python(数据库之数据类型)的更多相关文章

  1. python/数据库操作补充—模板—Session

    python/数据库操作补充—模板—Session 一.创建一个app目录 在models.py只能类进行进行创建表 class Foo: xx= 字段(数据库数据类型) 字段类型 字符串 Email ...

  2. Python 3 mysql 数据类型

    Python 3 mysql 数据类型 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/m ...

  3. Python开发基础之Python常用的数据类型

    一.Python介绍 Python是一种动态解释型的编程语言.Python它简单易学.功能强大.支持面向对象.函数式编程,可以在Windows.Linux等多种操作系统上使用,同时Python可以在J ...

  4. python 基础之数据类型

    一.python中的数据类型之列表 1.列表 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 二.列表常用操作 >切片>追加>插入>修改& ...

  5. Python数据库备份脚本

    Python数据库备份脚本 #!/usr/bin/env python # author: liudong # -*- coding: utf-8 -*- # filename: db_bak.py ...

  6. python数据库(mysql)操作

    一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...

  7. Python学习 之 数据类型(邹琪鲜 milo)

    1.Python中的数据类型:数字.字符串.列表.元组.字典 2.数字类型包括整型.长整型.浮点型.复数型 type(number):获取number的数据类型 整型(int):范围:-2,147,4 ...

  8. 【转】oracle数据库NUMBER数据类型

    原文:http://www.jb51.net/article/37633.htm NUMBER ( precision, scale)a)  precision表示数字中的有效位;如果没有指定prec ...

  9. Oracle数据库之数据类型

    Oracle数据库之数据类型 Oracle基本数据类型(亦叫内置数据类型,internal datatypes或built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.L ...

随机推荐

  1. 爱国者布局智能硬件,空探系列PM2.5检測仪“嗅霾狗”大曝光

        随着6月1日史上最严禁烟令的正式实施,国内包含北京.上海.成都等大中型城市已经在公共场所全面禁烟.众所周知,实施禁烟令的根本在于促进空气的净化,实现环境的改善,要达到这个目的,光有禁烟令是远远 ...

  2. Binary Tree Postorder Traversal --leetcode

    原题链接:https://oj.leetcode.com/problems/binary-tree-postorder-traversal/ 题目大意:后序遍历二叉树 解题思路:后序遍历二叉树的步骤: ...

  3. JS检查浏览器类型和版本号

    先取得Navigator对象的userAgent属性的小写信息,之后依据正則表達式推断赋值. var Sys = {}; var ua = navigator.userAgent.toLowerCas ...

  4. [转]AngularJS ui-router (嵌套路由)

    本文转自:http://www.oschina.net/translate/angularjs-ui-router-nested-routes http://www.codeproject.com/A ...

  5. 谈一谈APP版本号问题

    如题:谈一谈APP版本号问题 为什么要谈这个问题,周五晚上11~12点,被微信点名,说APP有错,无效的版本号,商城无法下单.我正在准备收拾东西,周末回老家,结果看到这样问题,菊花一紧.我擦,我刚加的 ...

  6. 分析kube-proxy的iptables规则

    NodePort service 创建一个mysql的NodePort服务,对应两个pod实例,rc和service的配置如下: 1.rc配置 apiVersion: v1 kind: Replica ...

  7. import _mysql----ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。

    背景:安装了mysql,练习sql 操作,提示 ImportError DLL load failed: %1 不是有效的 Win32 应用程序 解决方法: 操作系统win10,64位,查看安装的my ...

  8. Openstack(Kilo)安装系列之Keystone(四)

    创建租间.用户.角色 一.To configure prerequisites 1.Configure the authentication token: export OS_TOKEN=ADMIN_ ...

  9. windows server 服务器添加免费域名证书的方法(Let's Encrypt)

    在 windows server 服务器上可以通过 win-acme工具添加ssl 1.首先下载工具 https://github.com/PKISharp/win-acme/releases 最新版 ...

  10. poj 3084(最小割)

    题目链接:http://poj.org/problem?id=3084 思路:题目的意思是不让入侵者进入保护的房间,至少需要锁几道门.网络流建模:设一个超级源点,源点与有入侵者的房间相连,边容量为in ...