MySql5.6表操作
MySql5.6表操作
- 数据类型
整型
浮点型
字符类型
日期类型
枚举类型与集合类型
- 约束条件
Primary key
Unique key
Not null
Foreign key
创建表的完整语法
Create table 表明(字段名1 类型【(宽度) 约束条件】)
注意事项:
- 在同一张表中,字段的名字不能相同
- 宽度和约束条件可以选,字段名和类型是必须的
- 当输入多个字段的时候最后一个字段末尾不能加逗号
宽度:
- 宽度是对村塾数据的限制
创建一个表测试下:
mysql> create database db1;
mysql> use db1;
mysql> create table userinfo(name char);
mysql> insert into userinfo values('jason');
ERROR 1406 (22001): Data too long for column 'name' at row 1
在没有安全模式的数据库版本,默认能够存放数据,但是只会存进去一个j
- 约束条件 null 与not null
创建一个表测试下
mysql> create table t1(id int,name char not null);
mysql> insert into t1 values(1,'j');
mysql> insert into t1 values(2,null);
ERROR 1048 (23000): Column 'name' cannot be null
提示内容不能为空
#总结 类型与约束条件的区别
# 类型:限制字段必须以什么样的数据类型存储
#约束条件:约束条件是在指定的类型之外添加的一种额外限制
基本数据类型
整型:
分类:TINYINT SMALLINT MEDIUMINT INT BIGINT
作用:存储年龄、等级、id、各种号码等
验证:
验证整型字段有误符号及范围;

Signed——有符号
Unsigned——无符号
mysql> create table t2(x tinyint);
Query OK, 0 rows affected (0.03 sec)
mysql> insert into t2 values(-128);
Query OK, 1 row affected (0.00 sec)
mysql> insert into t2 values(-129);
ERROR 1264 (22003): Out of range value for column 'x' at row 1
mysql> insert into t2 values(256);
ERROR 1264 (22003): Out of range value for column 'x' at row 1
只能插入指定范围内的数值
mysql> create table t3(x tinyint unsigned);
Query OK, 0 rows affected (0.00 sec)
类型后面的宽度是否能够改变字段存储的大小限制
mysql> create table t5(x int(8));
Query OK, 0 rows affected (2.43 sec)
mysql> insert into t5 values(111111111);
mysql> insert into t5 values(12345);
mysql> select * from t5;
+-----------+
| x |
+-----------+
| 111111111 |
| 12345 |
+-----------+
这里可以看到设置范围为8位,插入数据的时候插入9位完整显示,不足8位数值前面用0自动补全。
对于正想来说,数据类型后的快递并不是存储限制,而是显示限制,所以在创建表时,如果字段采用的是整型类型,完全不虚指定显示宽度,默认的显示宽度,足够显示完整当初存放的数据。
严格模式:
上面当数据超过最大存储长度,发现数据也能正常存储进去,只是mysql帮我们截取了最大长度,在实际情况下为了缓解数据库压力,让它仅仅只管理数据即可,这样的情况下就需要设置安全模式。
查看数据库配置中变量名包含mode的配置参数
修改安全模式
Set session #在当前操作界面有效
Set global #全局有效
Set global sql_mode =' STRICT_TRANS_TABLES'
修改完成后退出当前客户端重新登录即可
浮点型:
分类:float double decimal
应用场景:身高、体重、薪资
字段显示特点(5,3)前一位5表示所有位数,后面一位3表示小数个数
三者最大整数和小数位对比:
Float(255,30)
Double(255,30)
Decimal(255,30)
验证:
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);
insert into t10 values(1.111111111111111111111111111111);
insert into t11 values(1.111111111111111111111111111111);

