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

MySQL表操作

目录

一、表操作

1.1 表操作-查询

1.1.1 查询当前数据库所有表

1.1.2 查看指定表结构

1.2 表操作-创建

1.2.1 创建表结构

1.3 表操作-修改

1.3.1 添加字段

1.3.2 修改数据类型

1.3.3 修改字段名和字段类型

1.3.4 删除字段

1.3.5 修改表名

1.4 表操作-删除

1.4.1 删除表

1.4.2 删除指定表

1.5 mysql权限问题

1.6 备份

1.7 触发器


一、表操作

1.1 表操作-查询

1.1.1 查询当前数据库所有表

show tables

1.1.2 查看指定表结构

desc 表名;

1.2 表操作-创建

1.2.1 创建表结构

create table 表名(
字段1 字段1类型 [ comment 字段1注释],
字段2 字段2类型 [ comment 字段2注释],
字段3 字段3类型 [ comment 字段3注释],
......
字段n 字段n类型 [comment 字段n注释]
) [ comment 表注释];
/*注意:[...]内为可选参数,最后一个字段后面没有逗号*/

比如 ,我们创建—张表students ,对应的结构如下 ,那么建表语句为:

create table students(
id int comment '学号',
name varchar(50) comment '姓名 ',
age int comment '年龄 ',
gender varchar(1) comment '性别 '
) comment '学生表 ';

案例:

1.  设计⼀张员工信息表 ,要求如下:

编号(纯数字)

员工工号 ( 字符串类型 ,长度不超过 10 )

员工姓名(字符串类型 ,长度不超过 10 位)

性别(男/女 ,存储⼀个汉字)

年龄(正常人年龄 ,不可能存储负数)

身份证号( ⼆代身份证号均为 18  ,身份证中有 X 这样的字符)

 入职时间(取值年月日即可)

create table emp(
id int comment '编号 ',
workno varchar(10) comment '⼯号 ', 
name varchar(10) comment '姓名 ',   
gender char(1) comment '性别 ',
age tinyint unsigned comment '年龄 ',
idcard char(18) comment '⾝份证号 ',  
entrydate date comment '⼊职时间 '
) comment '员⼯表 ';

1.3 表操作-修改

1.3.1 添加字段

ALTER TABLE 表名 ADD 字段名 类型 (⻓度) [ COMMENT 注释  ] [ 约束  ];

emp 表增加⼀个新的字段 ” 昵称 ” 为 nickname ,类型为 varchar(20)

ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称 ';

1.3.2 修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 (⻓度);

1.3.3 修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (⻓度) [ COMMENT 注释  ] [ 约束  ];

举例:emp 表的nickname字段修改为 username ,类型为 varchar(30)

 ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称 ';

1.3.4 删除字段

 ALTER TABLE 表名 DROP 字段名;

举例:emp表的字段 username 删除

ALTER TABLE EMP DROP username;

1.3.5 修改表名

ALTER TABLE 表名 RENAME TO 新表名;

举例:将emp表的表名修改为employee

ALTER TABLE emp RENAME TO employee;

1.4 表操作-删除

1.4.1 删除表

DROP TABLE [ IF EXISTS ] 表名;

可选项 IF EXISTS 代表 ,只有表名存在时才会删除该表 ,表名不存在 ,则不执行删除操作 ( 如果不加该参数项 ,删除⼀张不存在的表 ,执行将会报错 ) 

案例 :

如果 user 表存在 ,则删除 user 

DROP TABLE IF EXISTS user;

1.4.2 删除指定表

删除指定表,并重新创建表

