python 之 数据库(创建表的完整语法、基本数据类型)
10.4 创建表的完整语法
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
#类型:使用限制字段必须以什么样的数据类型传值
#约束条件:约束条件是在类型之外添加一种额外的限制
注意:
1、在同一张表中,字段名不能重复 2、宽度和约束条件可选,字段名和类型是必须的 3、最后一个字段后不加逗号
10.5 基本数据类型
10.51 整型类型
1、作用:id号,各种号码,年龄,等级 2、分类:tinyint int bigint
3、默认整型都是有符号的
#tinyint:小整数值(1字节) 范围(有符号):(-128,127) 范围(无符号):(0,255)
create table t1(id tinyint);
insert into t1 values(-10),(128),(-129); # id -10 127 -128
create table t2(id tinyint unsigned); # 无符号的
insert into t2 values(-1),(256); # id 0 255
#int:大整数值(4字节) 范围(有符号):(-2147483648,2147483647) 范围(无符号):(0,4294967295)
create table t3(x int unsigned);
insert into t3 values(4294967296); # x 4294967295
create table t4(x int(12) unsigned); #显示宽度12 #显示宽度,并非存储宽度
insert into t4 values(4294967296123); # x 4294967295
4、强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制,所以在创建表示,如果字段采用的是整型类型,完全无需指定显示宽度,默认的显示宽度,足够显示完整当初存放的数据
显示时,不够8位用0填充,如果超出8位则正常显示
create table t5(x int(8) unsigned zerofill);
insert into t5 values(4294967296123); # x 4294967295
insert into t5 values(1); # x 00000001
10.52 修改sql_mode
# 查看sql_mode
mysql> show variables like "%sql_mode%";
+----------------------------+---------------------+
| Variable_name | Value |
+----------------------------+---------------------+
| sql_mode NO_ENGINE_SUBSTITUTION |
+----------------------------+---------------------+
#修改sql_mode为严格模式:在该模式下,如果插入的数据超过限制,则会立即报错
mysql> set global sql_mode="strict_trans_tables";
10.53 浮点型
作用:存储身高、体重、薪资 分类:float double decimal 相同点: 对于三者来说,都能存放30位小数, 不同点: 1、精度的排序从低到高:float, double, decimal 2、float与double类型能存放的整数位比decimal更多
create table t9(x float(255,30)); #255最大总数位 30最大小数位
create table t10(x double(255,30));
create table t11(x decimal(65,30)); #65最大总数位 30最大小数位
insert into t9 values(1.111111111111111111111111111111);
insert into t10 values(1.111111111111111111111111111111);
insert into t11 values(1.111111111111111111111111111111);
mysql> select * from t9;
+----------------------------------+
| x |
+----------------------------------+
| 1.111111164093017600000000000000 |
+----------------------------------+
mysql> select * from t10;
+----------------------------------+
| x |
+----------------------------------+
| 1.111111111111111200000000000000 |
+----------------------------------+
mysql> select * from t11;
+----------------------------------+
| x |
+----------------------------------+
| 1.111111111111111111111111111111 |
+----------------------------------+
10.54 字符类型
作用:姓名,地址,描述类的信息
分类:char 定长 varchar 变长
强调:字符的宽度限制单位是字符个数
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 ' 看不到空格,需要设置sql_mode
insert into t13 values('a'); #'a'
set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";# char_length(x)显示字段x对应的长度
select char_length(x) from t12; #4
select char_length(y) from t13; #1
注意:
针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中,但会在读出结果时自动去掉末尾的空格,但两种情况不同:
mysql> select * from t14 where name="lxx"; # name字段明确地等于一个值,该值后填充空格是没有用
mysql> select * from t14 where name like "lxx__"; # name字段模糊匹配一个值,该值后填充空格是有用的
对比char与varchar:
name char(5) 缺点:浪费空间 优点:存取速度都快 egon_ alex_ lxx__ wxx__ yx___
ame varchar(5) 缺点: 存取速度都慢 优点: 节省空间 (1bytes+egon)(1bytes+alex)(1bytes+lxx)(1bytes+wxx)(1bytes+yx)
10.55 日期类型
作用:时间相关
分类: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
);
insert into student values(1,'egon','','2000-01-27','08:30:00','2013-11-11 11:11:11');
mysql> select * from student;
+------+------+-----------+------------+------------+---------------------+
| id | name | born_year | birth | class_time | reg_time |
+------+------+-----------+------------+------------+---------------------+
| 1 | egon | 2000 | 2000-01-27 | 08:30:00 | 2013-11-11 11:11:11 |
+------+------+-----------+------------+------------+---------------------+
10.56 枚举与集合类型
作用与分类:枚举enum:多选一个 集合set:多选多(也可多选一)
create table teacher(
id int,
name char(16),
sex enum('male','female','others'),
hobbies set('play','read','music','piao')
);
insert into teacher values(1,'egon','male','play,piao');
select * from teacher;
+------+------+------+-----------+
| id | name | sex | hobbies |
+------+------+------+-----------+
| 1 | egon | male | play,piao |
+------+------+------+-----------+
python 之 数据库(创建表的完整语法、基本数据类型)的更多相关文章
- MySql数据库创建表
3.3.MySql数据库创建表 创建5个表: UserInfo用户基础表 Role 角色表 MenuInfo 菜单即控制表 Relation_Role_Menu 角色对应菜单关系表 RelaTion_ ...
- Oracle数据库创建表是有两个约束带有默认索引
Oracle数据库创建表是有两个约束带有默认索引.1.主键primary Key:唯一索引.非空2.唯一Unique:唯一索引,可以是空值如果没有设定主键和唯一约束,表中不会有默认索引的. 建立主键/ ...
- Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间
Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一: 删除user drop ...
- T-SQL - query01_创建数据库|创建表|添加数据|简单查询
时间:2017-09-29 整理:byzqy 本篇以"梁山好汉花名册"为例,记录MS SQLServer T-SQL语句的使用,包含命令: 创建数据库 | 删除数据库 创建表 | ...
- oracle数据库创建表
实际工作中,在数据库中创建表是经常会用到的.我们今天呢?主要给大家来分享一下在数据库如何通过sql语句去创建表.其实,创建表很简单,只需要把数据库的数据类型和约束搞清楚就可以了,其他的就好说了.接下来 ...
- PostgreSQL连接python,postgresql在python 连接,创建表,创建表内容,插入操作,选择操作,更新操作,删除操作。
安装 PostgreSQL可以用Python psycopg2模块集成. sycopg2是Python编程语言的PostgreSQL数据库的适配器. 其程序代码少,速度快,稳定.不需要单独安装这个模块 ...
- Oracle SQLserver数据库创建表ID字段的自动递增_序列
Oracle 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create table t_user( Id ),userid ),loginpasswo ...
- Qt 数据库创建表失败原因之数据库关键字
本人数据库新手,在创建表时出现问题,最后经查证,找出问题所在.下面的程序是部分节选,在创建数据库表的时候,起先使用的L24的CreateDB,经测试,一直输出 Create testResult Fa ...
- Linux oracle数据库创建表空间、用户并赋予权限
管理员用户登录oracle数据库 1.创建临时表空间 select name from v$tempfile;查出当前数据库临时表空间,主要是使用里面的存放路径: 得到其中一条记录/opt/oracl ...
随机推荐
- elasticsearch x-pack license过期
1.注册一个新的license,每一项都要填写,每次可以使用一年,一年到期后再来注册一个新的 2.更新license (官方文档:https://www.elastic.co/guide/en/x-p ...
- oracle取前10条记录
--oracle取前十条数据 --(1)第一种 ; --(2)第二种 ;
- 部署gerrit环境完整记录【转】
开发同事提议在线上部署一套gerrit代码审核环境,废话不多说,部署gerrit的操作记录如下:提前安装好java环境,mysql环境,nginx环境测试系统:centos6.5下载下面三个包,放到/ ...
- PHP课程环境安装总结文档
phpStudy的安装 1.找一个硬盘根目录,比如这里我使用E盘,在E盘根目录创建一个php的文件夹,进入php文件夹,如下图所示 2.在步骤1的php文件夹下再建立一个文件夹php_dev,如下图所 ...
- Nfs固定端口 nfs 端口公网映射
- ActiveMQ参数异常 “Invalid broker URI”
某次启动项目报错,提示ActiveMQ参数异常 该参数的值配置如下 跟踪读取配置的代码如下,可以看到读取我配置的key为xmq.actmq.connection.url.forSend的对应值,赋值到 ...
- QQ 有很多关于会员的标记,腾讯舍不得为每一个标记用 1 个字节 Byte,而用的是 1 比特 Bit。
17年的实践:腾讯海量产品的技术方法论-其它分享/专项技术区 - 即时通讯开发者社区! http://www.52im.net/thread-159-1-1.html 腾讯QQ1.4亿在线用户的技术挑 ...
- vue-router 利用url传递参数
vue-router 利用url传递参数 :冒号的形式传递参数 在路由配置文件里以:冒号的形式传递参数,这就是对参数的绑定. 1. 在配置文件里以冒号的形式设置参数.我们在/src/router/i ...
- Linux 服务器远程管理
一.Linux 常用远程管理工具 点击下载 二.查看服务器 ip 地址命令 1.通过 ip addr 查看网卡 ip 地址 ip addr 2.通过 ifconfig 查看网卡 ip 地址 最小化安装 ...
- 宣化上人:大佛顶首楞严经四种清净明诲浅释(2-3) -------------------------------------------------------------------------------- (转自学佛网:http://www.xuefo.net/nr/article23/230612.html)
大佛顶首楞严经四种清净明诲浅释(2-3) 唐天竺·沙门般剌密帝译 宣化上人主讲 一九八三年四月十七日晚讲于万佛圣城 欲摄其心入三摩地:这种邪师说法,在末法的时候像恒河沙这么多:可是我想在这时候,令一切 ...