MySQL的表操作

表介绍:

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

  • 例:
  • id,name,age,sex
    1,yj,18,male
    2,lijie,20,male
    3,yong,female
    
    id,name,age,sex称为字段,其余的,一行内容称为一条记录

建表语法:

#建表语法#
create table curriculum( id int, #数据类型为整数 name char(12), #长度为12 字段命3 类型[(宽度) 约束条件] ); #放在中括号里的内容可不写
mysql> create  database python;    #新建数据库名为python
Query OK, 1 row affected (0.04 sec)
mysql> use python;    #切换数据库
Database changed
mysql>  create table staff_info (id int,name varchar(50),age int(3),sex enum('male','female'),phone bigint(11),job varchar(11));
Query OK, 0 rows affected (0.30 sec)    #建表

mysql> show tables;    #查看当前数据库下的表
+------------------+
| Tables_in_python |
+------------------+
| staff_info       |
+------------------+
1 row in set (0.04 sec)

mysql> desc staff_info;    #查看表
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| phone | bigint(11)            | YES  |     | NULL    |       |
| job   | varchar(11)           | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+

mysql> select id,name,sex from staff_info;
Empty set (0.03 sec)

mysql> select * from staff_info;
Empty set (0.02 sec)
创建表:
mysql> insert into staff_info (id,name,age,sex) values (1,'YJ','18','female');
Query OK, 1 row affected (0.16 sec)    #插入数据

mysql> insert into staff_info (id,name,age,sex) values (2,'sys','20','male');
Query OK, 1 row affected (0.09 sec)

mysql> insert into staff_info (id,name,age,sex) values (3,'fyj','21','male');
Query OK, 1 row affected (0.05 sec)

mysql> select * from staff_info;    #查看表
+------+------+------+--------+-------+------+
| id   | name | age  | sex    | phone | job  |
+------+------+------+--------+-------+------+
|    1 | YJ   |   18 | female |  NULL | NULL |
|    2 | sys  |   20 | male   |  NULL | NULL |
|    3 | fyj  |   21 | male   |  NULL | NULL |
+------+------+------+--------+-------+------+
3 rows in set (0.02 sec)
插入数据:
insert into 表 values (值1,值2,值3);
    # 这张表有多少的字段,就需要按照字段的顺序写入多少个值
insert into 表 values (值1,值2,值3),(值1,值2,值3),(值1,值2,值3);
    # 一次性写入多条数据
insert into 表 (字段1,字段3 ) values (值1,值3);
    # 指定字段名写入,可以任意的选择表中你需要写入的字段进行
写入数据的方式
desc 表名;
    能够查看到有多少个字段类型长度,看不到表编码,引擎,具体的约束信息只能看到一部分
show create table 表名;
    能查看字段类型长度编码引擎约束
查看表结构的两种方式
mysql> describe staff_info;
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| phone | bigint(11)            | YES  |     | NULL    |       |
| job   | varchar(11)           | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> desc staff_info;
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| phone | bigint(11)            | YES  |     | NULL    |       |
| job   | varchar(11)           | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+
6 rows in set (0.00 sec)


#show create table
mysql> show create table staff_info;
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table      | Create Table                                                                                                                                                                                                                                                                  |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| staff_info | CREATE TABLE `staff_info` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(50) DEFAULT NULL,
  `age` int(3) DEFAULT NULL,
  `sex` enum('male','female') DEFAULT NULL,
  `phone` bigint(11) DEFAULT NULL,
  `job` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.04 sec)
desc和show create table
1. 修改表名:
      ALTER TABLE 表名
                      RENAME 新表名;
mysql> alter table staff_info
    -> rename xxb;
Query OK, 0 rows affected (0.34 sec)

2. 增加字段:
      ALTER TABLE 表名
                      ADD 字段名  数据类型 [完整性约束条件…],
                      ADD 字段名  数据类型 [完整性约束条件…];
mysql> alter table xxb
    -> add hh char(12);
Query OK, 0 rows affected (0.41 sec)
Records: 0  Duplicates: 0  Warnings: 0

3. 删除字段:
      ALTER TABLE 表名
                      DROP 字段名;
mysql> alter table xxb
    -> drop job
    -> ;
Query OK, 0 rows affected (0.53 sec)
Records: 0  Duplicates: 0  Warnings: 0

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

5.修改字段排列顺序/在增加的时候指定字段位置
    ALTER TABLE 表名
                     ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
    ALTER TABLE 表名
                     ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
    ALTER TABLE 表名
                     CHANGE 字段名  旧字段名 新字段名 新数据类型 [完整性约束条件…]  FIRST;
    ALTER TABLE 表名
                     MODIFY 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
修改表结构语法:

建立表之间的关系:

  • 一对多或称为多对一
  • 一个老师可以教多个班级
=====================多对一=====================
create table press(
id int primary key auto_increment,
name varchar(20)
);

create table book(
id int primary key auto_increment,
name varchar(20),
press_id int not null,
foreign key(press_id) references press(id)
on delete cascade
on update cascade
);


insert into press(name) values
('北京工业地雷出版社'),
('人民音乐不好听出版社'),
('知识产权没有用出版社')
;

insert into book(name,press_id) values
('九阳神功',1),
('九阴真经',2),
('九阴白骨爪',2),
('独孤九剑',3),
('降龙十巴掌',2),
('葵花宝典',3)
;
  • 服务和机器
    一个服务可能被部署到多台机器上,一台机器上也可以部署多个服务
    
    学生和课程
    一个学生可以选择多门课程,一门课程也可以被多个学生选择

多对多

  • 三张表:出版社,作者,书
  • 多对多:一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对多

删除表:

drop table 表名:

原文地址:https://www.cnblogs.com/yjtxin/p/12629893.html