(理解为清空表中的所有数据 ,数据量多时 ,使用的是删除⽅法, 数据量少使用delete

TRUNCATE TABLE 表名;

注意 : 在删除表的时候 ,表中的全部数据也都会被删除。

1.5 mysql权限问题

mysql权限:

-- mysql数据库权限: 

-- root :拥有所有权限(可以干任何事情) 

-- 权限账户, 只拥有部分权限(CURD)例如, 只能操作某个数据库的某张表

如何修改mysql 的用户密码?

-- password: md5加密函数(单向加密) :SELECT PASSWORD ( 'root ');

-- mysql数据库,⽤户 配置  : user

USE mysql;
SELECT * FROM USER;

-- 修改密码 UPDATE USER SET PASSWORD=PASSWORD( '123456 ') WHERE USER= 'root ';

--权限:
GRANT 权限 ON 数据库.表 TO '账户名'@'账户地址' IDENTIFIED BY '密码';

--举例:
select insert delete update drop create/
-- 分配权限账户GRANT SELECT ON project.students TO 'root'@ 'localhost' IDENTIFIED BY '123456 ';
GRANT DELETE ON project.user TO 'root'@'192.168.32.130' IDENTIFIED BY '123456';

1.6 备份

/*备份*/
/*mysqldump -u<⽤户名  -p<密码  备份的数据库名称	磁盘路径/备份后的⽂件命名*/
mysqldump -uroot -p123456	d:/project.sql	

/*恢复*/
/*mysqldump -u<⽤户名  -p<密码  需要回复的⽂件名 < ⽂件路径*/
mysqldump -uroot -p123456 < d:/project.sql
/*注意:不需要登录*/

1.7 触发器

触发器作用:

当操作了某张表时 ,希望同时触发⼀些动作/ ,可以使用触发器完成

例如:  当向员工表插入一条记录时 ,希望同时往日志表插入数据

--首先创建日志表 
-- ⽇志表 CREATE TABLE test_log(
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(100)
)

-- 需求:当向员⼯表插⼊⼀条记录时, 希望mysql⾃动同时往⽇志表插⼊数据
-- 创建触发器(添加)CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW
-- 当往员⼯表插⼊⼀条记录时INSERT INTO test_log(content) VALUES('员⼯表插⼊了⼀条记录');

-- 插⼊数据INSERT INTO employee(id,empName,deptId) VALUES(6, '宋江 ',2);
INSERT INTO employee(id,empName,deptId) VALUES(7,'林冲',4); 

-- 查询数据SELECT * FROM employee;
SELECT * FROM test_log;

-- 创建触发器(修改)CREATE TRIGGER tri_empUpd AFTER UPDATE ON employee FOR EACH  ROW

-- 当往员⼯表修改⼀条记录时INSERT INTO test_log(content) VALUES( '员⼯表修改 了⼀条记录');

-- 修改UPDATE employee SET empName= 'eric ' WHERE id=7; 16

-- 创建触发器(删除)CREATE TRIGGER tri_empDel AFTER DELETE ON employee FOR EACH  ROW 

-- 当往员⼯表删除⼀条记录时INSERT INTO test_log(content) VALUES( '员⼯表删除了⼀条记录');

-- 删除DELETE FROM employee WHERE id=5;

相关文章:

  • 一文详解LibTorch环境搭建:Ubuntu20.4配置LibTorch CUDA与cuDNN开发环境
  • spark 的流量统计案例
  • DeepSeek 全套汇总资料pdf免费下载(最新更新8篇)
  • 【Proteus仿真】【32单片机-A007】PT100热敏温度检测系统设计
  • 【中大厂面试题】阿里巴巴 java 后端 校招 最新面试题
  • 加密≠安全:文件夹密码遗忘背后的数据丢失风险与应对
  • React 项目 PDF 批注插件库在线版 API 示例教程
  • 多域名​ SSL 证书能保护多少个域名?
  • 【云计算物理网络】从传统网络到SDN:云计算的网络演进之路
  • MATLAB如何打印一个桃心形状
  • 数字政府与电子政务综合分析报告
  • rpm仓库管理工具yum架构实现分析
  • C++经典面试题解析:深入理解左值与右值
  • Qt实现鼠标右键弹出弹窗退出
  • 系统运维工程师,如何利用Deepseek提高工作效率
  • 无公网实体服务器加装多个操作系统供多个用户互不打扰使用_part1
  • 聊一聊接口测试时遇到上下游依赖时该如何测试
  • Spring Boot项目信创国产化适配指南
  • 前沿科技:社会性交互技术原理与核心概念解析
  • docker快捷打包脚本(ai版)
  • 泰安网络网站/找相似图片 识别
  • 建网站视频教程/云服务器
  • 东莞做微网站建设/网站建设山东聚搜网络
  • 优秀中文企业网站欣赏/app推广渠道
  • 世界十大网站排名/营销型网站更受用户欢迎的原因是
  • 网站建设广州市/网推获客平台