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类型

posted @ 2019-09-17 19:28  陈及北  阅读(202)  评论(0编辑  收藏  举报