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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【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
相关文章
|
25天前
|
SQL 关系型数据库 MySQL
|
1月前
|
SQL 运维 关系型数据库
MySQL 运维 SQL 备忘
MySQL 运维 SQL 备忘录
47 1
|
1月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
197 1
|
26天前
|
SQL 关系型数据库 MySQL
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
MySql5.6版本开启慢SQL功能-本次采用永久生效方式
36 0
|
26天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
31 0
|
1月前
|
SQL 存储 关系型数据库
mysql 数据库空间统计sql
mysql 数据库空间统计sql
47 0
|
1月前
|
SQL 存储 关系型数据库
mysql SQL必知语法
本文详细介绍了MySQLSQL的基本语法,包括SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等关键字的使用,以及数据库操作如创建、删除表,数据类型,插入、查询、过滤、排序、连接和汇总数据的方法。通过学习这些内容,读者将能更好地管理和操
20 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
87 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
40 0
|
3月前
|
SQL 关系型数据库 数据库
下一篇
无影云桌面