可以看到不同的字段限制类型精准度不同
字符类型:
分类:char(定长) varchar(边长)
作用:姓名、地址、描述类信息
mysql> create table t15(name char(4));
mysql> create table t16(name varchar(4));
超过四个字符就报错
mysql> insert into t15 values('hello');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> insert into t16 values('hello');
ERROR 1406 (22001): Data too long for column 'name' at row 1
在范围内可以正常保存,
mysql> insert into t15 values('he');
mysql> insert into t15 values('he');
通过查看结果看不出效果:
mysql> select * from t15;
+------+
| name |
+------+
| he |
+------+
mysql> select * from t16;
+------+
| name |
+------+
| he |
+------+
通过char_length来查看长度
这里还是看不出效果

修改mysql的mode模式,
mysql> set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';
退出客户端重新登录

针对char类型,mysql在存储时会将数据用空格补全全部放入到硬盘中,但是会在读出结果的时候自动取掉末尾的空格
Char 和varchar的使用区别
Char:
优点:存取速度快
缺点:浪费空间
Varchar:
优点:节省空间
缺点:存取速度慢
时间类型
分类:
data:2019-05-13
time:11:11:11
Datetime:2019-01-02 11:11:11
Year:2019
测试:
mysql> create table student( id int, name char(16), test_year year, test_date date, test_time time, test_datetime datetime );
mysql> insert into student values(1,'egon','2019','2019-05-13','16:42:11','2019-05-13 16:42:11');

枚举与集合
分类:
枚举enum多选一
集合set多选多
测试
在gender字段中使用枚举多选一,只能选择规定中的内容
mysql> create table user( id int, name char(16), gender enum('male','female','other') );

插入数据报错,
mysql> insert into user values(1,'jason','xxx');

提示gender类型值错误

mysql> create table teacher(id int,name char(16),gender enum('male','female','others'),hobby set('read','sleep','sanna','obj'));

mysql> insert into teacher values(1,'egon','male','read,sleep');
结束条件:
PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录
FOREING KEY (FK) 标识该字段为该表的外键
NOT NULL 标识该字段不能为空
UNIQUE KEY (UK) 标识该字段的值是唯一的
AUTO_INCREMENT 标识该字段的值自动增长(证书类型,而且为主键)
DEFAULT 为该字段设置默认值
UNSIGNED 无符号
ZEROFILL 使用0填充
not null+default
不为空设置默认值
mysql> create table user2 id int, name char(16));
mysql> insert into user2values(1,'null');
mysql> alter table user2modify name char(16) not null:

删除表中数据,转换name字段类型设置为非空类型

name字段不以插入空值,报错

mysql> create table student( id int, name char(16) not null, gender enum('male','female','other') default 'male' );

Unique:标识该字段的值是唯一的
单列唯一
mysql> create table user3( id int unique, name char(16) );

插入数据失败,其中id值重复

插入数据成功,id值不能相同,确保唯一

联合唯一:多个值唯一
mysql> create table user4( id int, ip char(16), port int, unique(ip,port) );
其中ip和port为联合唯一值
插入相同的ip和port报错

插入相同ip不同port插入成功

插入不同ip相同port成功

Primary key+auth_increment
# 但从约束角度来说primary key就等价于not null unique
mysql> create table t20(id int primary key);

插入相同数据报错

插入不同数据正常

#除了约束之外,还是innodb引擎组织数据的依据,提升查询效率
强调:
一张表中必须有且只有一个逐渐,如果你没有设置主键,那么会从上到下搜索直到遇到一个非空且唯一的字段自动将其设置为主键
mysql> create table t21(id int,name char(16),age int not null unique,addr char(16) not null unique)engine=innodb;

2、表中没有指定任何的可以设置为主键的字段,那么innodb会采用自己默认的一个隐藏字段作为主键,隐藏意味着在你查询的时候无法根据这个主键字段加速查询
索引:类似于书目录,没有主键就需要一页一页翻着查找(相当于全文查找)
- 一张表中通常都应该有一个id字段,并且通常将id'字段作为主键
#联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键
mysql> create table t22(ip char(16),port int,primary key(ip,port));

# 主键id作为数据的编号,每次最好能自动递增
mysql> create table t23( id int primary key auto_increment, name char(16) );

插入数据,插入name数据,id自动生成
mysql> insert into t23(name) values('egon1'),('egon2'),('egon3');

