mysql入门_数据库管理

表的创建、增加、修改、删除

创建表

语法:create table table_name (column_name column_type,...)

其中column_type是表字段的类型,mysql中表字段详细内容可以参照官方文档,这个是网上随便搜的其他童鞋的链接mysql 数据类型 - keme - 博客园 (cnblogs.com)

建表示例:

mysql> create table person_tmp1 (high float(5,2), name varchar(20), birthday date, other text);
Query OK, 0 rows affected (0.01 sec)

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| other | text | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+

维护表:

因为生产需要对表结构的修改都可以定义为维护表,下面是几种常见维护场景以及对应语法。

#表添加列

alter table person_tmp1 add (weight float(5,2));

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| other | text | YES | | NULL | |
| weight | float(5,2) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+

 

#修改列的长度

mysql> alter table person_tmp1 modify name varchar(30);

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | YES | | NULL | |
| name | varchar(30) | YES | | NULL | |

 

#修改列名 不常用

mysql> alter table person_tmp1 change name NAME varchar(30);   

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | YES | | NULL | |
| NAME | varchar(30) | YES | | NULL | |

 

#删除列  weight为删除的列名

mysql> alter table person_tmp1 drop weight;

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | YES | | NULL | |
| NAME | varchar(30) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| other | text | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+

 

#修改表名 person_tmp1源表名,person_tmp2新表名

mysql> alter table person_tmp1 rename to person_tmp2; 

 

#删除表  person_tmp2是需要删除表的表名

mysql> drop table person_tmp2; 

mysql> desc person_tmp2;
ERROR 1146 (42S02): Table 'test.person_tmp2' doesn't exist

 

#清空表数据 实际是drop表后再创建一张空表,比逐行删除数据效率高

mysql>  truncate table person_tmp1;

 

列约束:

列约束是指列除了类型限定外还有其它额外的限定条件,比如非空  默认值 主键等;一般推荐先创建无约束的表再逐个添加约束条件,而不是和建表语句写在一起。

下面是常见的约束示例

#非空约束   high float(5,2)是修改列的列名和类型

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | YES | | NULL | |

mysql> alter table person_tmp1 modify high float(5,2) not null;

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | NO | | NULL | |

 

#唯一性约束   person_tmp1是表名,test_unique是唯一性约束的名称,name, birthday是唯一性约束的列

mysql> alter table  person_tmp1 add constraint test_unique unique (name, birthday);

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | NO | | NULL | |
| name | varchar(20) | YES | MUL | NULL | |
| birthday | date | YES | | NULL | |
| other | text | YES | | NULL | |

 

#主键约束   test_primary 是主键约束的名称,key(name)是在name这个列上建主键约束。 主键约束可以理解为,主键+唯一 约束

mysql> alter table  person_tmp1 add constraint test_primary primary key(name);

mysql> desc person_tmp1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| high | float(5,2) | NO | | NULL | |
| name | varchar(20) | NO | PRI | NULL | |

 

#检查约束 指定列只能是某些固定值   person_tmp1表的sex列只能是“男”或者“女”

mysql> alter table  person_tmp1 add constraint check_con check (sex in ("男", "女"));

 

#外键约束 表B的某一列数据只能是表A主键中已经存在的数据,存在外键关系的表删除时需要先删除子表B再删除主表A

mysql> create table for_m (id int primary key,name varchar(20));
Query OK, 0 rows affected (0.03 sec)

mysql> create table for_s (id int,score float(6, 2));
Query OK, 0 rows affected (0.01 sec)

mysql> desc for_m;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> desc for_s;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| score | float(6,2) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+

#创建外键约束  for_s创建外键约束的表名,外键约束的名字,key(id)表示在for_s表的id字段建立外键约束, for_m(id)表示和表名为for_m的id列建立外键关系

mysql> alter table for_s add constraint for_con foreign key(id) references for_m(id);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc for_s;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id | int(11) | YES | MUL | NULL | |
| score | float(6,2) | YES | | NULL | |

 

表记录的增删改查

#插入数据  指定部分列值或者指定所有列值

mysql> insert into for_m (id) values(1);
Query OK, 1 row affected (0.00 sec)

mysql> insert into for_m values(2, "张三");
Query OK, 1 row affected (0.00 sec)

mysql> select * from for_m;
+----+--------+
| id | name |
+----+--------+
| 1 | NULL |
| 2 | 张三 |
+----+--------+

 

#删除数据  通过where限定删除哪些行

mysql> delete from for_m where id=2;
Query OK, 1 row affected (0.00 sec)

mysql> select * from for_m;
+----+------+
| id | name |
+----+------+
| 1 | NULL |
+----+------+

 

#修改数据

mysql> select * from for_m;
+----+--------+
| id | name |
+----+--------+
| 1 | NULL |
| 2 | 张三 |
+----+--------+

mysql> update for_m set name="李四" where id=2;

mysql> select * from for_m;
+----+--------+
| id | name |
+----+--------+
| 1 | NULL |
| 2 | 李四 |
+----+--------+

 

#清空表

mysql> select * from person_tmp1;
+--------+--------+----------+-------+------+
| high | name | birthday | other | sex |
+--------+--------+----------+-------+------+
| 163.00 | 张三 | NULL | NULL | NULL |
+--------+--------+----------+-------+------+

mysql> truncate table person_tmp1;

mysql> select * from person_tmp1;
Empty set (0.00 sec)

posted @ 2021-09-04 23:34  flag_HW  阅读(57)  评论(0)    收藏  举报