MySQL数据类型和表操作

MySQL数据类型和表修改

MySQL数据类型和表操作

整型的定义

//创建有符号整数表
CREATE TABLE t1 (id TINYINT);
//创建无符号整数表
CREATE TABLE t2 (id TINYINT UNSIGNED);

BIT类型的定义

//bit(m) m 在 1-64
//添加数据范围按照给的位数来确定,比如 m = 8 表示一个字节 大小为0~255,显示按照2进制逐一显示
//查询时,仍然可以按照数来查询
CREATE TABLE t3 (num BIT(8));

Tips:当一个只有正负,对错,0-1时可以用BIT来定义以节省空间

浮点数的定义

主要对decimal做一个说明, DECIMAL[M,D]

  • M表示小数位数,代表精度.D是小数点后面的位数,代表大小
  • D=0 时,则是一个整数,M最大为65,D最大为30
  • D省略,默认时0,M省略,默认为10
//创建一个由三种浮点数构成的表
CREATE TABLE t06 (
    num1 FLOAT,
    num2 DOUBLE,
    num3 DECIMAL(30,20));

字符串的定义

  • CHAR(size) 固定长度字符串, size:0~255 ,无论我们存入的数据有多大或多小,占有的空间都是在创建表时规定的。 这里size的范围指的是字符数,不论是中文字符还是其它字符都只占一个字符。
  • VARCHAR(size) 可变长度字符串, size: 0~65535 ,数据占有的空间与它本身有关, 这里size的范围指的是字节,具体可以保存多少个字符与使用的编码方式有关,采用四个字节的utf8mb4编码,最长为(65535-3)/4=16383个字符;采用2个字节的gbk编码,最长为(65535-3)/2=32766个字符。(需要保留三个bit位存储数据大小)
  • 两种数据类型 size 都指的是字符数,在 CHAR中表示占有固定空间,在 VARCHAR中表示最长字符数量可以是。
//创建gbk编码的字符串表,未指定编码方式时,采用创建数据库时指定的编码方式
CREATE TABLE t10 (
    name VARCHAR(32766))
    CHARSET gbk;

Tips:关于CHAR和VARCHA,TEXT的使用

  • 当字符串是定长,例如邮编,手机号,身份证是,使用 CHAR 类型来保存
  • 当字符串是不定长,如名字等等,使用 VARCHAR
  • 查询速度: CHAR > VARCHAR
  • 存放文本时可以用 TEXT,可以将 TEXT 视为 VARCHAR,存放数据范围相同,如果需要保存更长的文本数据在使用 MEDIUMTEXT 和 *LONGTEXT

时间类型定义

//创建一张与时间有关的表
CREATE TABLE t14 (
birthday DATE ,
job_time DATETIME,
login_time TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP --没有指定时间时,采用当前时间
ON UPDATE CURRENT_TIMESTAMP); --更新数据时,用当前时间更新时间戳

字段定义的限制条件

NOT NULL

要求字段的数据不为空,否则报错,空字符串是有效的,当输入null时会报错

DEFAULT

当没有输入数据时,使用默认值。如果使用null值时如果没有 NOT NULL约束不会报错

两者一起使用

当输入null时报错,不指定任何值时用默认值代替。

表的修改

使用 ALTER TABLE 可以对表进行追加,修改和删除

添加表字段

ALTER TABLE

ALTER TABLE emp ADD level INT

修改表字段

ALTER TABLE

ALTER TABLE emp MODIFY name VARCHAR(32)

删除表字段

ALTER TABLE

ALTER TABLE emp DROP sex

重命名字段

ALTER TABLE

ALTER TABLE emp CHANGE user user_name

重命名表

RENAME TABLE

RENAME TABLE emp TO employee

位置属性

添加字段时,不指定位置,默认在最后添加新字段。指定位置有以下几种方式。

在开头添加

使用关键字 FIRST

ALTER TABLE emp ADD level INT FIRST
在中间添加

如果想要在某个字段后添加可以使用关键字 AFTER+指定字段

ALTER TABLE emp ADD level INT AFTER birthday

查看表结构

DESC

DESC yjh_db01

表复制

有时候我们需要对sql语句进行测试,会需要海量数据,为了不破坏原表的结构,我们可以先建一张表,并把原表的内容复制过来,再让新表自我复制。

-- 使用like语句可以方便的创建一个相同的结结构的表
CREATE TABLE emp2 LIKE emp
-- 复制emp表到emp2表
INSERT INTO emp2
    SELECT * FROM emp
