当前位置: 首页 > web >正文

04.管理表

管理表

1. 创建表

直接创建

# 创建表
mysql> create table student(-> id int UNSIGNED AUTO_INCREMENT PRIMARY KEY,-> name VARCHAR(20) NOT NULL,-> age tinyint UNSIGNED,-> gender ENUM('M','F') default 'M'-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)mysql> desc student;
+--------+---------------------+------+-----+---------+----------------+
| Field  | Type                | Null | Key | Default | Extra          |
+--------+---------------------+------+-----+---------+----------------+
| id     | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| name   | varchar(20)         | NO   |     | NULL    |                |
| age    | tinyint(3) unsigned | YES  |     | NULL    |                |
| gender | enum('M','F')       | YES  |     | M       |                |
+--------+---------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)mysql> insert student (name,age) values('zzz',18);
Query OK, 1 row affected (0.00 sec)mysql> select * from student;
+----+------+------+--------+
| id | name | age  | gender |
+----+------+------+--------+
|  1 | zzz  |   18 | M      |
+----+------+------+--------+
1 row in set (0.00 sec)

通过查询现存表创建;新表会被直接插入查询而来的数据

mysql> create table teacher select * from student;

通过复制现存的表的表结构创建,但不复制数据

mysql> create table user like student;

创建外键表

mysql> create table school (-> id int primary key auto_increment,-> name varchar(10));mysql> create table teacher (-> id int primary key auto_increment,-> name varchar(10),-> school_id int,-> foreign key(school_id) references school(id));注意:
外键约束要求:
被引用的表(这里是 school)必须已经存在。
被引用的列(这里是 school.id)必须是主键或具有唯一约束(UNIQUE)

2. 查看表

# 查看表
mysql> show tables;
mysql> show tables from db1;# 查看表创建命令
mysql> show create table teacher;# 查看表结构
mysql> desc teacher;
mysql> show columns from teacher;# 查看当前库里的所有表或指定表的状态
mysql> show table status;
mysql> show table status like 'teacher';
mysql> show table status like 'teacher' \G;# 查看库中的所有表状态
mysql> show table status from db1;
mysql> show table status from db1 \G;# 查看支持的engine类型
mysql> show engines;

3. 修改表

# 修改表名
mysql> alter table student rename stu;# 添加字段
mysql> alter table stu add phone varchar(11) after name;# 修改字段类型
mysql> alter table stu modify phone int;# 修改字段名称和类型
mysql> alter table stu change column phone mobile char(11);# 修改字符集
mysql> alter table stu character set utf8;

4. 删除表

# 删除字段
mysql> alter table stu drop column mobile;# 添加外键
mysql> alter table teacher add foreign key(school_id) references school(id);# 删除外键(先查看外键名)
mysql> show create table teacher;
mysql> alter table teacher drop foreign key teacher_ibfk_1;# 删除表
mysql> drop table teacher;

5. 表中插入数据

insert 语句

功能: 一次插入一行或多行数据

mysql> desc student;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id     | int unsigned     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(20)      | NO   |     | NULL    |                |
| age    | tinyint unsigned | YES  |     | NULL    |                |
| gender | enum('M','F')    | YES  |     | M       |                |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)# 全值插入
mysql> insert student values(2,'aaa',18,'F');#部分插入
mysql> insert student(id,name,age) values(3,'sss',16);

6. 更新表中数据

注意:一定要有限制条件,否则将修改所有行的指定字段mysql> update student set age=18 where id=1;可利用mysql选项避免此错误
vim /etc/my.cnf
[mysql]
safe-updates

7. 删除表中数据

删除表中数据,但不会自动缩减数据文件的大小。
注意:一定要有限制条件,否则将清空表中的所有数据。mysql> delete from student where id=1;# 如果想清空表,保留表结构,也可以使用下面语句,此语句会自动缩减数据文件的大小。
mysql> truncate table student;# 缩减表大小
mysql> optimize table student;# 删除数据可以使用逻辑删除,添加一个标识字段实现,删除数据即修改标识字段
ALTER TABLE student ADD COLUMN is_deleted TINYINT(1) NOT NULL DEFAULT 0;is_deleted = 0:未删除(正常)
is_deleted = 1:已删除(逻辑上)删除操作变成更新操作(逻辑删除)
UPDATE student SET is_deleted = 1 WHERE id = 1;恢复数据
UPDATE student SET is_deleted = 0 WHERE id = 1;
http://www.xdnf.cn/news/12836.html

相关文章:

  • Linux系统的CentOS7发行版安装MySQL80
  • Spring Boot 整合 Apache Flink 的详细过程
  • 二、即时通讯系统设计经验
  • Flink CDC —部署模式
  • 微软PowerBI考试 PL300-使用 Power BI 准备数据以供分析【提供练习数据】
  • 【iOS】多线程NSOperation,NSOperationQueue
  • 【C++系列】模板类型特例化
  • DeepSeek12-Open WebUI 知识库配置详细步骤
  • 音视频——I2S 协议详解
  • 【LeetCode 热题100】网格路径类 DP 系列题:不同路径 最小路径和(力扣62 / 64 )(Go语言版)
  • 【python深度学习】Day 48 PyTorch基本数据类型与操作
  • ArkUI-X与Android桥接通信之消息通信
  • STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)
  • PHP环境极速搭建
  • 【Blender】Blender 通过 Python 实现模型大小压缩
  • 八股---7.JVM
  • 基于 React Native for HarmonyOS5 的跨平台组件库开发指南,以及组件示例
  • Cursor 编辑器, 使用技巧,简单记录一下
  • 求解一次最佳平方逼近多项式
  • 算法题(164):贴海报
  • 电力系统时间同步系统之三
  • 在 Java 中!(逻辑非)和 ||(逻辑或)的优先级关系
  • 生成模型从自回归到变分自动编码器
  • 【PhysUnits】15.18 Unit基础结构 (unit.rs)
  • 无需登录即可使用的Web应用网站
  • CMS、G1、ZGC、Shenandoah 的全面对比
  • 淘晶驰的串口显示屏T0 T1 K0 X2 X3 X5之间有何区别 各自的优势是啥 划分的依据是啥
  • 获取环境变量的两种方式:getenv()和environ
  • Nginx Stream 层精准定位ngx_stream_geoip_module
  • 指针的定义与使用