【MySQL】SQL语句之DDL、DML、DQL(下)

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

DDL之表操作:table

DDL(Data Definition Language) 本小结描述 对数据表的创建查看删除和使用。

创建表


  1. 基本格式:

6936bd9be0c248359a2447cd44c6f2c6.png

字段名 参数规定表中列的名称。


数据类型 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。


长度 参数规定表中列的最大长度。


更多数据类型见附录:


示例:


现在我们想要创建一个名为 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City。


我们使用下面的 CREATE TABLE 语句:

f28dfa99e6ce49d79d0f3514101911d1.png

PersonID 列的数据类型是 int,包含整数。


LastName、FirstName、Address 和 City 列的数据类型是 varchar,包含字符,且这些字段的最大长度为 255 个字符。

53e50bc3c45d4010851e1a5e8fdddc81.png

1.增强格式:


539e0c9231194db5aaf67fb0ee7c169e.png


SQL 约束用于规定表中的数据规则。


如果存在违反约束的数据行为,行为会被约束终止。


约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。


在 SQL 中,我们有如下约束:


  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。

在后面的章节,我们会讲解相关的约束。


查看表

查看数据库中的所有表:

格式:show tables;

  1. 查看表结构:

格式:desc 表名;

例如:desc sort;

删除表

  1. 格式:drop table 表名;

例如:drop table category;

修改表结构 格式:

  1. alter table 表名 add 列名 类型(长度) [约束];

作用:修改表添加列.

例如:

#1,为分类表添加一个新的字段desc为分类描述,类型是 varchar(20)


ALTER TABLE category ADD `desc` VARCHAR(20);


alter table 表名 modify 列名 类型(长度) [约束];

作用:修改表修改列的类型长度及约束.


例如:


#2, 为分类表的描述字段desc进行修改,类型varchar(50) 添加约束 not null


ALTER TABLE category MODIFY desc VARCHAR(50) NOT NULL;


  1. alter table 表名 change 旧列名 新列名 类型(长度) [约束];

作用:修改表修改列名.


例如:


#3, 为分类表的分类名称字段进行更换更换为 snamesname varchar(30)


ALTER TABLE category CHANGE desc description VARCHAR(30);


alter table 表名 drop 列名;

作用:修改表删除列.


例如:


#4, 删除分类表中snamename这列


ALTER TABLE category DROP description;


rename table 表名 to 新表名;

作用:修改表名


例如:


#5, 为分类表category改名成 category2


RENAME TABLE category TO category2;


alter table 表名 character set 字符集;

作用:修改表的字符集


例如:


#6, 为分类表 category 的编码表进行修改,修改成 gbk


ALTER TABLE category CHARACTER SET gbk;


DML数据操作语言

简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新

插入表记录:insert


  1. 语法:

-- 向表中插入某些字段


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


--向表中插入所有字段,字段的顺序为创建表时的顺序


insert into 表 values (值1,值2,值3..);


  1. 注意:

值与字段必须对应,个数相同,类型相同

值的数据大小必须在字段的长度范围内

除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)

如果要插入空值,可以不写字段,或者插入 null。


  1. 例如:

INSERT INTO category(cid,cname) VALUES('c001','电器');


INSERT INTO category(cid,cname) VALUES('c002','服饰');


INSERT INTO category(cid,cname) VALUES('c003','化妆品');


INSERT INTO category(cid,cname) VALUES('c004','书籍');


INSERT INTO category(cid) VALUES('c002');


INSERT INTO category(cname) VALUES('耗材');


更新表记录:update


用来修改指定条件的数据,将满足条件的记录指定列修改为指定值


  1. 语法:

--更新所有记录的指定字段


update 表名 set 字段名=值,字段名=值,...;


--更新符号条件记录的指定字段


update 表名 set 字段名=值,字段名=值,... where 条件;


  1. 注意:
  2. 列名的类型与修改的值要一致.
  3. 修改值得时候不能超过最大长度.

除了数值类型外,其它的字段类型的值必须使用引号引起


删除记录:delete


  1. 语法:

delete from 表名 [where 条件];


或者


truncate table 表名;


  1. 面试题:

删除表中所有记录使用delete from 表名; 还是用truncate table 表名;


删除方式:delete 一条一条删除,不清空auto_increment记录数。


truncate 直接将表删除,重新建表,auto_increment将重置,从1重新开始。


DQL数据查询语言


简称DQL(Data Query Language),用来查询数据库中表的记录


准备工作


#创建商品表:


CREATE TABLE product(


pid INT PRIMARY KEY,


pname VARCHAR(20),


price DOUBLE


);


INSERT INTO product(pid,pname,price) VALUES(1,'联想',5000);


INSERT INTO product(pid,pname,price ) VALUES(2,'海尔',3000);


INSERT INTO product(pid,pname,price ) VALUES(3,'雷神',5000);


INSERT INTO product(pid,pname,price ) VALUES(4,'JACK JONES',800);


