首先先了解一下sql中的数据结构
1、整数类型:
类型名称 | 说明 | 存储需求 |
---|---|---|
TINYINT | -128〜127 | 0 〜255 |
SMALLINT | -32768〜32767 | 0〜65535 |
MEDIUMINT | -8388608〜8388607 | 0〜16777215 |
INT (INTEGER) | -2147483648〜2147483647 | 0〜4294967295 |
BIGINT | -9223372036854775808〜9223372036854775807 | 0〜18446744073709551615 |
2、小数类型
类型名称 | 说明 | 存储需求 |
---|---|---|
FLOAT | 单精度浮点数 | 4 个字节 |
DOUBLE | 双精度浮点数 | 8 个字节 |
DECIMAL (M, D),DEC | 压缩的“严格”定点数 | M+2 个字节 |
对精度要求比较高的时候 用DECIMAL
3、日期和时间类型
类型名称 | 日期格式 | 日期范围 | 存储需求 |
---|---|---|---|
YEAR | YYYY | 1901 ~ 2155 | 1 个字节 |
TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 个字节 |
DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-3 | 3 个字节 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 个字节 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC | 4 个字节 |
4、字符串类型
类型名称 | 说明 | 存储需求 |
---|---|---|
CHAR(M) | 固定长度非二进制字符串 | M 字节,1<=M<=255 |
VARCHAR(M) | 变长非二进制字符串 | L+1字节,在此,L< = M和 1<=M<=255 |
TINYTEXT | 非常小的非二进制字符串 | L+1字节,在此,L<2^8 |
TEXT | 小的非二进制字符串 | L+2字节,在此,L<2^16 |
MEDIUMTEXT | 中等大小的非二进制字符串 | L+3字节,在此,L<2^24 |
LONGTEXT | 大的非二进制字符串 | L+4字节,在此,L<2^32 |
ENUM | 枚举类型,只能有一个枚举字符串值 | 1或2个字节,取决于枚举值的数目 (最大值为65535) |
SET | 一个设置,字符串对象可以有零个或 多个SET成员 | 1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员) |
5、二进制类型
类型名称 | 说明 | 存储需求 |
---|---|---|
BIT(M) | 位字段类型 | 大约 (M+7)/8 字节 |
BINARY(M) | 固定长度二进制字符串 | M 字节 |
VARBINARY (M) | 可变长度二进制字符串 | M+1 字节 |
TINYBLOB (M) | 非常小的BLOB | L+1 字节,在此,L<2^8 |
BLOB (M) | 小 BLOB | L+2 字节,在此,L<2^16 |
MEDIUMBLOB (M) | 中等大小的BLOB | L+3 字节,在此,L<2^24 |
LONGBLOB (M) | 非常大的BLOB | L+4 字节,在此,L<2^32 |
创建一个数据表
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
首先use进入到一个数据库中
然后使用刚才的语句创建一个数据表
提示ok证明创建成功
这里我想创建的就是一个这样子的表
id | name | score | sex | |
1 | 12312312 | tom | 80 | 男 |
2 | 12312322 | jeryr | 90 | 女 |
当然了数据是要后面再填的,这里只是创建了每列的列头
查看一下刚才的表是否创建成功
使用这个命令查看数据库里所有的数据表
mysql> SHOW TABLES;
然后进入这个表查看一下表的结构
mysql> DESCRIBE talble1;
第三列 NULL 表示该值是否可以为空
第四列 Key 表示该列是否编制索引
第五列 Default 表示该属性是否有默认值
第六列 Extra 表示附加信息
mysql> SHOW CREATE TABLE talble1G;
使用该语句可以查看创建表时所用的语句
修改数据表
{ ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名>
| CHARACTER SET <字符集名>
| COLLATE <校对规则名> }
修改数据表的名字,比如我把刚才创建的表talble1 改名为 tb1
mysql> ALTER TABLE talble1 RENAME TO tb1;
刚才查看数据表的时候,可以从参数中看出来字符集用的是utf8
那么现在将他改为gbk,顺带也修改一下校对规则
mysql> ALTER TABLE tb1 CHARACTER SET gbk DEFAULT COLLATE gbk_bin;
修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
试用一下,把刚才表中的 score 改成 grade
mysql> ALTER TABLE tb1 CHANGE score grade DOUBLE;
可以看出 表中已经没了score 取而代之的是 grade
添加字段
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
现在向表中添加一个 color,数据类型是varchar
mysql> ALTER TABLE tb1 ADD color VARCHAR(10);
这是添加在了末尾
接下来我们在开头添加一个school
mysql> ALTER TABLE tb1 ADD school VARCHAR(10) FIRST;
school添加在了开头
那么再试一下在 name 后面添加一个age
mysql> ALTER TABLE tb1 ADD age INT(10) AFTER name;
删除字段
ALTER TABLE <表名> DROP <字段名>;
试一下把刚才添加的color删掉
删除数据表
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
图中可以看出,新建的数据表t2 被删掉了