💖✨MySQL一万字深度总结,基础+进阶(五)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。数据库是一个按数据结构来存储和管理数据的计算机软件系统。

1.建表语言的语法格式


1.1 建表语言的语法格式


creat table 表名(
  字段名1 数据类型,
  字段名2 数据类型,
  字段名3 数据类型,
  ...
);
复制代码


1.2 关MySQL当中字段的数据类型,以下只说常见的

微信截图_20220608093240.png

1.3 char 和 varchar 怎么选择


  • 在实际开发中,当某个字段中的数据长度不发生改变的时候,是定长,例如;性别、生日等都是采用char;
  • 当一个字段的书库长度不确定,例如 :简介、姓名都是采用的 varchar

微信截图_20220608093436.png

1.4 表明在数据库当中一般建议以 : t_ 或者 tbl_ 开始


1.5 实现案例 :创建学生表


学生信息包括:学号、姓名、性别、班级编号、生日

  • 学号 : bigint
  • 姓名 : varchar
  • 性别 : char
  • 班级编号 : int
  • 生日 : char

创建学生表语言格式:

create table t_student(
    no bigint,
   name varchar(255),
   sex char(1),
   classno varchar(255),
   birth char(10)
); 
复制代码

微信截图_20220608093527.png

微信截图_20220608093537.png

1.6 删除t_student表


注意 : 当这个表存在的时候删除掉。

drop table if exists t_student;

微信截图_20220608093626.png

2. insert插入数据


2.1 语法格式 :


insert into 表名(字段名1,字段名2,字段名3,...) values(值1,值2,值3,...)
复制代码

要求 : 字段的数量和值的数量相同,并且数据类型要对应相同。


2.2 实现案例:向 t_student表中插入数据


2.2.1 按照建表时字段名的顺序进行插入

第一步 :插入数据

