对表的操作命令
一、创建表格
查询当前数据库所有表:
SHOW TABLES;
查询表结构:
DESC 表名;
查询指定表的建表语句:
SHOW CREATE TABLE 表名;
create table 表名(
字段名(就是列名) 数据类型(长度) 约束条件(可省略) comment “注释”,
字段名(就是列名) 数据类型(长度) 约束条件(可省略)
);
注意:
- 创建表时在小括号后面要加上分号
- 字段与字段中间用逗号隔开,最后一个字段不要加逗号(参考java参数格式)
- 如果定义为字符串类型的字段,后面要规定字符串长度
- 如果不指定长度,则使用默认值,如int类型默认长度11
二、数据类型
一、数值类型
类型 | 大小 | 描述 |
---|---|---|
tinyint | 1 bytes | 小整数值 |
smallint | 2 bytes | 大整数值 |
meniumint | 3 bytes | 大整数值 |
int或interger | 4 bytes | 大整数值 |
bigint | 8 bytes | 极大整数值 |
float | 4 bytes | 单精度浮点数 |
double | 8 bytes | 双精度浮点数 |
decimal | 小数值(精确定点数) |
二、字符串类型
类型 | 大小 | 描述 |
---|---|---|
char | 0-255 bytes | 定长字符串 |
varchar | 0-65535 bytes | 变长字符串 |
tinyblob | 0-255 bytes | 不超过255字符的二进制数据 |
tinytext | 0-255 bytes | 短文本字符串 |
blob | 0-65535 bytes | 二进制形式的长文本数据 |
text | 0-65535 bytes | 长文本数据 |
mediumblob | 0-16777215 bytes | 二进制形式的中等长度文本数据 |
mediumtext | 0-16777215 bytes | 中等长度文本数据 |
longblob | 0-4294967295 bytes | 二进制形式的极大文本数据 |
longtext | 0-4294967295 bytes | 极大文本数据 |
日期时间类型
类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
date | 3 | 1000-01-01 至9999-12-31 | YYYY - MM - DD | 日期值 |
time | 3 | -838:59:59 至838:59:59 | HH : MM : SS | 时间值或持续时间 |
year | 1 | 1901至2155 | YYYY | 年份值 |
datetime | 8 | 1000-01-01 00:00:00至9999-12-31 23:59:59 | YYYY - MM - DD HH : MM : SS | 混合日期和时间值 |
timestamp | 4 | 1970-01-01 00:00:01 至2038-01-19 03:14: 07 | YYYY - MM - DD HH : MM :SS | 混合日期和时间值,时间戳 |
注意:
字符串类型:
varchar:长度可变,不留空格,节省空间
char :长度不可变,输入长度不够,则在后面用空格补齐,效率较高,不灵活
例子:定义一个字符串类型的变量,规定长度为10,输入一个5长度的字符串 hello
使用varchar:长度变为5
使用char :长度不变,剩余五位长度用空格补齐
数值型:
TINYINT、smallint (short)、INT、BIGINT(long)、FLOAT、DOUBLE
DOUBLE类型定义:DOUBLE(总长度,小数点位数)
逻辑型:
BIT(0或1)
日期型:
DATE: 年月日
TIME: 时分秒
DATETIME: 包含时间和日期,如果输入空值,则字段为空
TIMESTAMP: 包含时间和日期,如果输入空值,则默认调用当前系统时间
三、删除表格
drop table 表名称;-- 删除指定表格
drop table if exists 表名称;-- 如果指定的表存在,则删除表
truncate table 表名称;-- 删除指定表,并重新创建该表
四、修改表格
alter table 表名 rename to 新表名;-- 修改表名称
rename table 表名 to 新表名;-- 修改表名
alter table 表名 add 新列名 类型长度 [约束];-- 添加列
alter table 表名 add 新列名 类型长度 [约束] after 字段名;-- 在指定字段后添加新列
alter table 表名 add 新列名 类型长度 [约束] first;-- 在首行添加新字段
alter table 表名 drop 字段;-- 删除指定字段
alter table 表名 drop primary key;-- 删除主键
-- 注意:当带有主键的列还有auto_increment属性,则需要间接方式才能删除主键
-- 解决方法:1. 先修改字段的约束 2. 删除主键
alter table 表名 modify 字段 类型长度; alter table 表名 drop primary key;
alter table 表名 modify 字段 类型长度 default 默认值;-- 为字段设置默认值
alter table 表名 modify 字段 类型长度 [约束];-- 修改字段类型或约束
alter table 表名 change 旧字段 新字段 类型长度 [约束];-- 修改字段名
alter table 表名 charcter set 编码格式;-- 修改表编码格式
注意:
注意:当在cmd中插入数据时出现ERROR 1366 (HY000): Incorrect string value: ‘\xB9\xE3\xCE\xF7’ for column ‘address’ at row 1错误,是因为cmd默认编码格式为gbk;而数据库默认编码为utf-8;所以出错
解决方法:
在cmd中告诉MySQL:
-- cmd这边发送给MySQL的是gbk的。
set character_set_client=gbk;
-- cdm这边接受的数据要求是gbk的。
set character_set_results=gbk;
-- 或者在cmd上输入:
set names gbk;
五、对表中数据进行操作
DML:数据操作语言,对数据库中表的数据进行操作
一、在表中插入数据
1、给指定字段添加数据
insert into 表名(字段1,字段2...) values(列名对应的内容,列名对应的内容.....);-- 插入的类型必须与此处表列出的顺序一致
如:
insert into emp(name, age, gender, salary, join_date, dep_id) VALUES ('赵敏',22,'女','2000-01-07',5500,6); -- 报错Data truncated for column 'salary' at row 1,因为列出的顺序是salary, join_date,插入的却是'2000-01-07',5500
正确的写法:
insert into emp(name, age, gender, salary, join_date, dep_id) VALUES