【MySQL】(三)SQL 基础操作之 DML 数据操纵语言

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【MySQL】(三)SQL 基础操作之 DML 数据操纵语言

DML操作


1.1添加

#insert
#1.给所有字段添加值
insert into person values(5,'李白',24,'155');
#2.部分字段添加值,值的顺序和前面字段的声明顺序必须一致
insert into person(id,age,phone) values(1,27,'158');
#3.添加三条记录
insert into person(id,age,phone) values(2,27,'157'),(3,25,'159'),(4,26,'156');
#4.表复制
  #创建一个和person结构相同的表
  create table person1 select *from person where 0=1;
  #插入person表所有数据到person1
  insert into person1 select *from person;


1.2修改

#修改:将电话号码为159的姓名改成杜甫
update person set sname=‘杜甫’ where phone=‘159’;


1.3删除

#删除
delete from person where id=2;
insert into person(id,sname,age) values(2,‘杜甫’,26);
delete、drop和truncate的区别
#删除整个表数据(一条一条的删),只与数据有关,与结构无关,不会重置自增
delete from person1;
#删除整个表的结构
drop table person1;
#从底层直接清除所有数据
truncate table person1;
创建学生表
CREATE TABLE `student`(
  stuId INT PRIMARY KEY AUTO_INCREMENT COMMENT '学生编号',
  stuName VARCHAR(25) COMMENT '学生姓名',
  stuPwd VARCHAR(50) COMMENT '学生密码',
  gender CHAR(2) DEFAULT '男'  COMMENT '性别',
  gradeId INT COMMENT '年级编号',
  phone VARCHAR(11) COMMENT '电话',
  email VARCHAR(25) COMMENT '邮箱',
  address VARCHAR(255) DEFAULT '地址不详' COMMENT '地址',
  identityCard VARCHAR(18) UNIQUE COMMENT '身份证号'
) COMMENT '学生表';


CHANGE: 更改字段信息时 并且可以改名 / MODIFY 只能改字段信息

ALTER TABLE student CHANGE identityCard identityId VARCHAR(18);


添加字段信息 出生日期

birthday/bornDate datetime COMMENT '出生日期'
ALTER TABLE student ADD bornDate datetime COMMENT '出生日期';


删除字段信息 删除出生日期

ALTER TABLE student DROP bornDate;


修改表名

ALTER TABLE student RENAME school_stu;


主键和外键<面试题>


主键: 能够唯一标识信息表中的一条数据的字段/字段组

ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段名);
ALTER TABLE school_stu ADD CONSTRAINT pk_stu_stuId PRIMARY KEY school_stu(stuId);


外键<面试题>


外键: 在一张表中的某个字段引用的数据来自另一张表的某个字段的信息。

主表: 它的主键一般是需要被从表引用 从表:在其中拥有外键 可以引用主表的主键信息。


grade主表 student从表


实现物理外键 通过SQL语句将外键绑定好 可以保证数据一致性

ALTER TABLE school_stu 
  ADD CONSTRAINT fk_stu_grade 
  FOREIGN KEY (gradeId)
  REFERENCES grade(gradeId);


为了能够方便我们进行数据表操作 在实际项目中一般不设置物理外键 而设置逻辑外键

数据添加 INSERT
INSERT INTO 表名[(要添加值的字段列表)] VALUES(字段值列表<必须按照前面的顺序赋值>);
INSERT INTO school_stu (stuId,stuName,stuPwd) VALUES(2,'Jack','root');


如果你省略了字段列表 则需要将所有字段进行赋值 且严格按照顺序

INSERT INTO school_stu VALUES(3,'Lucy','root','女',2,'12312','x','x','xxx','2019-05-23');


如果有些字段有默认(主键有自动递增) 则可以使用null来表示 / 你不需要去给此字段赋值

INSERT INTO school_stu (stuId,stuName) VALUES(null,'我是测试的');


同时添加多条数据

INSERT INTO school_stu(stuName) VALUES('Chris'),('Luck'),('努力过');


将school_stu的id和名称 赋值到stu表中的对应列,必须保证要添加数据的表提前存在!!!

INSERT INTO stu(stuId,stuName)
  SELECT stuId,stuName FROM school_stu;


数据修改 UPDATE

update 表名 set 列名1 = 值1,列名2 = 值2,...where 条件; 
  commit;    //commit要跟上


WHERE 在哪/哪里?

WHERE 后可接一系列的判断条件  id = xxx and xxx = xx or xxx = xx and  not xxx
UPDATE school_stu SET stuName = '李易峰' WHERE stuId = 7;
UPDATE school_stu SET stuName = '李元霸' WHERE gender = '男'


TRUNCATE 可以进行数据删除

TRUNCATE TABLE school_stu;


<面试题>DELETE TRUNCATE的区别


相同点: 都可以进行数据删除(全表删除)


不同点


  • DELETE可以进行条件删除 TRUNCATE只能进行全表删除
  • DELETE会保留自增序列 TRUNCATE除了表结构 其他数据全部清空 不会保留自增序列
  • TRUNCATE会结束事务而DELETE不会影响到事务


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
SQL 关系型数据库 MySQL
MySQL数据库基础第一篇(SQL通用语法与分类)
MySQL数据库基础第一篇(SQL通用语法与分类)
|
4天前
|
SQL 缓存 关系型数据库
|
3天前
|
存储 关系型数据库 MySQL
关系型数据库mysql数据文件存储
【6月更文挑战第15天】
10 4
|
22小时前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用问题之如何查看数据离线同步每天从MySQL抽取的数据量
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3天前
|
canal 关系型数据库 MySQL
蓝易云 - 详解canal同步MySQL增量数据到ES
以上就是使用Canal同步MySQL增量数据到Elasticsearch的基本步骤。在实际操作中,可能还需要根据具体的业务需求和环境进行一些额外的配置和优化。
20 2
|
6天前
|
SQL 存储 关系型数据库
MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)
MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)
|
3天前
|
SQL 关系型数据库 MySQL
MySQL数据库数据模型概念入门及基础的SQL语句2024
MySQL数据库数据模型概念入门及基础的SQL语句2024
10 0
|
5天前
|
SQL Java 数据库连接
JavaWeb基础第三章(MyBatis的应用,基础操作与动态SQL)
JavaWeb基础第三章(MyBatis的应用,基础操作与动态SQL)
|
2天前
|
存储 关系型数据库 MySQL
|
2天前
|
SQL 关系型数据库 MySQL