-- 自我复制
INSERT INTO emp2
    SELECT * FROM emp2

表去重

表去重的操作和复制表基本相同,只需要把表复制过来时使用DISTINCT关键字

-- 先创建一张临时表 my_tmp , 该表的结构和 my_tab02 一样
create table my_tmp like emp2
-- 把 my_tmp 的记录 通过 distinct 关键字 处理后 把记录复制到 my_tmp
insert into my_tmp
    select distinct * from emp2;
-- 清除掉 my_tab02 记录
delete from emp2
--  把 my_tmp 表的记录复制到 my_tab02
insert into emp2
    select * from my_tmp;
--  drop 掉 临时表 my_tmp
drop table my_tmp;

学习总结来源于韩顺平老师一周学会Linux

Original: https://www.cnblogs.com/yjh1024/p/16451268.html
Author: Nights_Watch
Title: MySQL数据类型和表操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621082/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Typora 开始收费,改用好玩的MarkText

    收费…… 可以考虑使用: MarkText 简述MarkText MarkText 这个工具侧重于”命令”,导航栏都被收起来了。有些…

    数据库 2023年6月6日
    0130
  • English words chapter 20220927

    本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/16736392.html Or…

    数据库 2023年6月11日
    096
  • 数据库基础,看完这篇就够了!

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月11日
    0100
  • FTP文件上传

    一、配置FTP文件服务器 以Ubuntu为例 FTP两种模式简介 PORT(主动模式)第一步FTP客户端首先随机选择一个大于1024的端口p1,并通过此端口发送请求连接到FTP服务…

    数据库 2023年6月6日
    099
  • 掌握这9个单行代码技巧!你也能写出『高端』Python代码 ⛵

    💡 作者:韩信子@ShowMeAI📘 Python3◉技能提升系列:https://www.showmeai.tech/tutorials/56📘 本文地址:https://www…

    数据库 2023年6月14日
    0110
  • 2. 函数

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    0113
  • git 清除账号密码缓存

    配置用户名和邮箱: git config –global user.name “username”git config –globa…

    数据库 2023年6月11日
    093
  • SQL的约束

    概念:约束是作用于表中的字段以限制表中数据存储的规则 [En] concept: constraints are rules that act on fields in a tab…

    数据库 2023年5月24日
    0113
  • mysql安装及主从复制配置

    一、安装 mysql8.0 下载mysql 安装包http://mirrors.sohu.com/mysql/MySQL-8.0/ wget http://mirrors.sohu…

    数据库 2023年5月24日
    070
  • SQL语言基础

    SQL语言基础 SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新…

    数据库 2023年5月24日
    085
  • 我是个怎样的人

    我是一个怎样的人 我是一个怎样的人, 我是一个虚伪的人. 我麻木的观察着这个世界, 对好坏, 真假, 我都去同样看待, 不去区分. 我是一个怎样的人, 我是一个善良的人. 我温柔的…

    数据库 2023年6月9日
    090
  • 2022蓝帽杯初赛wp(取证)

    战果 取证全解 misc出了1个 解其他题就像在坐牢 有那么一点思路,但不是完全有 手机取证_1 解压并打开阅读器,搜索627604C2-C586-48C1-AA16-FF33C3…

    数据库 2023年6月11日
    0106
  • 深入浅出的分析 Set集合

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 关于 Set 接口,在实际开发中,其实很少用到,但是如果你出去面试,它可能依然是一个绕不开的话题。 言归正传,废话咱们…

    数据库 2023年6月14日
    091
  • mydumper备份mysql8.0 sql thread被kill掉

    这个问题是好久以前的问题了,今天看自己的笔记,发现了这个问题,当时没有进行细看,想着现在复现一下。 1、半夜收到测试数据库备份告警: 报警内容就是8002端口,备份失败,因为有慢查…

    数据库 2023年6月16日
    089
  • 解决:MyBatis-plus多数据源方法上方添加事务,数据源切换失败

    说明:MyBatis-plus配置了多数据源,添加事务后,数据源切换失败了… 一、场景描述 项目当中使用的多数据源,Impl中有个方法:MethodA。 @Servic…

    数据库 2023年6月6日
    095
  • DistSQL 深度解析:打造动态化的分布式数据库

    一、背景 自 ShardingSphere 5.0.0 版本发布以来,DistSQL 为 ShardingSphere 生态带来了强大的动态管理能力,通过 DistSQL,用户可以…

    数据库 2023年6月16日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球