一、创建表的完整语法
#语法:
create table 库名.表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
约束条件:是在数据类型之外对字段附加的额外的限制

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

二、数据类型
#1、整型:默认是有符号的
create table t3(x tinyint);

ps:修改sql_mode为严格模式,必须重启客户端才能生效
set global sql_mode="strict_trans_tables";
select @@sql_mode;

create table t4(x tinyint unsigned);

# 强调:整型类型后面的宽度限制的根本不是存储宽度,限制的是显示宽度
13的话不够5个,自动在左边帮填充3个空格
create table t5(id int(1));
create table t6(id int(5));

#2、浮点型:
float(255,30)
double(255,30)
decimal(65,30)

create table t8(x float(255,30));
create table t9(x double(255,30));
create table t10(x decimal(65,30));

insert into t8 values(1.111111111111111111111111111111);
insert into t9 values(1.111111111111111111111111111111);
insert into t10 values(1.111111111111111111111111111111);

3、日期类型
year 1999
date 1999-11-11
time 08:30:00
datetime/timestamp 1999-11-11 08:30:00

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(name,born_year,birth,class_time,reg_time) values
('egon1',now(),now(),now(),now());

insert into student(name,born_year,birth,class_time,reg_time) values
('egon1',2000,20001111,now(),now());

insert into student(name,born_year,birth,class_time,reg_time) values
('egon1',2000,'2000-11-11',083000,now());

insert into student(name,born_year,birth,class_time,reg_time) values
('egon1',2000,'2000-11-11',"08:30:00",20171111111111);

insert into student(name,born_year,birth,class_time,reg_time) values
('egon1',2000,'2000-11-11',"08:30:00","2017-11-11 11:11:11");

create table t11(x timestamp);
create table t12(x datetime not null default now());

4、字符类型
# 注意:宽度指限制的是字符个数
char:定长
char(5)

varchar:变长
varchar(5)

相同点:宽度指的都是最大存储的字符个数,超过了都无法正常存储
不同点:
char(5):
'm'--->'m '5个字符

varchar(5)
'm'--->'m'1个字符

set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";

注意:mysql在查询时针对where 字段="值 "会忽略掉右面的空格,即where 字段="值"
如果时like模糊匹配就不会忽略右面的空格了

char(5)
egon |axx |lxx |fm |

varchar(5)
1bytes+egon|1bytes+axx|1bytes+lxx|1bytes+fm|

%任意无穷个 _任意一个字符,不会忽略空格

# 宽度相关练习
mysql> create table t13(x char(5));
Query OK, 0 rows affected (0.20 sec)

mysql> create table t14(x varchar(5));
Query OK, 0 rows affected (0.27 sec)

mysql>
mysql>
mysql> insert into t13 values('xxxxxx');
ERROR 1406 (22001): Data too long for column 'x' at row 1
mysql> insert into t14 values('xxxxxx');
ERROR 1406 (22001): Data too long for column 'x' at row 1

5、枚举与集合类型
枚举enum('a','b','c'):多选一
集合set('a','b','c'):多选多

create table emp(
name varchar(15),
sex enum('male','female','unkown'),
hobbies set('read','music','yinshi','play')
);

insert into emp values
('zhangming','xxx','xxxx');

mysql> insert into emp values('zhangming','female','read,play');
Query OK, 1 row affected (0.03 sec)

mysql> select * from emp;
+-----------+--------+-----------+
| name | sex | hobbies |
+-----------+--------+-----------+
| zhangming | female | read,play |
+-----------+--------+-----------+
1 row in set (0.00 sec)
三、约束条件

最新文章

  1. Javascript提交表单
  2. emgucv文字识别
  3. Visual Studio 2010安装教程
  4. 实现IEnumberable接口和IEnumberator
  5. smarty变量
  6. MySQL与Oracle 差异比较之七用户权限
  7. UIToolbar自定义背景及按钮设置
  8. 关于搭建haddoop分布式系统的全部过程复习
  9. java07 map
  10. 关于控制文件和redo log损坏的恢复
  11. loading.io一个loading图标网站,跟大家分享
  12. mysql常用的函数
  13. 20162302 实验三《敏捷开发与XP实践》实验报告
  14. windows设置照片查看器为默认的照片查看软件
  15. Redis数据结构之sds基本操作函数
  16. react_app 项目开发 (8)_角色管理_用户管理----权限管理 ---- shouldComponentUpdate
  17. 跨域学习笔记3--web.config设置之system.webServer 详细介绍,为网站设置默认文档
  18. JSF生存指南P1
  19. 迭代器模式和组合模式(head first设计模式——8)
  20. 【VirtualBox】设置NAT端口映射-SSH登录

热门文章

  1. 完美解决百度地图MarkerClusterer 移动地图时,Marker 的Label 丢失的问题
  2. [知乎作答]·关于在Keras中多标签分类器训练准确率问题
  3. 寻找jar包的好方法
  4. SpringMVC10 InitBinder 注册自定义编辑器
  5. java数据结构和算法07(2-3-4树)
  6. java关于类的构建
  7. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第十天(非原创)
  8. CSS实现下拉菜单的几种方法
  9. 做一个vue模态弹出框如何
  10. C/C++ sort函数的用法