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)

大家都在看

  • 简单的2021年终总结

    当大家开开心心跨年的时候,我在补年终总结。 小时候恨不得时间过得快一点,现在不这么想了。 我的 2021年,都是平静、反复的一天天,没有出书、没有开源、没有跳槽、没有升官。没错,这…

    数据库 2023年6月6日
    087
  • logstash在windows系统下的安装与使用

    前言:Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到 Elasticsearch。 ES官网:https://www.ela…

    数据库 2023年6月14日
    0112
  • 基于PHP7.2+MySQL5.7的回收租凭系统

    likeshop回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零钱提现。支持在线…

    数据库 2023年6月14日
    097
  • Linux 下安装 node.js

    这里介绍两种安装方式: 编译安装和使用编译后的安装包安装。 安装目录: /usr/local 一、使用编译安装包安装 1、进入安装目录: 2、下载安装包: 3、解压: 4、进入解压…

    数据库 2023年6月14日
    094
  • 2022-8-16 mysql 第二天 约束

    重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构。 构建数据库 创建一张student表: DROP TABLE IF EXIST…

    数据库 2023年5月24日
    076
  • MySQL实战45讲 9

    09 | 普通索引和唯一索引,应该怎么选择? 每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的…

    数据库 2023年6月16日
    0113
  • PDF转换OFD(Java实用版)

    前言: 在项目中用到了,就写一下哈 OFD简介 百度百科:https://baike.baidu.com/item/OFD/56227163?fr=aladdin OFD(Open…

    数据库 2023年6月16日
    0142
  • mysql数据库创建数据库创建用户授权

    Liunx下登录数据库 mysql -u 用户名 -p 创建myblog用户,本地登录,口令是myblog create user ‘myblog’@&#8…

    数据库 2023年6月11日
    0103
  • 系统设计的11个考虑

    有了《系统架构的11条原则》,真正到设计阶段还有另外11个考虑。 系统正确性 考虑一:负负得正 假如我们看到某个代码,明显有逻辑错误,想随手改改。你就要考虑一件事情:这段明显有问题…

    数据库 2023年6月6日
    087
  • ShardingSphere 异构迁移最佳实践:将3.5亿量级的顾客系统 RTO 减少60倍

    Apache ShardingSphere 助力当当 3.5 亿用户量级顾客系统重构,由 PHP+SQL Server 技术栈无缝转型为 Java+ShardingSphere+M…

    数据库 2023年6月16日
    0120
  • CentOS服务器的网络配置与部署

    1.系统安装与软件安装 1.1选择CentOs7.9release版本用作所研发系统部署服务器,官网以及所选择镜像为地址为:http://ftp.sjtu.edu.cn/cento…

    数据库 2023年6月6日
    0101
  • 记一次线上问题 → 对 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面认知

    开心一刻 我妻子痛经了,正躺在沙发上。她两岁的女儿看着她问。 [En] My wife had dysmenorrhea and was lying on the sofa. He…

    数据库 2023年5月24日
    0113
  • 今日🎸吉他练到这儿

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

    数据库 2023年6月11日
    0106
  • Dubbo源码(八)-负载均衡

    前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)…

    数据库 2023年6月11日
    086
  • [spring]spring管理的入门项目快速搭建

    1.spring简介 Spring框架是一个开源的应用程序框架,是针对bean的生命周期进行管理的轻量级容器。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了…

    数据库 2023年6月16日
    0109
  • Python–软件目录结构

    目的不必多说:提高项目可读性、可维护性 软件目录结构示例: 那么问题来了,当类似于如上的目录结构时,我怎么在game.py中去调用setting.py或者main.py中的函数呢?…

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