删除其中一条数据,在插入一条数据删除的那个数据的id号不会再使用

插入新的数据查看效果

清空整个表插入数据还是这个各子,如果想手动插入可以指定id号

清空整张表从零开始使用truncate 表明
作用:将整张表重置,id重新从0开始记录
MySql5.6表操作的更多相关文章
- python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束
一.昨日内容回顾 1.mysql的安装 1).解压文件 添加环境变量bin 2).初始化mysql生成数据data文件夹: mysqld --initialize-insecure 3).mysqld ...
- MySQL之库、表操作
一.库操作 创建库 create database 库名(charset utf8 对库的编码进行设置,不写就用默认值) 库名可以由字母.数字.下划线.特殊字符,要区分大小写,唯一性,不能使用关键字, ...
- 第八章| 1. MySQL数据库|库操作|表操作
1.初识数据库 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个 专门的处理软件,这就是mysql等数据库管理软件的 ...
- MySQL常见的库操作,表操作,数据操作集锦及一些注意事项
一 库操作(文件夹) 1 数据库命名规则 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 2 数据库相关操作 创 ...
- mysql 库操作、存储引擎、表操作
阅读目录 库操作 存储引擎 什么是存储引擎 mysql支持的存储引擎 如何使用存储引擎 表操作 创建表 查看表结构 修改表ALTER TABLE 复制表 删除表 数据类型 表完整性约束 回到顶部 一. ...
- 数据库 MySQL 之 表操作、存储引擎
数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名( 字段名1 ...
- MySQL数据库-表操作-SQL语句(一)
1. 数据库操作与存储引擎 1.1 数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...
- MySQL-库表操作详述
一.库操作 创建库 create database 库名(charset utf8 对库的编码进行设置,不写就用默认值) 库名可以由字母.数字.下划线.特殊字符,要区分大小写,唯一性,不能使用关键字, ...
- Mysql常用表操作 | 单表查询
160905 常用表操作 1. mysql -u root -p 回车 输入密码 2. 显示数据库列表 show databases 3. 进入某数据库 use database data ...
随机推荐
- canvas手势解锁源码
先放图 demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- pyecharts学习笔记2
目录 line bar grid overlap tap 这个画图是真的美观.香嘛? line 普通折线图 bar 柱状图 grid 可以让不同类型的图展示到同一个画面上 overlap 叠加 tap ...
- Maven的作用
Maven的作用 1.在开发中,为了保证编译通过,我们会到处去寻找jar包,当编译通过了,运行的时候,却发现"ClassNotFoundException",我们想到的是,难道还差 ...
- laravel框架用使用session 和cookie
1.介绍 cookie 位于用户的计算机上,用来维护用户计算机中的信息,直到用户删除.比如我们在网页上登录某个软件时输入用户名及密码时如果保存为cookie,则每次我们访问的时候就不需要登录网站了.我 ...
- 【JavaScript Weekly】#471 — JANUARY 17, 2020
https://javascriptweekly.com/issues/471 #471 — JANUARY 17, 2020 READ ON THE WEB JavaScript Weekly Ba ...
- unity中ContentSizeFitter刷新不及时的问题
ContentSizeFitter,自适应宽高脚本要在下一帧的时候才会适应宽高.如果想立即生效,可以调用 LayoutRebuilder.ForceRebuildLayoutImmediate(rec ...
- docker镜像ubuntu封装jdk1.8.0【dockerfile】
github地址:https://github.com/laileman/Docker/Dockerfile/ubuntu-jdk1.8.0_172 1-目录结构 2- dockerfile内容 3- ...
- 如何查看oracle当前连接数,会话数
第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 SQL> show parameter processes NA ...
- 在SQL中怎么把一列字符串拆分为多列
--首先,你是按什么规则拆? 我举个例子 你要按字段中的逗号拆开,假设字段名叫text --用charindex和substring这2个函数 select substring(text,1,c ...
- Gin_渲染
1. 各种数据响应格式 package main import ( "github.com/gin-gonic/gin" "github.com/gin-gonic/gi ...