自学内容网 自学内容网

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查找相关的.


原文地址:https://blog.csdn.net/huajiahhhh/article/details/140445286

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!