当前位置: 首页 > article >正文

sql 4,创建表类型

1,整数类型(类型,占有空间,范围)

标准sql:
   int / integer   4字节  无符号 0 - 2/32-1  有符号 -2 31 / 2 / 31 -1 
   smallint        2字节  无符号 0 - 2/16-1  有符号 -2 17 / 2 / 17 -1

mysql方言:

   tinyint         1字节  无符号 0 - 2/8 -1  有符号 -2 7 / 2/7-1
   mediumint       3字节  无符号 0 - 2/24 -1  有符号 -2 23 / 2/23-1
   bigint          8字节  无符号 0 - 2/64 -1  有符号 -2 63 / 2/63-1
   
有符号: 列名 整数类型 -> 有符号| 有符号 有负值和正值
        列名 整数类型 unsigned -> 无符号|无符号 没有负值,都是正值,将负值部分,绝对值后,加入正值部分!
        
注意: 选合适范围,范围合适先占有空间最小的!           

练习1

创建一个ddl_d1库中,创建一个t1表,包含: 年龄和学号(范围不确定,但是没有负值)
CREATE TABLE t1(
   t1_age TINYINT UNSIGNED COMMENT '年龄,无符号,范围就是 0 - 255',
   t1_number BIGINT UNSIGNED COMMENT '学号,最大的,且没有负号'
)

2,

建表类型[浮点/定值]
浮点类型(类型,M,D)
   float(m,d)   4字节   m 24   d 8
   double(m,d)  8字节   m 53   d 30
定值类型(类型,M,D)
   decimal(m,d) 动态占有 m 65   d 30

使用对比:
   精度要求不高,例如:身高,体重 float / double 
   精度要求特别高,钱 工资,价格 decimal 

3,

建表类型[字符串]
字符串类型
   char 固定长度类型 一旦声明固定占有对应的空间 M 最大255 [性能较好]
   varchar 可变长度类型 一旦声明,可以插入小于的长度,自动进行伸缩 M 占有的空间不能超过一行的最大显示65535字节 [性能一般]
   text 大文本类型,声明不要指定长度,有固定的大小限制, text [65535] , 不占有一行的最大限制空间
细节理解
   1. char声明的时候可以不写m char = char(1)
   2. char声明了最大长度限制,输入的文本小于长度限制,会在右侧补全空格 char(5) -> 'abc' -> 'abc  '
   3. char类型在读取的时候,会自动去掉右侧的空格 'abc  ' -> 'abc'
   4. varchar声明的时候,必须添加m限制 varchar(m)
   5. mysql4.0以下版本 varchar(20) -> 20字节限制  mb3 -> 6
   6. mysql5.0以上版本 varchar(20) -> 20字符限制
   7. varchar类型中识别空格,插入空格 读取也是有空格
演示varchar最大限制
   前提: mysql中一行数据最大的占有空间是65535字节,除了TEXT or BLOBs类型的列(不占有65535限制 法外狂徒)
         一行-> name1列 -> name1列占有的最大空间65535字节
         varchar类型默认会使用1字节标识是否为null -> 65535-1 = 65534字节
         字符集utf8mb4 1个字符 = 4个字节   65534 / 4 = 16383
解决方案 :
   1. 缩小字符大小限制 m变小 [不合理]
   2. 可以修改字符集 [不合理]
   3. 可以将字符串类型变成TEXT,不占有一行的限制

4,

建表类型[时间类型]
  时间类型 
     year    1 yyyy | yy   '1910' | 1910
     time    3 HH:MM:SS    '10:10:10' 
     date    3 YYYY-MM-DD  '1910-10-10'
     datetime 8 YYYY-MM-DD HH:MM:SS '1910-10-10 10:10:10'
     timestamp 4 YYYY-MM-DD HH:MM:SS '1970-10-10 10:10:10'
  注意情况
     1. year可以写两位年 00 - 99  00-69 =2000 - 2069 70 - 99 = 1970 - 1999 推荐四位的年
     2. 时间类型,要遵循他们的格式插入,插入的时候就是按字符插入,时间默认不会自动赋值
  扩展自动填写时间:
   
  1.插入默认添加时间
        datatime | timestamp default current_timestamp 
     2.修改默认更改时间
        datatime | timestamp default current_timestamp on update current_timestamp 
  演示: 创建t2表,
         注册日期 字段插入自动添加时间,更新数据不变
         更新日期 字段插入自动添加时间,更新数据时间改变
*/
CREATE TABLE t2(
  name1 VARCHAR(20),
  reg_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册日期,插入数据自动维护时间',
  up_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT  '更新日期,插入数据填写时间,更新数据自动改变时间'
)

5,修改表中字段的名字

alter table books change 要修改的字段名 修改后的字段名 字段名的类型




alter table books change book_num book_num1 TINYINT

6,修改表的字段类型

alter table 表名 modify 要修改的字段 要修改为的字段类型



alter table books MODIFY book_num1 int

7,删除表中某个字段

alter table 表名 drop 字段名

alter table books drop books_num1

8,新增字段

alter table books add 新增的字段名  字段类型

alter table books add books_num2 int

9,修改表名

alter table books rename book


http://www.kler.cn/a/284978.html

相关文章:

  • 【前端】深入浅出的React.js详解
  • SpringBoot(七)使用mapper注解编写sql操作数据库
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)
  • Sam Altman:年底将有重磅更新,但不是GPT-5!
  • Spring——容器:IoC
  • 类型转换指令及方法调用与返回指令
  • HTML <template> 标签的基本技巧
  • flutter 开发中常用的 Widget
  • Metasploit漏洞利用系列(十):MSF渗透测试 - 震网三代(远程快捷方式漏洞)实战
  • Elasticsearch中别名的作用
  • .NET WPF 抖动动画
  • python 天气与股票的关系--第一部分,爬取数据
  • 新审视零阶优化在内存高效大模型微调中的应用
  • 你是如何克服编程学习中的挫折感的?——从Bug中找到成长的契机
  • Linux awk案例
  • Dataworks_PySpark开发流程
  • azure-search-openai-demo-csharp does not deploy correctly to azure clooad
  • vue项目打包压缩静态资源—使用compression-webpack-plugin
  • 是否应该使用WordPress自动更新的功能
  • ComfyUI使用Flux模型
  • 黑马JavaWeb开发笔记07——Ajax、Axios请求、前后端分离开发介绍、Yapi详细配置步骤
  • 网络压缩之参数量化(parameter quantization)
  • Spring Boot发送http请求
  • C语言补习课
  • gdb 教程
  • springboot学习(2)