INSERT INTO product(pid,pname,price ) VALUES(5,'真维斯',200);


INSERT INTO product(pid,pname,price ) VALUES(6,'花花公子',440);


INSERT INTO product(pid,pname,price ) VALUES(7,'劲霸',2000);


INSERT INTO product(pid,pname,price ) VALUES(8,'香奈儿',800);


INSERT INTO product(pid,pname,price ) VALUES(9,'相宜本草',200);


INSERT INTO product(pid,pname,price ) VALUES(10,'面霸',5);


INSERT INTO product(pid,pname,price ) VALUES(11,'好想你枣',56);


INSERT INTO product(pid,pname,price ) VALUES(12,'香飘飘奶茶',1);


INSERT INTO product(pid,pname,price ) VALUES(13,'果9',1);


语法:


select [distinct]

*| 列名,列名

from 表名字

where 条件


简单查询


1.查询所有的商品.


select * from 表名;


2.查询商品名和商品价格.


select 列名1,列名2 from 表名;


3.去掉重复值.


select distinct 列名 from 表名;


4.查询结果是表达式(运算查询):


select 列名 运算符 操作数 from product;


如 :


查询所有商品的价格显示时加10元.


5.别名查询使用的关键字是as(as可以省略的)


列别名:select 列名 as 别名 from 表名;


   表别名: select * from product as p;


1.查询所有的商品. select * from product;


2.查询商品名和商品价格. select pname,price from product;


3.别名查询.使用的关键字是as(as可以省略的).


  3.1表别名: select * from product as p;


  3.2列别名:select pname as pn from product;


4.去掉重复值. select distinct price  from product;


5.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示.


  select pname,price+10 from product;


条件查询


9eee0ee3a7594d78ab4b89f89feaafda.png

题干:


#查询商品名称为“花花公子”的商品所有信息:


#查询价格为800商品的全部信息


#查询价格不是800的所有商品的名字和价格


#查询商品价格大于60元的所有商品全部信息


#查询商品价格在200到1000之间所有商品的全部信息


#查询商品价格是200或800的所有商品的全部信息


#查询名字含有'想'字的所有商品的全部信息


#查询商品名字以'香'开头的所有商品的商品名和价格


#查询名字第二个字为'想'的所有商品的全部信息


# 查询商品价格为空的商品全部信息


# 查询商品价格不为空的商品全部信息


7d30c95d51834dbf803915672611f179.png



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
1月前
|
SQL 存储 缓存
浅析MySQL中的SQL执行过程
本文探讨了MySQL的体系结构、SQL执行流程及SQL执行时间分析方法。首先介绍了MySQL由连接层、SQL层和存储引擎层构成;接着详细描述了SQL从客户端发送到服务器执行的具体流程;最后,通过启用profiling功能,展示了如何分析SQL执行时间,并说明了MySQL 8.0版本后移除查询缓存的原因。
浅析MySQL中的SQL执行过程
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】根据binlog日志获取回滚sql的一个开发思路
【MySQL】根据binlog日志获取回滚sql的一个开发思路
|
2月前
|
SQL 存储 关系型数据库
【MySQL核心】MySQL 数据恢复-ibd2sql
【MySQL核心】MySQL 数据恢复-ibd2sql
|
2天前
|
SQL 关系型数据库 MySQL
|
28天前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
219 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
1天前
|
存储 SQL 关系型数据库
MySQL查询数据库锁表的SQL语句
MySQL查询数据库锁表的SQL语句
10 1
|
28天前
|
存储 关系型数据库 MySQL
MySQL高级篇——覆盖索引、前缀索引、索引下推、SQL优化、主键设计
覆盖索引、前缀索引、索引下推、SQL优化、EXISTS 和 IN 的区分、建议COUNT(*)或COUNT(1)、建议SELECT(字段)而不是SELECT(*)、LIMIT 1 对优化的影响、多使用COMMIT、主键设计、自增主键的缺点、淘宝订单号的主键设计、MySQL 8.0改造UUID为有序
MySQL高级篇——覆盖索引、前缀索引、索引下推、SQL优化、主键设计
|
20天前
|
SQL 缓存 关系型数据库
揭秘MySQL一条SQL语句的执行流程
以上步骤共同构成了MySQL处理SQL语句的完整流程,理解这一流程有助于更有效地使用MySQL数据库,优化查询性能,及时解决可能出现的性能瓶颈问题。
44 7
|
26天前
|
SQL 监控 关系型数据库
MySQL数据库中如何检查一条SQL语句是否被回滚
检查MySQL中的SQL语句是否被回滚需要综合使用日志分析、事务状态监控和事务控制语句。理解和应用这些工具和命令,可以有效地管理和验证数据库事务的执行情况,确保数据的一致性和系统的稳定性。此外,熟悉事务的ACID属性和正确设置事务隔离级别对于预防数据问题和解决事务冲突同样重要。
35 2