MySQL基础(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL基础

2 .2.2 alter:修改表


修改数据表:


  • 修改表名: ALTER TABLE 表名 RENAME TO 新的表名;
  • 修改列名和数据类型: ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
  • 添加一列:                    ALTER TABLE 表名 ADD  列名   数据类型;
  • 删除列 :                       ALTER TABLE 表名 DROP   列名
  • 修改数据类型:             ALTER TABLE 表名 MODIFY  列名  新数据类型;


2.2.3 drop:删除表


语法:


DROP TABLE 表名

DROP TABLE IF EXISTS  表名  -- 存在就删除


快速删除表


  1. 语法

truncate table 表名;


  • 特点:物理删除,删除效率高,不可以恢复
  • 删除数据,表结构保留
  • 不能删除单条数据


删除数据表:


  • 删除表:DROP TABLE 数据表名;
  • drop 表TABLE if exists   表名;


2.3DML


  • 对表中的数据进行修改


2.3.1插入 insert


  1. 语法

insert into 表名(字段名1,字段名2,字段名3,...) values(值1,值2,值3,...)


  • 字段名和值要一一对应:数量对应,数据类型要对应。
插入实列: 
insert into t_student(sno,name,age,sex,eamil) values(1,'张三',15,'女','1234567@qq.com')  -- 按照顺序
insert into t_student(name,sno,age,sex,eamil) values('张三',1,15,'女','1234567@qq.com')  -- 字段顺序可以调整,但是字段名和值一定要对应
insert into t_student(sno,name) values('张4',2) -- 只要某些字段,插入数据后其他的字段就会是null
insert into t_student() values(1,'李4',12,'女','123456744@qq.com') -- 省略字段名,就必须写上所有的字段名
  1. 插入多条记录
INSERT  
INTO   表名  (列名1,列名2.…) 
VALUES  (值1,值2...), (值1,值2...), (值1,值2…);


  1. insert插入日期
    格式化:format()
  2. 将查询结果插入到一张表中( 少 用 )
insert into 表名 select * from 表名 ;
select * into 新表名 from 表名;



2.3.2修改 Update


  1. 语法格式
update
 表名
set
 字段名1 = 值1,
 字段名2 = 值2,
 字段名3 = 值3,
 字段名n = 值n
where
 条件;


  • 没有条件将会将整个表更改


2.3.3删除 delete


  • 表中的数据被删除了,但是数据在硬盘上的真实存储空间不会被释放
  • 删除效率低,可回滚


  1. 语法格式

delete

from

表名

where

条件


  • 没有条件将会把整个表内的数据进行删除
  1. 删除大表(删除表中的全部数据)



2.4 表


2.4.1 表结构的增删改查


  • 一旦设计好表,就很少会对表进行修改
  • 修改成本高,就要对java代码进行修改
  • 使用工具(navicat)修改


2.4.2约束 (constraint)


  • 给字段添加约束,保证表中数据的完整性,有效性!!!
  • 保证表中的数据有效
  • 列约束:直接在列后面添加约束
  • 表级约束:约束没有添加在列的后面


  1. 非空约束:not null
  2. 唯一约束:unique
  3. 主键约束:primary ley(PK)
  4. 外键约束:foreign key(FK)
  5. 级联更新
  6. 检查约束:check(mysql不支持)


1 非空约束 (not null)


  • 约束的字段不嫩改为null
CREATE TABLE t_student
(
 sno int(10) not null,
    name varchar(22) not null,
    age  int(3),
    sex char(5),
    email varchar(255)
);



2 唯一性约束 (unique)


  • 可以为null ,但是不可以重复
drop table if exists t_student
CREATE TABLE t_student
(
 sno int(10) unique,  -- 列级约束
    name varchar(22),
    age  int(3),
    sex char(5),
    email varchar(255)
);
insert into t_student() values(1,'李4',12,'女','123456744@qq.com')
insert into t_student() values(2,'李4',12,'女','123456744@qq.com')
-- 在插入数据的时候,sno的值,则不能重复


  • 多个字段字段联合起来具有唯一性
CREATE TABLE t_student
(
 sno int(10),
    name varchar(22),
    unique(sno,name)  -- sno ,name 联合起来唯一。表
);
insert into t_student() values(1,'李4',12,'女','123456744@qq.com')
insert into t_student() values(2,'李武',12,'女','123456744@qq.com')
-- 分开的sno,name可以重复,但是(sno,name) 联合起来就不可以重复
  • not null 和unique联合使用
CREATE TABLE t_student
(
 sno int(10) not null unique,  -- sno变成主键
    name varchar(22)
);



3 主键约束 (primary key :PK)


  • 主键约束:一个表只能有一个主键
  • 主键字段:字段添加主键约束
  • 主键值:每一行记录的唯一标识。
  • 建议使用:int 、bigint、char等类型
  • 不建议使用:varchar来做主键,主键值定长的。
  • 特征
  1. not null  + unique (主键值不能为空,不能重复)
  • 任何每一张表都要有主键,没有就是非法的
drop table if exists t_student
CREATE TABLE t_student
(
 sno int primary key ,  
    name varchar(22)
);
-- 表级约束添加主键约束
drop table if exists t_student
CREATE TABLE t_student
(
 sno int ,  
    name varchar(22),
    primary key(sno)
);
-- 一个字段做主键:单一主键
-- 多个字段做主键:复合主键  (不要使用)
drop table if exists t_student
CREATE TABLE t_student
(
 sno int ,  
    name varchar(22),
    primary key(sno,name)
);


  • 自然主键:自然数(使用多)
  • 业务主键:主键值与业务紧密关联。(使用少,业务变动会影响到业务会改变)

-- 自动维护主键值

drop table if exists t_student
CREATE TABLE t_student
(
 sno int primary key auto_increment,  --  使sno自增:auto_increment
    name varchar(22)
);


4 外键约束(foreign key :FK)


  • 术语:
  • 外键约束:
  • 外键字段:字段添加上外键约束
  • 外键值:外键字段中的每一个值。可以为null
  • 父表:被引用的表
  • 子表:引用的表


顺序: (理解,不要死记)


  1. 删除表:
  • 先删除子表,再删除父表
  1. 创建表
  • 先创建父表,再创建子表
  1. 删除数据
  • 先删除子数据,再删除父数据
  1. 插入数据
  • 先插入父,再插入子


CREATE TABLE t_calss   -- 父表
(
 classno int primary key ,  --  使sno自增:auto_increment
    classname varchar(22)
);
CREATE TABLE t_student  -- 子表
(
 sno int primary key auto_increment,  
    name varchar(22),
    classcno int foreign key(classno) references t_class(classno)
);


2.5 数据处理函数


  • 又称为:单行处理处理函数


2.2.1 单行处理函数


  • 一个输入,对应一个输出

函数名

说明

lower

大写变成小写

upper

小写变成大学

substr

取子串(被截取的字符串,起始下标,截取的长度)

length

取长度

trim

去前后空格

str_to_date

将字符串转换成日期

date_fromat

格式化日期

round

四舍五入

rand

生成随机数

ifnull

将null转换成一个具体值


SELECT loser(name),age FROM student  -- name 内容变成小写


SELECT round(123456.123,0) FROM studnet ; -- round(参数1,参数2)  参数1:要四舍五入的数;参数2:保留多少位小数


2.2.2 多行处理函数


  • 多个输入,对应一个输出


分组函数 / 聚合函数 / 多行处理函数   在上面的分组查询中查看 这里的内容


3 存储引擎


(了解)


  • 表存储 / 组织
  • 建表时:指定存储引擎

engine  -- 指定存储引擎

CHARSET -- 指定表的字符编码


  • MySQL支持的搜索引擎

show engines \G  -- 显示目前数据库版本支持的数据库引擎


  • MyISAM
  • MyISAM的表具有以下的特征:
  1. 格式文件一存储表结构的定义(mytable.frm)
  2. 数据文件―存储表行的内容(mytable.MYD )
  3. 索引文件–存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围,提高效率
  • InnoDB:
  • MySQL默认存储引擎,重量级引擎
  • 支持事务,保证数据库的安全,支持事务回滚
  • 服务器崩溃了,支持自动恢复
  • 表和索引存储在一个表空间内
  • MEMORY:
  • 数据存储在内存当中,断电就没有
  • 表数据及索引被存储在内存中,查询快,效率高,不需要与硬盘交互。

4 事务


transaction


  • 事务:完整的业务逻辑。


事务的DML语句


insert

update

delete


  • 数据的增删改查要考虑安全
  • 多条DML语句共同来联合完成
  • 多条语句同时成功,或者同时失败!


4.1 实现事务


4.1.1 提交事务 (commit)


  • 清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中
  • 提交事务标志着,事务的结束。全部成功的结束。


mysql 默认情况下是自动提交事务


  • 自动提交不符合我们开发的业务,必须多条同时执行成功才进行提交业务。


-- 关系自动提交机制,先执行

start transaction


4.1.2 回滚事务 (rollback)


  • 将之前所有的DML 操作全部撤销,并且清空事务性活动的日志文件
  • 回滚事务标志着,事务的结束。全部失败的结束。


-- 在经过一系列的增删改查之后

rollback ;


回滚到上一次的提交

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Java 关系型数据库 MySQL
MySQL数据库基础
文章主要介绍MySQL数据库中一些常见的操作,为专栏文章,系列介绍
158 0
MySQL数据库基础
|
SQL 存储 关系型数据库
MySQL常用基础 - 小白必看(二)
概念:是一个数据定义语言 该语言部分包括: 1、对数据库的常用操作 2、对表结构的常用操作
122 0
MySQL常用基础 - 小白必看(二)
|
存储 SQL 缓存
MySQL数据库系列(一)------基础
数据不会随程序结束而消失
162 0
MySQL数据库系列(一)------基础
|
关系型数据库 MySQL 数据格式
【0基础学习mysql】之DML-表中数据的操作
【0基础学习mysql】之DML-表中数据的操作
135 0
【0基础学习mysql】之DML-表中数据的操作
|
关系型数据库 MySQL Java
MySQL数据库基础数据入门级[图文详解]
MySQL数据库基础数据入门级[图文详解]
MySQL数据库基础数据入门级[图文详解]
|
SQL 存储 人工智能
华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定
前言 MySQL不用多说,大家都知道它是目前最为活跃热门的开源数据库,由于成本低,操作简易的特点,所以在互联网企业中被广泛使用,即使是头部的BATJ。由此可见,想要在互联网行业混得风生水起,或者说想要进入BATJ等一线互联网公司,那么熟练掌握MySQL必定是一块必要的敲门砖。 对于MySQL的使用,可能很多刚开始工作的开发人员还是挺陌生的,但要想学习又不知道从何开始,技术的落后自然会让人感到焦虑。实际上,学习MySQL,找对方法就能轻松搞定。 今天,特将华为大佬整理的“百万级”MySQL笔记分享给你们,从基础到优化再到架构,带你轻松上手,一键搞定。
|
存储 SQL JSON
|
关系型数据库 MySQL
MySQL基础(二)下
MySQL基础(二)下
124 0
MySQL基础(二)下
|
存储 SQL JSON
MySQL基础(二)中
MySQL基础(二)中
104 0
MySQL基础(二)中
|
存储 SQL NoSQL
MySQL基础(二)上
MySQL基础(二)上
177 0
MySQL基础(二)上