【MySQL篇】SQL之DDL、DML、DQL语言

一、DDL:数据定义语言

--  操作数据库、表等 CREATE\ALTER\DROP\RENAME\TRUNCATE

1. DDL——操作数据库

创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名称;
查看数据库
SHOW DATABASES;
使用数据库
USE 数据库名称;
删除数据库
DROP DATABASE [IF EXISTS] 数据库名称;

2 DDL——操作表

  • 创建(Create)
  • 查询(Retrieve)
  • 修改(Update)
  • 删除(Delete)
2.1 查询表
查询表结构
DESC 表名称;
查询所有表名称
SHOW TABLES;
2.2 创建表

基本语法:

CREATE TABLE 表名 (
	字段名1  数据类型1,
	字段名2  数据类型2,
	…
	字段名n  数据类型n
);

示例:

--学号, 姓名,登录密码 varchar(20),性别,出生日期(datetime),家庭住址,邮箱
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(20) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY(`id`) 	
) CHARSET=utf8

注意点:

  • 括号要使用英文的(),表的名称和字段尽量使用反引号``括起来
  • 括号内的所有语句都要加英文的逗号,除了最后一句
  • primary key,主键,一般一张表只会有一个,最好写在最后面!
  • default、comment后面都是使用单引号!
2.3 修改表
修改表名
alter table 原表名 rename to 新表名;
新增一列
alter table 数据表名
add 新字段名 字段类型 [after|before 字段名];
新增多列
alter table 数据表名
add (新字段名1 字段类型1 ,字段名2 数据类型2,...);
删除列
alter table 表名 drop 列名;
修改列数据类型
alter table 表名 modify 列名  新数据类型;
修改列名和数据类型
alter table 表名 change 列名  新列名  数据类型;
2.4 删除表
删除表
DROP TABLE IF EXISTS 表名;
清空表
--完全清空一个数据表,表的结构和索引约束不会变!
TRUNCATE TABLE student;

二、DML:数据操作语言(重点)

对表中的数据进行增删改

  • insert
  • update
  • delete

1. 添加数据

给全部列添加数据
INSERT INTO 表名 VALUES(1,2,);
给指定列添加数据
INSERT INTO 表名(列名1,列名2,) VALUES(1,2,);
批量添加数据
INSERT INTO 表名(列名1,列名2,) VALUES(1,2,),(1,2,),(1,2,);

INSERT INTO 表名 VALUES(1,2,),(1,2,),(1,2,);

2. 修改数据

UPDATE 表名 
SET 列名1=1,列名2=2,[WHERE 条件];

3. 删除数据

DELETE FROM 表名 
[WHERE 条件];

三、DQL:数据查询语言(最重点)

1.查询语法

SELECT (必须有)(顺序5)    
字段列表
FROM (必须有)(顺序1)
    表名列表  
WHERE (可选)(顺序2)
    条件列表
GROUP BY (可选)(顺序3) 
    分组字段
HAVING (可选)(顺序4) 
    分组后条件
ORDER BY (可选)(顺序6) 
    排序字段
LIMIT (可选)(顺序7) 
    分页限定

2. 基础查询

去重
SELECT DISTINCT 字段列表 
FROM 表名;
起别名
-- 使用as关键字 as可以省略
select 字段名 as 别名 
from 表名;

-- 也可以使用CONCAT函数来设置别名
SELECT CONCAT('出生于:',address) AS 出生地 FROM student

3. 条件查询

条件解释
符号功能
<> 或 !=不等于
between…and…在某个范围之内(两头都包含)
in(…)多选一
is null是null
is not null不是null
like模糊查询
模糊查询

% : 填充符,它能表示任何长度的字符串,字符串的长度可以为0

_: 占位符,它只能代表单个字符,字符的长度不能为0

SQL解释
LIKE ‘AB%’返回以 “AB” 开始的任意字符串
LIKE ‘%AB’返回以 “AB” 结束的任意字符串
LIKE ‘%abc%’返回包含 “abc” 的任意字符串
LIKE ‘_bc’返回以 “bc” 结束的三个字符的任意字符

4. 排序查询

SELECT 字段列表 FROM 表名
ORDER BY 字段名1 [ASC|DESC],字段名2 [ASC|DESC]...

在上述语法中,ASC表示升序,DESC表示降序。ORDER BY默认值是降序

5. 分组查询

聚合函数
SELECT 聚合函数名(列名) FROM;
函数名称作用
MAX查询指定列的最大值
MIN查询指定列的最小值
COUNT统计查询结果的行数
SUM求和,返回指定列的总和
AVG求平均值,返回指定列数据的平均值

null值不参与所有聚合函数运算

分组查询
SELECT 字段列表 
FROM 表名 
[WHERE 分组前条件限定] 
GROUP BY 分组字段名 
[HAVING 分组后条件过滤];

注意:

  • 分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
  • where 和 having 区别
    • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
    • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以
  • 执行顺序: where > 聚合函数 > having

6. 分页查询

SELECT 字段列表 FROM 表名 LIMIT  起始索引,查询条目数;

计算公式:起始索引 = (当前页码-1) * 每页显示的条数,注意 ,起始索引从0开始。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Steph Wae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值