insert into t_student(no,name,sex,classno,birth) values(1.'zhangsan’,'1','gaosan3ban');

第二步 :查看插入后的数据

select * from t_student;

微信截图_20220608093716.png

2.2.2 不按照建表时字段名的顺序进行插入

第一步 :插入数据

insert into t_student(name,sex,classno,birth,no) values('lisi','1','gaosan3ban','2020-01-02',2);

第二步 :查看插入后的数据

select * from t_student;

微信截图_20220608093728.png

2.2.3只插入部分字段的数值 (一个字段或者多个字段)

第一步 :插入数据

insert into t_student(name) values('wangwu');

第二步 :查看插入后的数据

select * from t_student;

微信截图_20220608093920.png

注意 : 除了name字段以外,其他的字段自动插入NULL。


2.3 删除 t_student 这张表


当这个表存在的话删除

drop table if exists t_student;


2.4创建包含默认值的 t_student 表


create table t_student(
    no bigint,
   name varchar(255),
   sex char(1) default 1,
   classno varchar(255),
   birth char(10)
); 
复制代码

看此时的表结构,发现 sex 字段中的 Default有默认值1

desc t_student;

微信截图_20220608094018.png

第一步 :插入数据

insert into t_student(name) values('zhangsan');

第二步 :查看数据

select * from t_student;

微信截图_20220608094055.png

上表注意 :此时并没有输入 sex 的值,建表的时候将sex赋值为1 所以在sex中存在默认值 1

关于insert语句的注意 :

  • 当一条insert语句执行成功之后,表格当中必然会多出一行记录。
  • 即使多的这一行记录当中有某些字段是NULL,后期也没有办法在执行insert语句插入数据
  • 只能使用 update 进行更新。


2.5 省略的 insert 查询语句


insert into t_student values(4,'lisi','1','gaosan3ban','2020-01-02');

微信截图_20220608094135.png

insert into t_student values(2,'wangwu','1','gaosan3abn');

此时输入的字段值数量不够,会报错。

微信截图_20220608094148.png

注意 :

  • 字段可以省略不写,但是后面的value对数量和顺序都有要求。
  • 这个省略了字段名称,直接输入的就是字段的值。
  • 输入字段值的时候一定要注意输入字段值的顺序要和表中的字段顺序保持一致。


2.6 一次插入多行数据


insert into t_student(no,name,sex,classno,birth) values(3,'wangwu','1','gaosan3ban','2020-01-02'),(5,'zhouliu','0','gaosan2ban','2020-02-03');

微信截图_20220608094546.png

3. 表的复制以及批量插入


3.1 表的复制语法:


creat table 表名 as select语句;
将查询的结果常见出来。
复制代码


3.2 将整张表进行复制


第一步 : 创建一个新表并进行复制整张表的字段

create table emp1 as select * from emp;

第二步 : 查看表的结构

desc emp1;

微信截图_20220608094619.png

第三步 : 查看表中的数据

select * from emp1;

重点 : 此时发现 emp1 表的数据完全 copy的就是 emp 表的数据


3.3 对某张表的部分字段进行复制


第一步 : 创建一个新表并进行复制某张表的部分字段

create table emp2 as select ename,sal from emp;

第二步 : 查看表结构

desc emp2;

微信截图_20220608094652.png

第三步 : 查看表中的数据

select * from emp2;

微信截图_20220608094706.png

重点 : 此时的emp2表只是复制了 emp 表的ename,sal字段的数据。


3.4 将查询结果插入到一张表中


第一步 : 创建一个新表并进行复制

create table dept1 as select * from dept;

第二步 : 查询表的结构

desc dept1;

微信截图_20220608095956.png

第三步 : 查询表的数据

select * from dept1;

微信截图_20220608100016.png

第四步 : 向 dept1 中插入数据

insert into dept1  select * from dept;

第五步 : 查看表中的数据

select * from dept1;

微信截图_20220608100028.png

重点 :

  • 在创建表的时候复制的就是dept,其中已经有了一份dept的数据
  • 并且在插入数据的时候使用的还是dept表中的数据,所以此时dept1中的数据有两份


4. 修改数据 (update)


4.1 语法格式 :


update 表名 set 字段名1=值1,字段值2=值2...where 条件;
复制代码

注意 : 没有条件整张表数据全部更新。


4.2 实现案例 :将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU;


第一步 : 修改数据(loc字段和dname字段,只修改10部门的数据)

update dept1 set loc = 'SHANGHAI',dname = 'RENSHIBU' where deptno = 10;

第二步 : 查看数据

select * from dept1;

微信截图_20220608100313.png

重点 :语句意思,将10部门的loc改为SHANGHAI,dname改为RENSHIBU;

注意 :一定要注意连接两个字段的是英文下的逗号,而不是and


4.3 更新所有记录


第一步 :修改全部数据(修改loc字段和dname字段,全部部门都修改)

update dept1 set loc = 'x',dname = 'y';

第二步 : 查看数据

select * from dept1;

微信截图_20220608100408.png

5. 删除数据  (delete)


5.1 语法格式


delete from 表名 where 条件;
复制代码

注意 : 没有条件全部删除


5.2 实现案例 : 删除10部门数据


第一步 : 删除 10 部门的数据

delete from dept1 where deptno = 10;

第二步 : 查看数据

select * from dept1;

微信截图_20220608100443.png

5.3 删除所有数据


delete from dept1;


5.4 怎么删除大表(重点)


// 表被截断,不可回滚。永久丢失,删除表中的数据马,表结构还在

truncate table 表名;


5.5 删除整个大表,包括表结构和数据


drop table 表名; 通用的删除表语言 drop table if exists 表名; mysql中特有,oracle中不存在


6. 表的结构修改


  • DQL(select)
  • DML(insert delet update)
  • DDL(create drop alter)

修改表结构的语句不会出现在java代码中,出现在java代码当中的sql包括:insert、delete、update、select(这些都是表中的数据操作)

增删改查有一个术语 : CRUD操作

  • Creat (增)
  • Retrieve (检索)
  • Update (修改)
  • Delete (删除)


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 SQL 关系型数据库
MySQL语句详解:从基础到进阶的全面指南
MySQL语句详解:从基础到进阶的全面指南
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
SQL 关系型数据库 MySQL
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
存储 关系型数据库 MySQL
MySQL数据库开发进阶:精通数据库表的创建与管理22
【7月更文挑战第22天】数据库的创建与删除,数据表的创建与管理
140 1
|
JSON 关系型数据库 MySQL
MySQL常用函数解读:从基础到进阶的全方位指南
MySQL常用函数解读:从基础到进阶的全方位指南
|
SQL 关系型数据库 MySQL
Python进阶第二篇(Python与MySQL数据库)
Python进阶第二篇(Python与MySQL数据库)
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)

推荐镜像

更多