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

MySQL(3)表的操作

目录

                1. 表的操作;

                2. 数据类型;


1. 表的操作:

1.1 创建表:

语法: create table 表名(

          属性  类型 [comment '   '], 

          属性  类型 [comment '   '],

          属性   类型

         ) character set 字符集  collate 校验集 engine 存储引擎;

 

前面博客提到: MyISAM和InoDB这两个比较重要.

 1.2 查看表结构:

语法: desc 表名;

 1.4 修改表:

修改包括: 增加, 修改, 删除;

(1)增加语法: alter table 表名 add 增加属性 类型 after 原来属性;

(2)修改语法: alter table 表名 modify 原来属性 新类型;

(3)删除语法: alter table 表名 drop 属性;

(4)修改表名:

语法: alter table 表名  rename [to] 新表名;

修改属性及其类型:

语法: alter table 表名 change 旧属性 新属性 新类型;

1.5 删除表:

语法: drop table 表名;

 2. 数据类型:

2.1数据类型分类:

2.2 数值类型:

2.2.1 tinyint:

tinyint: 是1个字节, 它的取值范围是 [-128,127]; 超出这个范围就会越界访问,报错.

⭐ 整形可以指定是有符号还是无符号的,默认是有符号的. 关键字: unsigned ;

 tinyint 无符号范围是[0,255] ;

🍔 补充: smallint: 2个字节, 那么它的取值范围就是[-2^(n*8-1) , 2^(n*8-1) - 1];

那么就是[-32768, 32767];  那么无符号取值范围就是[0, 2^(n*8)-1] ; 那么就是[0, 65535];

还有int: 是4个字节, bigint: 8个字节;

2.2.2 bit:

语法: bit(n); 1<= n <= 64; 默认不写就是1;

bit是按照ASCII码进行显示的;

如果想要存放0/1, 那么就可以使用bit(1), 节省空间, 但是插入数据就只能是一位二进制.

2.2.3 float:

语法: float(n,m) [unsigned]  n表示指定长度, m是小数点后保留几位. 占用4个字节.

🌰 float(4, 2): 表示就是xx.xx, 并且是有符号的, 保留两位小数. 那么范围就是[-99.99, 99.99];

那么同理float(6, 2) 范围就是[-9999.99, 9999.99].

⭐ 如果插入的数据小数部分还会进行四舍五入, 如果四舍五入之后超过范围会报错, 反之就会成为最大/最小范围值.

再思考一下无符号类型呢?  float(4, 2) 范围就是[0, 99.99];

2.2.4 decimal:

decimal的语法使用和float是一样的, 但是decimal的精度是高于float的;

⭐ float的精度最高是7位, decimal的精度最高是65位.

2.2.5 char:

语法: char(n); 最大长度是255; 占1个字节

⭐ 这里的n并不是2个字节, 是字符的个数.

2.2.6 varchar:

语法: varchar(n); 最大长度是65535;占2字节.

⭐ 这里的n的大小是多少? 其实和编码集相关的;

一般还要使用1-3个字符记录数据的大小, 所以就是65532;

如果编码集是utf8, 那么一个字符占3字节, 65532/3=21844;

如果编码集是gbk, 那么一个字符占2字节, 65532/2=32766;

🍋 char和varchar的对比:

        char和varchar的不同点就是占用字节的计算, char是根据n来进行计算, varchar是根据具体字符进行计算的.

🌰  abcd 和 A 分别被char(4) AND varchar(4):

       char(4): abcd: 4*3 = 12; A: 4*3 = 12;

       varchar(4): abcd: 4*3 + 1=13;  A: 1*3 + 1= 4;

🍔如何选择定长和变长字符串呢?

a. 长度确定就使用定长, 不确定就变长;

b. 定长磁盘空间浪费, 但效率高; 变长相反; 

c. 定长是直接开辟好的空间, 变长是用多少开辟多少.

2.2.7 日期和时间:

(1) date: 日期 'yyyy-mm-dd' 占3个字符;

(2) datatime: 日期格式 'yyyy-mm-dd HH:ii:ss' 占8个字符;

(3) timestamp: 时间戳 , 从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用 四字节;

🍔 update 表名 set 属性=新属性;

2.2.8 enum 和 set:

enum语法: enum('选项1', '选项2', ...);

⭐ 这些值实际存储的是数字, 每个选项值对应一个数字1,2,3,...

set语法: set('选项1', '选项2', ...);

🍔 where和find_in_set: 区别就是where查找完整的, find_in_set查找相关的.

http://www.lryc.cn/news/401444.html

相关文章:

  • SQL GROUPING运算符详解
  • 在VS2017下FFmpeg+SDL编写最简单的视频播放器
  • LogViewer v2.x更新
  • detection_segmentation
  • 0基础学python-13:古希腊掌管时间的模块——datetime和time
  • 棒球特长生升学具有其独特的优势和劣势·棒球6号位
  • 搜维尔科技:Xsens DOT 可穿戴传感器介绍及示例应用演示
  • 数据分析案例-2024 年热门动漫数据集可视化分析
  • C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)
  • STM32智能无人机控制系统教程
  • 从 QWebEnginePage 打印文档
  • 初识Docker及管理Docker
  • 【学术会议征稿】2024年第三届信息学,网络与计算技术国际学术会议(ICINC2024)
  • 在golang中Sprintf和Printf 的区别
  • 策略模式原理与C++实现
  • 打包一个自己的Vivado IP核
  • 《昇思25天学习打卡营第05天|qingyun201003》
  • 【Leetcode】二十一、前缀树 + 词典中最长的单词
  • 秋招Java后端开发冲刺——Mybatis使用总结
  • 怎么压缩视频文件?简单的压缩视频方法分享
  • 【Oracle】Oracle语法之递归查询
  • 【教程】Vue2中使用svg矢量图
  • 简约唯美的404HTML源码
  • PDF 转图片并插入到 EXCEL 再转PDF
  • jmeter之变量随机参数化以及解决多线程不会随机变化
  • 24/7/12总结
  • sentinel网关限流配置及使用
  • # 如何解决 App Store 审核中的 4.3(a) 问题:Guideline 4.3(a) - Design - Spam
  • 最长上升子序列(LIS)
  • 自动驾驶车道线检测系列—3D-LaneNet: End-to-End 3D Multiple Lane Detection