10.4 创建表的完整语法

  1. create table 表名(
  2. 字段名1 类型[(宽度) 约束条件],
  3. 字段名2 类型[(宽度) 约束条件],
  4. 字段名3 类型[(宽度) 约束条件]
  5. );
  6. #类型:使用限制字段必须以什么样的数据类型传值
  7. #约束条件:约束条件是在类型之外添加一种额外的限制

注意:

1、在同一张表中,字段名不能重复 2、宽度和约束条件可选,字段名和类型是必须的 3、最后一个字段后不加逗号

10.5 基本数据类型

10.51 整型类型

1、作用:id号,各种号码,年龄,等级 2、分类:tinyint   int   bigint

3、默认整型都是有符号的

  1. #tinyint:小整数值(1字节) 范围(有符号):(-128,127) 范围(无符号):(0,255)
  2. create table t1(id tinyint);
  3. insert into t1 values(-10),(128),(-129); # id -10 127 -128

  4. create table t2(id tinyint unsigned); # 无符号的
  5. insert into t2 values(-1),(256); # id 0 255

  6. #int:大整数值(4字节) 范围(有符号):(-2147483648,2147483647) 范围(无符号):(0,4294967295)
  7. create table t3(x int unsigned);
  8. insert into t3 values(4294967296); # x 4294967295

  9. create table t4(x int(12) unsigned); #显示宽度12 #显示宽度,并非存储宽度
  10. insert into t4 values(4294967296123); # x 4294967295

4、强调:对于整型来说,数据类型后的宽度并不是存储限制,而是显示限制,所以在创建表示,如果字段采用的是整型类型,完全无需指定显示宽度,默认的显示宽度,足够显示完整当初存放的数据

显示时,不够8位用0填充,如果超出8位则正常显示

  1. create table t5(x int(8) unsigned zerofill);
  2. insert into t5 values(4294967296123); # x 4294967295
  3. insert into t5 values(1); # x 00000001

10.52 修改sql_mode

  1. # 查看sql_mode
  2. mysql> show variables like "%sql_mode%";
  3. +----------------------------+---------------------+
  4. | Variable_name | Value |
  5. +----------------------------+---------------------+
  6. | sql_mode NO_ENGINE_SUBSTITUTION |
  7. +----------------------------+---------------------+

  8. #修改sql_mode为严格模式:在该模式下,如果插入的数据超过限制,则会立即报错
  9. mysql> set global sql_mode="strict_trans_tables";

10.53 浮点型

作用:存储身高、体重、薪资 分类:float double decimal 相同点: 对于三者来说,都能存放30位小数, 不同点: 1、精度的排序从低到高:float, double, decimal 2、float与double类型能存放的整数位比decimal更多

  1. create table t9(x float(255,30)); #255最大总数位 30最大小数位
  2. create table t10(x double(255,30));
  3. create table t11(x decimal(65,30)); #65最大总数位 30最大小数位

  4. insert into t9 values(1.111111111111111111111111111111);
  5. insert into t10 values(1.111111111111111111111111111111);
  6. insert into t11 values(1.111111111111111111111111111111);

  7. mysql> select * from t9;
  8. +----------------------------------+
  9. | x |
  10. +----------------------------------+
  11. | 1.111111164093017600000000000000 |
  12. +----------------------------------+

  13. mysql> select * from t10;
  14. +----------------------------------+
  15. | x |
  16. +----------------------------------+
  17. | 1.111111111111111200000000000000 |
  18. +----------------------------------+

  19. mysql> select * from t11;
  20. +----------------------------------+
  21. | x |
  22. +----------------------------------+
  23. | 1.111111111111111111111111111111 |
  24. +----------------------------------+

10.54 字符类型

作用:姓名,地址,描述类的信息

分类:char 定长 varchar 变长

强调:字符的宽度限制单位是字符个数

  1. create table t12(x char(4)); # 超出4个字符则报错,不够4个字符则用空格补全成4个字符
  2. create table t13(y varchar(4)); # 超出4个字符则报错,不够4个字符那么字符有几个就存几个

  3. insert into t12 values('hello'); #报错
  4. insert into t13 values('hello'); #报错

  5. insert into t12 values('a'); #'a ' 看不到空格,需要设置sql_mode
  6. insert into t13 values('a'); #'a'

  7. set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";# char_length(x)显示字段x对应的长度
  8. select char_length(x) from t12; #4
  9. select char_length(y) from t13; #1

注意:

针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中,但会在读出结果时自动去掉末尾的空格,但两种情况不同:

  1. mysql> select * from t14 where name="lxx"; # name字段明确地等于一个值,该值后填充空格是没有用
  2. 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

  1. create table student(
  2. id int,
  3. name char(16),
  4. born_year year,
  5. birth date,
  6. class_time time,
  7. reg_time datetime
  8. );
  9. insert into student values(1,'egon','','2000-01-27','08:30:00','2013-11-11 11:11:11');
  10. mysql> select * from student;
  11. +------+------+-----------+------------+------------+---------------------+
  12. | id | name | born_year | birth | class_time | reg_time |
  13. +------+------+-----------+------------+------------+---------------------+
  14. | 1 | egon | 2000 | 2000-01-27 | 08:30:00 | 2013-11-11 11:11:11 |
  15. +------+------+-----------+------------+------------+---------------------+

10.56 枚举与集合类型

