创建数据表

语法:
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操作数据表的更多相关文章

  1. MYSQL操作数据表中的记录

    36:操作数据表中的记录插入记录   INSERT INTO 表名  VALUES();   或者INSERT 表名  VALUES();  UPDATE更新记录(单表更新)  DELETE删除记录( ...

  2. mysql操作数据表中的记录1

    一.插入记录INSERT ​ mysql> create TABLE users(    -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMEN ...

  3. 不常用的容易忘记常见mysql操作数据表命令

    删除外键关联的约束 alter table tablename drop  foreign key keyname;

  4. MySQL 命令操作数据表

    MySQL 命令操作数据表 1.查看表信息 desc hs_user_credit_info; 2.新增表字段 alter table hs_credit_order add search_relat ...

  5. MySQL学习之路(二)——数据类型和操作数据表

    数据类型和操作数据表 2.1 MySQL类型之整型 2.2 MySQL数据类型之浮点型 2.3 日期时间型 DATE 1支持时间:1000年1月1日~9999年12月31日 DATETIME 3 支持 ...

  6. MySQL入门(4)——操作数据表

    MySQL入门(4)--操作数据表 创建数据库 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据库名 [(create_definition,...)] [tab ...

  7. 操作数据表中的记录——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 ...

  8. 谈谈MySQL数据表的类型(转)

    谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...

  9. Mysql多表关系

    mysql多表关系 多表关系是关系型数据库特有的 三种关系 一对一关系 一对多关系 多对多关系 总结 一对一 例子:用户和用户信息 外键设置在用户上,外键字段唯一非空 添加 无级联:先增加被关联表记录 ...

随机推荐

  1. AFNetworking上传一张或多张图片,并压缩图片节约占用内存

    最近在做APP的时候,遇到了难题:根据公司需求,在用户评论并上传图片的时候,有的手机像素比较高拍的照片高清的,但是每张图片占用的内存太大,或者上传照片的时候,相册的部分照片本身就占很大内存空间,后台数 ...

  2. docker 日常操作(会更新)

    搜索镜像 1,命令行中所有命令搜索 docker search centos 2,在官网中搜索镜像 下载镜像 docker pull centos centos后要加:[版本号],如果没有就默认下载l ...

  3. Java使用FeignClient发送HTTP 请求

    使用FeignClient发送HTTP请求1.添加依赖<!-- spring cloud jar--><dependency> <groupId>org.sprin ...

  4. 【西北师大-2108Java】第六次作业成绩汇总

    [西北师大-2108Java]第六次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第8周学习指导及要求 实验目的与要求 (1)掌握接口定义方法: (2)掌握实现接口类的定义要求: (3)掌握实 ...

  5. javaee和javase的区别

    JavaEE是指Java Enterprise Edition,Java企业版,多用于企业级开发,包括web开发等等.也叫J2EE. JavaSE通常是指Java Standard Edition,J ...

  6. for循环创建的a标签,当点击时如何确定点击的是哪一个标签?

    创建 代码: js: 效果: 原因: html代码:这种获取选中标签的方式,是通过监听body来实现的,所以body上要增加这个onclick(this)

  7. JavaScript中如何判断数组类型

    前言 JavaScript中关于数组的判定问题,一直都是一个必须要掌握的点,那么,运用知识,如何判断一个类型是数组,就需要有对JavaScript使用有着深入的了解. 判断方法 一.Array.isA ...

  8. Redis高可用集群-哨兵模式(Redis-Sentinel)

     前言 Redis哨兵模式,用现在流行的话可以说就是一个“哨兵机器人”,给“哨兵机器人”进行相应的配置之后,这个"机器人"可以7*24小时工作,它能能够自动帮助你做一些事情,如监控 ...

  9. 试着用workerman开发一个在线聊天应用

    聊天功能是很常见的一种功能,Workerman是一款开源高性能异步PHP socket即时通讯框架. 什么是Workerman? Workerman是一款 开源 高性能异步 PHP socket即时通 ...

  10. 【zabbix告警配置】zabbix服务配置邮件告警

    一.安装邮件服务 在zabbix_server服务端安装邮件和邮件发送服务,这里可以参考我另一篇邮件服务部署文章:https://www.cnblogs.com/HeiDi-BoKe/p/118833 ...