mysql 笔记三
MySQL-3
查看表
1. describe 查看表的基本定义
describe | desc table_name
2. show create table 查看表的详细定义
show create table table_name;
3. show tables 查看所有表的表名
修改表的结构
添加字段(ADD)
alter table table_name
add [colmun] column_definition [first | after col_name]
first 可选参数,将新添加的字段设置为表的第一个字段。
after 可选参数,将新添加的字段添加到指定的列col_name 后面。
alter table text4 add sex enum('nan','nv') after id;
修改表名(rename)
alter table table_name rename [to] new_table_name
alter table test2 rename te;
修改字段名(change)
alter table table_name change column_name new_column_name column_definition [FIRST | AFTER col_name]
¥ column_definition: 字段列的定义,包括数据类型和约束条件。
¥ FIRST : 可选参数,将字段设置为表的第一个字段。
¥ AFTER : 可选参数,将字段修改到指定的列 col_name 后面。
- EX:
alter table te change name 名字 varchar(20);
修改字段类型(modify)
alter table table_name modify column_name column_definition [FIRST | AFTER col_name]
- ex
- 通常是编码格式问题
ERROR 1291 (HY000): Column '性别' has duplicated value '?' in ENUM
try1: ALTER TABLE `te` CHANGE `性别` `性别` VARCHAR(36) CHARACTER SET utf8 NOT NULL;
try2: alter table te DEFAULT CHARACTER SET utf8;
还是不成功😂
**EX:**
alter table te modify 性别 enum('男','女') first;
删除字段(drop)
alter table table_name drop column_name
**EX:**
alter table te drop 性别; 😡
修改表的默认储存引擎(engine)和字符集(charset)
alter table table_name [default] engine = {myisam | innodb} charset = [gbk|utf8|...]
EX:
alter table te engine=myisam, charset=gbk;
删除表
drop table [if exists] table_name1,table_name2...;
EX:
drop table te; 👌
复制表
create [temporary] table [if not exists] table_name [like old_table_name] |[as (select_statement)];
-
关于空值(NULL)的说明
空值通常用于表示未知、不可用或将在以后添加的数据,切不可将它与数字0或字符串类型的空字符串混为一谈。 -
关于列的标志(identity)属性
任何表都可以创建一个包含系统所生成序号值得标志列。该序号值唯一标识表中的一列,且可以作为键值。 -
关于列类型的隐含改变
在MySQL中,系统会隐含的改变在create table 语句或 alter table 语句中所☞定的列类型。
长度小于4的varchar类型会被改变为char类型