mysql操作数据表
创建数据表
语法:
create table 表名(
字段名 列类型 [可选参数],
字段名 列类型 [可选参数]
....
) charset=utf8;
如:
create table t4(
id int,
name char(15)
)charset=utf8;
列约束
- auto_increment 自增长1
- primary key 主键索引,加快查询速度,列的值不能重复
- not null 标识该字段不能为空
- default 该字段设置默认值
create table t5(
id int primary key auto_increment,
name char(15) not null default '',
)charset=utf8;
查看数据表结构
desc t5;
show create table t5;
列类型(字段类型)
整型
| 类型 | 大小 | 范围(无符号) |
|---|---|---|
| Tinyint | 1个字节 | (0-255) |
| Smallint | 2个字节 | (0-65535) |
| Mediumint | 3个字节 | |
| int(一般直接用int) | 4个字节 | |
| bigint | 8个字节 |
注:unsigned 加上代表不能取负数,只适用于整型。 基本语法:在类型之后加上一个 unsigned
应用场景:根据公司业务的场景,来选取合适的类型
浮点型
- float
Float又称之为单精度类型:系统提供4个字节用来存储数据,但是能表示的数据范围比整型大的多,大概是10^38;只能保证大概7个左右的精度(如果数据在7位数以内,那么基本是准确的,但是如果超过7位数,那么就是不准确的)
基本语法
Float:表示不指定小数位的浮点数
Float(M,D):表示一共存储M个有效数字,其中小数部分占D位
Float(10,2):整数部分为8位,小数部分为2位
- decimal
Decimal定点数:系统自动根据存储的数据来分配存储空间,每大概9个数就会分配四个字节来进行存储,同时小数和整数部分是分开的。
Decimal(M,D):M表示总长度,最大值不能超过65,D代表小数部分长度,最长不能超过30。
比较
mysql> create table t6(
-> id int unsigned auto_increment primary key,
-> salary decimal(16,10),
-> num float
-> )charset=utf8;
insert into t6 values(0,500023.2312345678, 5000.2374837284783274832);
mysql> select * from t6;
+----+-------------------+---------+
| id | salary | num |
+----+-------------------+---------+
| 1 | 500023.2312345678 | 5000.24 |
+----+-------------------+---------+
decimal比较精确,适合描述钱
字符串
- char(长度): 定长字符:指定长度之后,系统一定会分配指定的空间用于存储数据,char(L),L长度为0到255
- varchar(长度):变长字符,指定长度之后,系统会根据实际存储的数据来计算长度,分配合适的长度(数据没有超出长度),长度理论值位0到65535
区别:
Char和varchar数据存储对比(utf8,一个字符都会占用3个字节)
| 存储数据 | Char(2) | Varchar(2) | Char所占字节 | Varchar所占字节 |
|---|---|---|---|---|
| A | A | A | 2 * 3 = 6 | 1 * 3 + 1 = 4 |
| AB | AB | AB | 2 * 3 = 6 | 2 * 3 + 1 = 7 |
char 无论插入的字符是多少个,永远固定占规定的长度
varchar:根据插入的字符的长度来计算所占的字节数,但是有一个字节是用来保存字符串大小的
char的数据查询效率比varchar高
时间日期类型
Date
日期类型:系统使用三个字节来存储数据,对应的格式为:YYYY-mm-dd,能表示的范围是从1000-01-01 到9999-12-12,初始值为0000-00-00
Time
时间类型:能够表示某个指定的时间,但是系统同样是提供3个字节来存储,对应的格式为:HH:ii:ss,但是mysql中的time类型能够表示时间范围要大的多,能表示从-838:59:59~838:59:59,在mysql中具体的用处是用来描述时间段。
Datetime
日期时间类型:就是将前面的date和time合并起来,表示的时间,使用8个字节存储数据,格式为YYYY-mm-dd HH:ii:ss,能表示的区间1000-01-01 00:00:00 到9999-12-12 23:59:59,其可以为0值:0000-00-00 00:00:00
Timestamp
时间戳类型:mysql中的时间戳只是表示从格林威治时间开始,但是其格式依然是:YYYY-mm-dd HH:ii:ss
Year
年类型:占用一个字节来保存,能表示19002155年,但是year有两种数据插入方式:099和四位数的具体年
mysql> create table t7(
-> d date,
-> t time,
-> dt datetime
-> );
mysql> insert into t7 values(now(),now(),now());
mysql> select * from t7;
+------------+----------+---------------------+
| d | t | dt |
+------------+----------+---------------------+
| 2019-10-29 | 15:37:02 | 2019-10-29 15:37:02 |
+------------+----------+---------------------+
1 row in set (0.00 sec)
枚举enum
就是列举出所有的选项
mysql> create table t8(
-> id int unsigned auto_increment primary key,
-> name char(15) not null,
-> age int, ,
-> gender enum('男','女')
-> )charset=utf8;
insert into t8 values(0,'老张',36,1);
mysql> select * from t8;
+----+------+------+--------+
| id | name | age | gender |
+----+------+------+--------+
| 1 | 老张 | 36 | 男 |
+----+------+------+--------+
修改表名
alter table t8 rename info;
rename table t7 to t777;
增加字段
语法: alter table 表名 add 字段名 列类型 [可选参数]
alter table t6 add name char(25) not null default '';
默认是添加在最后一列的
--添加在第一列
alter table t6 add name char(25) not null default '' first;
--添加在指定列
alter table t6 add name char(25) not null default '' after id;
删除字段
语法:alter table 表名 drop 字段名
alter table t9 drop name;
修改字段
修改列类型
语法:alter table 表名 modify 字段名 列类型 [约束条件]
alter table t9 modify name1 char(20);
修改字段名:
语法:alter table 表名 change 旧字段名 新字段名 新的列类型 [约束条件]
alter table t6 change sex gender enum('male', 'female')
删除表
drop table 表名;
复制表结构
create table t99 like t7;
mysql操作数据表的更多相关文章
- MYSQL操作数据表中的记录
36:操作数据表中的记录插入记录 INSERT INTO 表名 VALUES(); 或者INSERT 表名 VALUES(); UPDATE更新记录(单表更新) DELETE删除记录( ...
- mysql操作数据表中的记录1
一.插入记录INSERT mysql> create TABLE users( -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMEN ...
- 不常用的容易忘记常见mysql操作数据表命令
删除外键关联的约束 alter table tablename drop foreign key keyname;
- MySQL 命令操作数据表
MySQL 命令操作数据表 1.查看表信息 desc hs_user_credit_info; 2.新增表字段 alter table hs_credit_order add search_relat ...
- MySQL学习之路(二)——数据类型和操作数据表
数据类型和操作数据表 2.1 MySQL类型之整型 2.2 MySQL数据类型之浮点型 2.3 日期时间型 DATE 1支持时间:1000年1月1日~9999年12月31日 DATETIME 3 支持 ...
- MySQL入门(4)——操作数据表
MySQL入门(4)--操作数据表 创建数据库 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据库名 [(create_definition,...)] [tab ...
- 操作数据表中的记录——SELECT (where表达式、GROUP BY、HAVING、LIMIT)
原文链接:http://www.ifyao.com/2015/01/26/%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E8%A1%A8%E4%B8%AD%E7%9A%84 ...
- 谈谈MySQL数据表的类型(转)
谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...
- Mysql多表关系
mysql多表关系 多表关系是关系型数据库特有的 三种关系 一对一关系 一对多关系 多对多关系 总结 一对一 例子:用户和用户信息 外键设置在用户上,外键字段唯一非空 添加 无级联:先增加被关联表记录 ...
随机推荐
- VMware虚拟机安装centos7
镜像下载地址:http://www.linuxdown.net/ 在vmware上开始安装CentOS系统,点击菜单新建虚拟机,进入如下图步骤进行操作. 接着进行自定义硬盘操作 最后虚拟机就创 ...
- [javascript string] slice();substr();substring();之间的区别
今天遇到这个问题,发现ぜんぜんわすねまます3个方法,直接上代码吧,[网络版本较多就不注明参考过哪些了 -0- ] var test = 'hello world'; //均一位参数测试 console ...
- OSI参考模型总结
OSI(Open System Interconnect),即开放式系统互联. 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型.下面我们将一层一层的看OSI协议. ...
- Linux-3.14.12内存管理笔记【构建内存管理框架(1)】
传统的计算机结构中,整个物理内存都是一条线上的,CPU访问整个内存空间所需要的时间都是相同的.这种内存结构被称之为UMA(Uniform Memory Architecture,一致存储结构).但是随 ...
- 面向对象OPP
在此之前学习的编程方式均称为面向过程,过程类似于函数,只能执行,没有返回值 面向过程和面向对象 面向过程-->怎么做? 面向对象-->谁来做? 相比函数,面向对象 是更大的封装,根据职 ...
- python之海龟绘图
1. 基本功能介绍 在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动.这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条.通过编写代码,以各种很酷的模式 ...
- onload()方法只能在body标签中调用吗?怎么调用多个多个方法?
第一个问题: onload()方法并非只能在body标签中调用的,还可以在js中用window.onload = function() {函数名};来调用:另外img等标签也支持onload方法. 支 ...
- vscode源码分析【四】程序启动的逻辑,最初创建的服务
第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 第三篇:vscode源码分析[三]程序的启动逻辑,性能问题的追踪 ...
- golang数据结构之单链表
实现单链表的增删查改. 目录如下: singleLink.go package link import ( "fmt" ) //HeroNode 链表节点 type HeroNod ...
- Python 爬虫介绍,什么是爬虫,如何学习爬虫?
作为程序员,相信大家对“爬虫”这个词并不陌生,身边常常会有人提这个词,在不了解它的人眼中,会觉得这个技术很高端很神秘.不用着急,我们的爬虫系列就是带你去揭开它的神秘面纱,探寻它真实的面目. 爬虫是 ...