MySQL表操作(上篇)

1.存储引擎的介绍

(1)存储引擎

1.什么是存储引擎?

mysql中建立的库===>文件夹

库中建立的表===>文件

现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用excel,处理图片用png等

数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。

2.MySQL支持的存储引擎

#1.InnoDB 存储引擎 #2.MyISAM 存储引擎 #3.NDB 存储引擎

#4.Memory 存储引擎(在重启mysql或者重启机器后,表内数据清空)

#5.Infobright 存储引擎 #6.NTSE 存储引擎

#7.BLACKHOLE黑洞存储引擎(往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录)

3.使用存储引擎

方法1:建表时指定   

  MariaDB [db1]> create table innodb_t1(id int,name char)engine=innodb;
  MariaDB [db1]> create table innodb_t2(id int)engine=innodb;
  MariaDB [db1]> show create table innodb_t1;
  MariaDB [db1]> show create table innodb_t2;

 

方法2:在配置文件中指定默认的存储引擎

  /etc/my.cnf
  [mysqld]
  default-storage-engine=INNODB
  innodb_file_per_table=1

2.表的增删改差

1.表介绍

表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段

+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | egon |   18 | male   |
|    2 | alex |   81 | female |
|    3 | NULL | NULL | NULL   |
|    4 | NULL | NULL | NULL   |
+------+------+------+--------+ 

id,name,age,sex称为字段,其余的,一行内容称为一条记录

2.创建表  

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]);

#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的

示例:

MariaDB [db1]> create table t1(  
    -> id int, 
    -> name varchar(50),
    -> sex enum('male','female'),
    -> age int(3)
    -> ); 
MariaDB [db1]> insert into t1 values
    -> (1,'egon',18,'male'),
    -> (2,'alex',81,'female')
    -> ;
MariaDB [db1]> select * from t1;
+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | egon |   18 | male   |
|    2 | alex |   81 | female |
+------+------+------+--------+

3.查看表结构

MariaDB [db1]> describe t1; #查看表结构,可简写为desc 表名
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+
MariaDB [db1]> show create table t1\G; #查看表详细结构,可加\G

4.修改表结构

语法

(1).修改存储引擎

mysql> alter table service -> engine=innodb;

(2). 增加字段
ALTER TABLE 表名
   ADD 字段名 数据类型 [完整性约束条件…];

mysql> alter table student10
    -> add name varchar(20) not null,

ALTER TABLE 表名
   ADD 字段名 数据类型 [完整性约束条件…] FIRST;

mysql> alter table student10
    -> add stu_num varchar(10) not null after name;                //添加name字段之后

ALTER TABLE 表名
   ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

mysql> alter table student10                        
    -> add sex enum('male','female') default 'male' first;          //添加到最前面

(3). 删除字段
ALTER TABLE 表名
  DROP 字段名;

mysql> alter table student10
    -> drop sex;

(4). 修改字段
ALTER TABLE 表名
  MODIFY 字段名 数据类型 [完整性约束条件…];

mysql> alter table student10
    -> modify age int(3);
mysql> alter table student10
    -> modify id int(11) not null primary key auto_increment;    //修改为主键

ALTER TABLE 表名
  CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
  CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

5.复制表结构

复制表结构+记录 (key不会复制: 主键、外键和索引)

mysql> create table new_service select * from service;

只复制表结构

mysql> select * from service where 1=2;        //条件为假,查不到任何记录
Empty set (0.00 sec)
mysql> create table new1_service select * from service where 1=2;  
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

用like 也可以只复制表结构

mysql> create table t4 like employees;

6.删除表结构

DROP TABLE 表名;


感谢观看,如有不对,一定要指出。小木在这里谢谢了

 

posted on 2019-04-16 09:35  明小木  阅读(113)  评论(0编辑  收藏  举报

导航