文章目录
- 创建表🗡
- 查看表🗡
- ✒ 查看表内所有信息(描述\表结构等)
- ✒ 根据条件查看表内数据
- ✒ 查看表的具体详细信息:
- 修改表🗡
- ✒ 修改表名:
- ✒ 修改表的存储引擎、编码集(字符集和校验集):
- ✒ 表内插入数据:`insert into`
- ✒ 在表中新添一个字段(列):`add`
- ✒ 修改字段(列)char/varchar数据类型长度:`modify`
- ✒ 修改字段(列)名:`change`
- ✒ 删除字段(列):`drop`
创建表🗡
create table table_name(
field1 datatype,
field2 datatype,
field3 datatype,
) character set 字符集 collate 校验规则 engine 存储引擎;
field
列名datatype
该列的类型character set
或charset=''
字符集,如果没用指定字符集就以数据库的字符集为准collate
或者collate=''
校验规则,如果没有指定校验规则则以数据库的校验规则为准
示例:
create table user1(
id int comment '序列号',
name varchar(20) comment '用户名',
password char(32) comment '密码'
)charset='utf9' collate='utf8_general_ci' engine MyISAM;
其中的comment
为对该列的描述;
engine
表示存储引擎:
-
不同的存储引擎对于磁盘文件的个数要求不同
对于MyISAM来说:
frm
代表表结构MYD
中的MY
代表MyISAM
,D
代表data
数据;
在配置文件
my.cnf
中已经配置了默认的存储引擎为InnoDB
,所以在此处的创建表若是没有指明存储引擎则是使用配置文件中默认中默认设置的存储引擎;
查看表🗡
✒ 查看表内所有信息(描述\表结构等)
desc table_name
查看表内详细信息,其中desc
为Description
的简写,意思为描述;
✒ 根据条件查看表内数据
-
select ... from ...
例如:
select * from table_name;
- 查看表内所有数据select * from table_name while name='a'
- 以name='a'
为条件查看该表中符合该条件的所有数据,其中where
用于过滤记录;
✒ 查看表的具体详细信息:
show create table table_name;
查看创建该表的具体详细信息,其中包括对该列描述、存储引擎等的字段也会显式;
但是以该形式显式详细信息时弹出信息过于杂乱;
可用show create table table_name \G
;
在这里的显式与创建表时的指令不同是因为当输入sql指令时将会对这些指令进行词法语法分析,最终将这些指令统一成同一指令;
从这里可以得出:mysql
将记录用户的所有操作痕迹;
修改表🗡
修改表主要用的关键字为 ALTER TABLE
;
当然根据所需要修改的内容不同,对应关键字后所跟的语句选择也不同,涉及到的可能有修改表的属性以及表内各个字段的数据修改;
✒ 修改表名:
-
alter table table_name rename to new_name;
此处的
to
可以省略;
✒ 修改表的存储引擎、编码集(字符集和校验集):
-
alter table table_name engine='engine_name' charset='charset_name' collate='collate_name';
举例:
atler table user_1 engine='InnoDB' charset='utf8' collate='utf8_bin';
将名为
user_1
的表结构中的存储引擎修改为InnoDB
;
将该表结构中的字符集修改为utf8
,校验集修改为utf8_bin
;
(修改结束后可使用show create table user_1 \G;
进行查看);
✒ 表内插入数据:insert into
-
表内插入数据的具体关键字为
insert into
,分为添加单个字段信息与所有字段信息;-
insert into table_name (字段名)value(字段信息);
在该插入指令中以
(字段名)
,在括号中指定了字段名,表示添加下一行数据时在该字段内添加数据;例如:
insert into table_name (id)value(1);
- 添加下一行数据,在该行数据中id
字段内数据为1
;同时这里第一个
()
内的字段可以是单个也可以是多个,单个时关键字为value
,多个时关键字为values
,同时若是()
内的字段有多个,则在添加数据的时候按照第一个()
内的字段插入相应的数据;例:
-
insert into _user (id)value(1),(2),(3);
添加三行数据,其中这新添加的三行数据的id
分别为1,2,3; -
insert into _user (id,name)values(1,'zhangsan'),(2,'lisi'),(3,'wangwu');
添加三行数据,其中这新添加的三行的id
与name
分别为(1,'zhangsan'),(2,'lisi'),(3,'wangwu')
; -
若是没有使用
()
指定字段进行添加则默认认为将在所有字段(按照顺序)中添加数据;insert into _user values(字段1数据,字段2数据,字段3数据......);
-
-
✒ 在表中新添一个字段(列):add
alter table table_name add 字段 字段类型;
示例: alter table user add path varchar(20) after password;
-
在表user中的字段
password
后添加一个类型为varchar(20)
的名为path
的字段(列);当然,这里的
after password
若是不添加的话则默认在表中的最后一列进行添加;同时这里也可以进行添加描述:
alter table user add path varchar(20) comment '路径' after password;
✒ 修改字段(列)char/varchar数据类型长度:modify
alter table table_name modify 字段名+新属性 [comment 'xxx'];
示例:alter table user modify name varchar(30) comment'用户名';
该处的 [comment 'xxx']
为可选项,若是原字段内有comment
描述而并不在修改后添加comment
描述时,原描述将会被覆盖;
例:
✒ 修改字段(列)名:change
除了可以修改字段的数据类型以外还可以修改字段(列)的名字;
alter table table_name change old_name new_name 数据类型 [comment 'xxxx'];
示例:alter table user change name Name varchar(30) comment'用户名';
✒ 删除字段(列):drop
表的操作可以删除表内的字段;
alter table table_name drop 字段;
示例alter table user drop password;
由于创建表是创建相应的文件,所以对表内数据的增删查改也是对表内数据的修改;
所以在数据库中对表的操作时尽量避免对表或者对表内数据的删除;