作用与分类:枚举enum:多选一个 集合set:多选多(也可多选一)

  1. create table teacher(
  2. id int,
  3. name char(16),
  4. sex enum('male','female','others'),
  5. hobbies set('play','read','music','piao')
  6. );
  7. insert into teacher values(1,'egon','male','play,piao');
  8. select * from teacher;
  9. +------+------+------+-----------+
  10. | id | name | sex | hobbies |
  11. +------+------+------+-----------+
  12. | 1 | egon | male | play,piao |
  13. +------+------+------+-----------+

python 之 数据库(创建表的完整语法、基本数据类型)的更多相关文章

  1. MySql数据库创建表

    3.3.MySql数据库创建表 创建5个表: UserInfo用户基础表 Role 角色表 MenuInfo 菜单即控制表 Relation_Role_Menu 角色对应菜单关系表 RelaTion_ ...

  2. Oracle数据库创建表是有两个约束带有默认索引

    Oracle数据库创建表是有两个约束带有默认索引.1.主键primary Key:唯一索引.非空2.唯一Unique:唯一索引,可以是空值如果没有设定主键和唯一约束,表中不会有默认索引的. 建立主键/ ...

  3. Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间

    Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop ...

  4. T-SQL - query01_创建数据库|创建表|添加数据|简单查询

    时间:2017-09-29  整理:byzqy 本篇以"梁山好汉花名册"为例,记录MS SQLServer T-SQL语句的使用,包含命令: 创建数据库 | 删除数据库 创建表 | ...

  5. oracle数据库创建表

    实际工作中,在数据库中创建表是经常会用到的.我们今天呢?主要给大家来分享一下在数据库如何通过sql语句去创建表.其实,创建表很简单,只需要把数据库的数据类型和约束搞清楚就可以了,其他的就好说了.接下来 ...

  6. PostgreSQL连接python,postgresql在python 连接,创建表,创建表内容,插入操作,选择操作,更新操作,删除操作。

    安装 PostgreSQL可以用Python psycopg2模块集成. sycopg2是Python编程语言的PostgreSQL数据库的适配器. 其程序代码少,速度快,稳定.不需要单独安装这个模块 ...

  7. Oracle SQLserver数据库创建表ID字段的自动递增_序列

    Oracle 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create table t_user( Id ),userid ),loginpasswo ...

  8. Qt 数据库创建表失败原因之数据库关键字

    本人数据库新手,在创建表时出现问题,最后经查证,找出问题所在.下面的程序是部分节选,在创建数据库表的时候,起先使用的L24的CreateDB,经测试,一直输出 Create testResult Fa ...

  9. Linux oracle数据库创建表空间、用户并赋予权限

    管理员用户登录oracle数据库 1.创建临时表空间 select name from v$tempfile;查出当前数据库临时表空间,主要是使用里面的存放路径: 得到其中一条记录/opt/oracl ...

随机推荐

  1. Thingsboard HTTP连接至服务器

    当布署了Thingsboard服务器后,可以通过在服务器地址后,加入swagger-ui.html来打开API文档

  2. Zygote启动及其作用

    目录 1.Zygote简介 2.Zygote进程如何启动 2.1 init.zygote64_32.rc文件 2.2 查看ps信息 2.3 启动 3.Zygote作用 3.1 启动system_ser ...

  3. MySQL参数: innodb_flush_log_at_trx_commit和sync_binlog

    innodb_flush_log_at_trx_commit 当innodb_flush_log_at_trx_commit=0时, log buffer将每秒一次地写入log file, 并且log ...

  4. LF: 换行,U+000A VT: 垂直定位,U+000B FF: 换页符,U+000C CR: 回车符,U+000D CR+LF:CR(U+000D)后跟LF(U+000A) NEL: 下一行,U+0085 LS: 分行,U+2028 PS: 分段,U+2029

    https://zh.wikipedia.org/wiki/換行 换行(英语:newline.line ending.end-of-line (EOL).line Feed (LF).line bre ...

  5. uefi下如何启动linux?

    1. 有两种方式 1.1 直接从uefi shell启动linux内核 1.2 从uefi shell启动grub,然后再从grub启动linux内核 2. 需要哪些东西? 2.1 linux内核 2 ...

  6. ffmpeg编译错误,提示找不到相应的shared libraries :libavdevice.so.53

    解决方法:需要配置响应的环境变量,以便能找到响应的lib库 vi   /etc/ld.so.conf 加入   /usr/local/lib 执行  sudo  ldconfig

  7. PHP如何实现静态的链式调用

    Db::table('**')->where('***','***')->order('***')->find('**'); 想这种应该怎么实现 public function ta ...

  8. 从0开始学爬虫3之xpath的介绍和使用

    从0开始学爬虫3之xpath的介绍和使用 Xpath:一种HTML和XML的查询语言,它能在XML和HTML的树状结构中寻找节点 安装xpath: pip install lxml HTML 超文本标 ...

  9. MFC加载大型osg模型

    MFC加载模型,发现打开 Navid 缓冲等选项后,加载大型模型的速度就快了很多. #include "stdafx.h" #include "OSGObject.h&q ...

  10. 软件定义网络基础---SDN的主流构架

    一:基于不同标准的主流构架 二: ONF定义的SDN基本构架 (一) 四个平面.两大接口 三:四个平面 (一)数据平面 数据平面是由若干网元(Netword Element)构成,每个网元包括一个或多 ...