数据库之表操作

一 存储引擎介绍

存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制

详见:https://www.cnblogs.com/rianley/articles/9316413.html

二 表介绍

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

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

三 创建表

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

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

 

 1 MariaDB [(none)]> create database db1 charset utf8;
 2 
 3 MariaDB [(none)]> use db1;
 4 
 5 MariaDB [db1]> create table t1(  
 6     -> id int, 
 7     -> name varchar(50),
 8     -> sex enum('male','female'),
 9     -> age int(3)
10     -> );
11 
12 MariaDB [db1]> show tables; #查看db1库下所有表名
13 
14 MariaDB [db1]> desc t1;
15 +-------+-----------------------+------+-----+---------+-------+
16 | Field | Type                  | Null | Key | Default | Extra |
17 +-------+-----------------------+------+-----+---------+-------+
18 | id    | int(11)               | YES  |     | NULL    |       |
19 | name  | varchar(50)           | YES  |     | NULL    |       |
20 | sex   | enum('male','female') | YES  |     | NULL    |       |
21 | age   | int(3)                | YES  |     | NULL    |       |
22 +-------+-----------------------+------+-----+---------+-------+
23 
24 MariaDB [db1]> select id,name,sex,age from t1;
25 Empty set (0.00 sec)
26 
27 MariaDB [db1]> select * from t1;
28 Empty set (0.00 sec)
29 
30 MariaDB [db1]> select id,name from t1;
31 Empty set (0.00 sec)
View Code
 1 MariaDB [db1]> insert into t1 values
 2     -> (1,'egon',18,'male'),
 3     -> (2,'rianley',22,'female')
 4     -> ;
 5 MariaDB [db1]> select * from t1;
 6 +------+------+------+--------+
 7 | id   | name | age  | sex    |
 8 +------+------+------+--------+
 9 |    1 | egon |   18 | male   |
10 |    2 | rianley |   22 | female |
11 +------+------+------+--------+
12 
13 
14 
15 MariaDB [db1]> insert into t1(id) values 
16     -> (3),
17     -> (4);
18 MariaDB [db1]> select * from t1;
19 +------+------+------+--------+
20 | id   | name | age  | sex    |
21 +------+------+------+--------+
22 |    1 | egon |   18 | male   |
23 |    2 | rianley |   22 | female |
24 |    3 | NULL | NULL | NULL   |
25 |    4 | NULL | NULL | NULL   |
26 +------+------+------+--------+
往表中插入数据

 

 

注意注意注意:表中的最后一个字段不要加逗号 

四 查看表结构

复制代码
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
复制代码

五 数据类型

https://www.cnblogs.com/rianley/articles/9316437.html

六 表完整性约束

https://www.cnblogs.com/rianley/articles/9316535.html

七 修改表ALTER TABLE

语法:
1. 修改表名
      ALTER TABLE 表名 
                          RENAME 新表名;

2. 增加字段
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…],
                          ADD 字段名  数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
                            
3. 删除字段
      ALTER TABLE 表名 
                          DROP 字段名;

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

 

 1 示例:
 2 1. 修改存储引擎
 3 mysql> alter table service 
 4     -> engine=innodb;
 5 
 6 2. 添加字段
 7 mysql> alter table student10
 8     -> add name varchar(20) not null,
 9     -> add age int(3) not null default 22;
10     
11 mysql> alter table student10
12     -> add stu_num varchar(10) not null after name;                //添加name字段之后
13 
14 mysql> alter table student10                        
15     -> add sex enum('male','female') default 'male' first;          //添加到最前面
16 
17 3. 删除字段
18 mysql> alter table student10
19     -> drop sex;
20 
21 mysql> alter table service
22     -> drop mac;
23 
24 4. 修改字段类型modify
25 mysql> alter table student10
26     -> modify age int(3);
27 mysql> alter table student10
28     -> modify id int(11) not null primary key auto_increment;    //修改为主键
29 
30 5. 增加约束(针对已有的主键增加auto_increment)
31 mysql> alter table student10 modify id int(11) not null primary key auto_increment;
32 ERROR 1068 (42000): Multiple primary key defined
33 
34 mysql> alter table student10 modify id int(11) not null auto_increment;
35 Query OK, 0 rows affected (0.01 sec)
36 Records: 0  Duplicates: 0  Warnings: 0
37 
38 6. 对已经存在的表增加复合主键
39 mysql> alter table service2
40     -> add primary key(host_ip,port);        
41 
42 7. 增加主键
43 mysql> alter table student1
44     -> modify name varchar(10) not null primary key;
45 
46 8. 增加主键和自动增长
47 mysql> alter table student1
48     -> modify id int not null primary key auto_increment;
49 
50 9. 删除主键
51 a. 删除自增约束
52 mysql> alter table student10 modify id int(11) not null; 
53 
54 b. 删除主键
55 mysql> alter table student10                                 
56     -> drop primary key;
示例

 

八 复制表

复制代码
复制表结构+记录 (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

mysql> create table t4 like employees;
复制代码

九 删除表

DROP TABLE 表名;
posted @ 2018-07-20 09:45  rianley  阅读(162)  评论(0)    收藏  举报