MySQL:表操作&数据类型

创建表

create table 表名(
列名 列属性 comment `对列的描述`,
第二列 不能带逗号
)character set 字符集 collate 检验集 engine 存储引擎

  • 右括号的这些可以省略,采用数据库的默认字符集和检验集
  • 表括号内的结构,像结构体的定义,只不过名字在左类型在右

不同的存储引擎在存储表的时候,生成的数据库文件个数不同

表修改

增加表的列
alter table 表名 add 列名 列属性 comment `解释` after 列名2
向列名2后插入新列

修改表中的列属性字段
alter table 表名 modify 列

删表的某列
alter table 表名 drop

修改表的列名
alter table 表名 change 旧列名 新列名 列属性 comment `解释`

修改表名
alter table 旧表名 rename 新表名

删除表

drop table 表名

数据类型

1整形

tinyint 1字节
smallint 2
int 4
bigint 8

默认是有符号整数

create table t1(
num tinyint unsigned
);

  • 插入越界数据就会被mysql拦截,数据类型本身也是一种约束
  • 加了unsigned就变成无符号类型了

2位类型

bit(M): 位类型,M代表指定的位数
默认是1位,最多64位

3浮点类型

float(m,d):m代表浮点数数字总个数,d代表小数个数
小数位大于d会四舍五入

double和float一样

decinmal(m,d)
float在存一些大数据时,精度会不准确
他精度更高

4字符串类型

char(L):存固定长度的字符串,L是可以存储的长度,单位是字符,最大长度是255个字符

  • utf8中,一个汉字占三个字节,gdk一个汉字占两个字节
  • mysql中的一个字符和C中的不一样

varchar(L):变长字符
串,L表示字符长度,最大是65535个字节,21845个字符(utf8下是这么多,因为一个字符是3个字节大小)

verchar和char的区别:

  • char是固定长度字符串,类似C中定义一个固定大小的数组
    varchar类似string,string的上限是capacity,size是当前有效元素的个数
  • char(6),代表能存6个字符,存6个以内的字符,都是占18个字节
  • varchar(6),上限是6个字符,存一个字符就占3字节
    varchar有1-3个字节记录数据大小

所以varchar定义成21845时,是会报错的

abcd a
char(4)占用字节 4*3=12 4*3=12
varchar(4)占用字节 4*3+1=13 1*3+1=4

varchar用于存储起伏比较大的字符串

5日期和时间类型

日期:年月日
时间:时分秒

date:日期,占3字节
datetime:日期时间,占8字节
timestamp:时间戳,占4字节

对时间戳列进行更改,不用做任何操作,会自动更新成当前时间
插入格式 insert into 表名(date datetime) values (‘2000-01-01’, ‘2000-01-02 08:00:00’);

枚举和集合

enum:有多个类型,多选一
set:有多个选项,多选多

(
gender enum(‘男’, ‘女’)
)

在插入的时候只能是男,女或者1,2
对于set,插入数字,数字代表的是位图

查找表

  • select * from表名
    查找表中插入的所有数据
  • select * from 表名 where gender=‘男’
    查找enum值是男的信息
  • select * from 表名 where find_in_set(‘羽毛球’, hobby)
    查找set中有羽毛球的信息
  • select find_in_set(‘a’, ‘a,b,c,’)
    在第二个参数中查a是否存在
  • desc 表名
    查看表有多少列属性

你可能感兴趣的:(mysql,mysql,数据库)