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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 【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



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
SQL 存储 关系型数据库
MySQL基础(一) 前置安装以及DDL详解
MySQL基础(一) 前置安装以及DDL详解
6 1
|
9天前
|
SQL 关系型数据库 MySQL
MySQL Online DDL原理解读
MySQL Online DDL原理解读
18 3
|
7天前
|
SQL 数据库
零基础学习数据库SQL语句之操作表中数据的DML语句
零基础学习数据库SQL语句之操作表中数据的DML语句
10 0
零基础学习数据库SQL语句之操作表中数据的DML语句
|
8天前
|
SQL 关系型数据库 MySQL
MySQL Online DDL(Data Definition Language)
MySQL Online DDL(Data Definition Language)
26 1
|
15天前
|
SQL 关系型数据库 MySQL
MYSQL————DDL方法使用(包含在数据库,以及具体数据库表格的一些操纵)
MYSQL————DDL方法使用(包含在数据库,以及具体数据库表格的一些操纵)
|
13天前
|
SQL 关系型数据库 MySQL
MySQL周内训参照2、DDL与DML语句
MySQL周内训参照2、DDL与DML语句
13 1
|
14天前
|
SQL 关系型数据库 MySQL
MySQL数据库子查询练习——DDL与DML语句(包括引入视频)
MySQL数据库子查询练习——DDL与DML语句(包括引入视频)
16 1
|
2天前
|
SQL 算法 关系型数据库
MySQL Online DDL详解:从历史演进到原理及使用
MySQL Online DDL详解:从历史演进到原理及使用
6 0
|
7天前
|
SQL 关系型数据库 MySQL
零基础学习数据库SQL语句之定义数据库对象的DDL语句
零基础学习数据库SQL语句之定义数据库对象的DDL语句
13 0
|
6月前
|
SQL 存储 关系型数据库
MySQL下使用SQL命令进行表结构与数据复制实践
MySQL下使用SQL命令进行表结构与数据复制实践
79 0