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

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值