Mysql基本语法DML和DQL语句的总结(笔记)
Mysql基本语法DML和DQL语句的总结(笔记)
文章目录
- Mysql基本语法DML和DQL语句的总结(笔记)
- 1.DML语句之插入
- 2.DML语句之修改表记录
- 语法1:带条件修改
- 语法2:带条件修改,一次性修改多个字段
- 语法3:不带条件 属于批量修改 (部分场景可以用的)
- 3.DML语句之删除表的记录
- 4.DQL语句最通用的语法:查询表的全部数据
- 5.DQL语句之数据库的查询语句.里面语法是最多的
- 5.1 最基本的查询语句 select
- 5.2 DQL语句之条件查询 where 关键字
- 5.3 DQL语句之 where条件后面加入模糊查询 ---关键字 like
- 5.4 聚合函数查询 :针对int类型 :单行单列数据
DML语句简介:数据库操作语句
准备工作:首先创建库test_dml,在test_dml库中创建一个student表其中有id,姓名,年龄,性别,住址这些字段.
CREATE DATABASE test_mdl;
USE test_mdl;
CREATE TABLE student(id INT , -- 学号NAME VARCHAR(10), -- 姓名age INT, -- 年龄gender VARCHAR(5), -- 性别address VARCHAR(50) -- 住址
);
-- 查看表的信息
SELECT * FROM student;
运行结果
1.DML语句之插入
给学生表中插入数据
语法
方式1:insert into 表名 values(值1,值2,值3,值4...值n); 插入全部数据
方式2:插入部分字段,没有插入的字段,默认值就是null, 也支持一次性插入多条数据insert into 表名(字段名称1,字段名称2....) values(值1,值2...) ;
代码:
-- 方式1
INSERT INTO student VALUES(1,'高圆圆',42,'女','西安市');-- 插入表的数据支持 :一次插入多条数据-- insert into 表名 values(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n);
INSERT INTO student VALUES(2,'文章',35,'男','咸阳市'),
(3,'马伊琍',40,'女','上海市'),(4,'马保国',56,'男','宝鸡市');-- 方式2
-- 插入部分字段,没有插入的字段,默认值就是null 这里没有插入address字段
INSERT INTO student(id,NAME,age,gender) VALUES(5,'王宝强',35,'男');
-- 也支持一次性插入多条数据 这里没有插入address字段
INSERT INTO student(id,NAME,age,gender) VALUES(6,'张三丰',60,'男'),(7,'令狐冲',38,'男');-- 查看表的信息
SELECT * FROM student;
运行结果:
注意事项:
1)插入的这些值必须要和表中的字段对应上; 先后顺序保证一致!
2)目前没有加入"数据库约束",可以插入非法数据,举例:id重复 ,后期需要使用数据库约束来限定用户的操作表的行为!
举例:
-- 插入一个学生id为7的
INSERT INTO student VALUES(7,'张佳宁',32,'女','西安市');
-- 查看表的信息
SELECT * FROM student;
运行结果:
2.DML语句之修改表记录
一般实际开发中修改:都是带条件修改 (推荐)
语法1:带条件修改
update 表名 set 字段名称 = 值 where 条件 ;
举例:
-- 需求:将name为张佳宁的学生id改为8
UPDATE student SET id = 8 WHERE NAME = '张佳宁';
-- 需求:修改id为6的学生的姓名为 '姚笛' (id字段在实际开发中:都是非业务字段,以后唯一的)
UPDATE student SET NAME = '姚笛' WHERE id = 6;
-- 查看表的信息
SELECT * FROM student;
运行结果:
语法2:带条件修改,一次性修改多个字段
update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件;
举例:
-- 需求:将id为6的学生 的年龄改为25,性别改为女,地址改为上海
UPDATE student SET age = 25,gender = '女',address= '上海市' WHERE id = 6;
-- 查看表的信息
SELECT * FROM student;
运行结果:
语法3:不带条件 属于批量修改 (部分场景可以用的)
update 表名 set 字段名称= 值,字段名称2 =值2....
代码举例:
-- 需求:将address全部改为鄠邑区
UPDATE student SET address = '鄠邑区';
-- 查看表的信息
SELECT * FROM student;
运行结果:
3.DML语句之删除表的记录
语法
delete from 表名 where 条件 ; 带条件删除记录 (使用的非业务字段id删除)
代码举例:
-- 需求:删除id为7的学生信息
DELETE FROM student WHERE id = 7;
-- 查看表的信息
SELECT * FROM student;
运行结果:
删除全表数据方式1:delete from 表名 :删除全表数据方式2:truncate table 表名; 删除全表数据
delete from 表名 和 truncate table 表名 :两个区别?
共同点:都是可以删除全表的记录的;
不同点:
delete from 表名 ; 仅仅只是将表的全部记录删除了,表还在!
它针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; (数据库约束后面讲)
truncat table 表名; 将表所有数据删除,而且还会把删除之后,
自动创建一个张一模一样的表,影响自增主键的值!
举例:
先删除之前的学生表;
创建一个学生表,对id字段加入主键(不断的自增1)进行约束
代码:
-- 删除之前的学生表;
DROP TABLE student;
-- 创建一个学生表,id 加入主键(非空且唯一)和自增长(不断的自增1)约束
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT, -- id主键并且自增长NAME VARCHAR(20),-- 姓名age INT
);
-- 一次插入4条
INSERT INTO student(NAME,age) VALUES('高圆圆',42),('张佳宁',32),('文章',35),('王宝强',38);
-- 查看表的信息
SELECT * FROM student;
运行结果:
自增长的id可以自己给个值
代码;
-- 添加一个id为15的
INSERT INTO student VALUES(15,'高圆圆2',42);
-- 添加一个没有id的 id会自动改为16
INSERT INTO student(NAME,age) VALUES('姚笛',35);
-- 查看表的信息
SELECT * FROM student;
运行结果:
4.DQL语句最通用的语法:查询表的全部数据
*代表所有字段,仅仅是自己玩的时候可以用,实际开发中不能用*,需要写上全部的字段名称
SELECT * FROM student ;
创建一个student3表,添加id,NAME,age,sex,address,math,english字段,添加8个实例
代码:
CREATE TABLE student3 ( id INT, -- 编号NAME VARCHAR(20), -- 姓名age INT, -- 年龄 sex VARCHAR(5), -- 性别 address VARCHAR(100), -- 地址 math INT, -- 数学english INT -- 英语);INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'马云',55,'男',' 杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳岩 ',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港 ',99,99),(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);
-- 查看表的信息
SELECT * FROM student3;
运行结果:
5.DQL语句之数据库的查询语句.里面语法是最多的
5.1 最基本的查询语句 select
查询全表数据:select * from 表名;
SELECT * FROM student3 ;
实际开发中查询全部字段,把字段名称全部写上
代码举例:
SELECT id,NAME,age,sex,address,math,english
FROM student3;
运行结果和上边的效果一样,只是写法不同
查询全部字段的时候,给字段起一个别名 as ‘别名名称’ ,as省略
代码:
SELECT id AS '编号',NAME AS '姓名',age AS '年龄',sex AS '性别',address '地址', -- as 可以省略math '数学成绩', -- as 可以省略english '英语成绩' -- as 可以省略
FROMstudent3;
运行结果:
-- 当表的名称比较长的时候,可以给表名起一个别名;
SELECT s.`id` '学生编号',s.`name` '学生姓名',s.`age` '学生年龄',s.`sex` '学生性别',s.`address` '学生地址',s.`math` '数学成绩',s.`english` '英语成绩'
FROMstudent3 s;-- 起了一个别名s
运行结果:
可以查询部分字段
代码:
-- 需求:查询学生的姓名以及数学和英语成绩SELECT NAME '姓名',math '数学成绩',english '英语成绩'FROMstudent3;
运行结果:
代码:
-- 需求:查询学生的地址信息
SELECT address
FROM student3;
运行结果:
上图:有两个湖南和两个香港
字段冗余(重复度大)
字段去重 使用 DISTINCT 后面跟上字段名称
代码:
SELECT DISTINCT address FROM student3;
运行结果:
5.2 DQL语句之条件查询 where 关键字
- 使用 赋值运算符=,比较运算符 <,<=,>=,>,!=, mysql中的不等于 <>
- Java中逻辑运算符:&&,|| mysql推荐使用 and , or
- 针对两个范围查询: 可以使用&&,可以使用and, 也可以 “字段名称 between 值1 and 值2”
-- 需求:查询年龄大于20岁的学生所有信息
SELECT*
FROMstudent3
WHERE age > 20;
运行结果:
-- 需求:查询年龄在20到30之间的学生的姓名,年龄,住址 ,数学和英语成绩信息-- 方式1:&& 逻辑双与
SELECT NAME '姓名',age '年龄',address '住址',math '数学成绩',english '英语成绩'
FROMstudent3
WHERE age >= 20 && age <= 30; -- && 逻辑双与-- 方式2:mysql中使用and 并列关系
SELECT NAME '姓名',age '年龄',address '住址',math '数学成绩',english '英语成绩'
FROMstudent3
WHERE age >= 20 AND age <= 30; -- and 连接-- 方式3:使用的between 值1 and 值2
SELECTNAME '姓名',age '年龄',address '住址',math '数学成绩',english '英语成绩'
FROMstudent3
WHERE age BETWEEN 20 AND 30; -- between 值1 and 值2
运行结果:
三种方式运行结果相同
代码:
-- 需求:查询年龄是20岁学生的所有信息
SELECT * FROM student3 WHERE age = 20;
运行结果:
代码:
-- 需求:查询年龄不是20岁的学生的所有信息-- 方式1:
SELECT * FROM student3 WHERE age != 20; -- != Java中 的用法-- 方式2:
SELECT * FROM student3 WHERE age <> 20;-- mysql中的不等于 <>
运行结果:
两种方式运行结果相同
代码:
-- 需求:查询年龄是18岁或者是20或者是45岁的学生的所有信息-- 方式1:Java中逻辑双或||
SELECT *
FROM student3
WHERE age = 18 || age =20 || age = 45; -- Java中逻辑双或||-- 方式2:or
SELECT *
FROM student3
WHERE age = 18 OR age =20 OR age = 45; -- Mysql中的or这个表示 或(并集)-- 方式3:上面这个格式优化为 in(值1,值2,值3..值n);in集合语句
SELECT *
FROMstudent3
WHERE age IN(18,20,45);-- in集合语句
运行结果:
三种方式运行结果相同
Java语言中:去判断某个条件的内容为null ,mysql语言不支持这个格式 ==null
代码举例:
-- 需求:查询学生的英语成绩为null的学生所有信息
-- 执行下边这行语句会报错
select * from student3 where english == null;
运行结果:
正确语法:
mysql中判断某个字段为null,使用的语法是 is null
mysql中判断某个字段不为null,使用的语法是 is not null
正确代码:
-- 需求:查询学生的英语成绩为null的学生所有信息
SELECT * FROM student3 WHERE english IS NULL;
运行结果:
代码:
-- 需求:查询学生的英语成绩不为null的学生的所有信息
SELECT * FROM student3 WHERE english IS NOT NULL;
运行结果:
关于int类型字段求和的时候,注意: int类型的值 + null 值 = null;
-- 需求:查询学生的姓名以及英语和数学总分
SELECT NAME '姓名',(math+english) '总分'
FROMstudent3;
运行结果:
上面这种情况:不太友好,数学成绩有值,但是结果求和是null
mysql提供函数 ifnull(字段名称,值); 如果字段名称是null,给一个默认值
代码:
SELECT NAME '姓名',(math+IFNULL(english,0)) '总分'
FROMstudent3;
运行结果:
5.3 DQL语句之 where条件后面加入模糊查询 —关键字 like
语法:
select 字段列表 from 表名 where 字段名称 like ‘%xxx%’ ;
解释:
%:代表任何多个字符或者某个字符 (使用居多):网站门户系统—“搜索商品” ,模糊搜索
_:代表某个单个字符
代码:
-- 需求:查询所有姓马的学生信息
SELECT*
FROMstudent3
WHERE NAME LIKE '%马%';
运行结果:
代码:
-- 查询学生姓名三个字符并且第二个字符是化的人
SELECT *
FROM student3
WHERE NAME LIKE '_化_';
运行结果:
代码:
-- 查询姓名为三个字符的学生信息
SELECT *
FROM student3
WHERE NAME LIKE '___' ;-- 这里是三个_
运行结果:
5.4 聚合函数查询 :针对int类型 :单行单列数据
格式:
select 聚合函数 from 表名 where 还可以指定条件;
- count(字段名称):查询表中记录 ,字段名称使用都是id,非业务字段
- avg(字段名称): 查询这个字段中平均值
- sum(字段列表):求和函数
- max(字段名称):最大值
- min(字段名称):最小值
代码:
-- 需求:查询表的总记录数
-- select count(english) '总记录数' from student3; -- 前提条件使用业务字段查询,不能有null值
-- select count(ifnull(english,0)) '总记录数' from student3;
SELECT COUNT(id) '总条数' FROM student3;
运行结果:
代码:
-- 查询数学平均分 avg(字段名称)
SELECT AVG(math) '数学平均分' FROM student3;
运行结果:
代码:
-- 数学和英语成绩求和的学生信息(姓名,和总分)
SELECT SUM(math+IFNULL(english,0)) '总分'
FROMstudent3;
运行结果:
代码:
-- max()和min()
SELECT MAX(math) '数学最高分' FROM student3;
运行结果:
select语句嵌套select语句 — 子查询
代码:
-- 需求:查询出学生数学成绩大于 数学平均分的学生所有信息;
-- 使用where 条件 后面带上 比较运算符...-- 1)查询数学平均分是多少
SELECT AVG(math) FROM student3; -- 79.5000
-- 2)查询大于数学平均分的学生信息
SELECT *
FROM student3
WHERE math > 79.5000;
-- ----------------------------
-- 嵌套方式:
SELECT *
FROM student3
WHERE math > (SELECT AVG(math) FROM student3);
运行结果:
代码:
-- 查询数学成绩最高分的学生的姓名,年龄,地址以及数学成绩;
-- 1)查询最高分是多少
SELECT MAX(math) FROM student3; -- 99
-- 2)查询最高分是这个成绩的学生信息
SELECT NAME '姓名',age '年龄',address '地址',math '数学成绩'
FROM student3 WHERE math = 99;
-- ---------------------------
-- 嵌套方式
SELECT NAME '姓名',age '年龄',address '地址',math '数学成绩'
FROM student3 WHERE math = (SELECT MAX(math) FROM student3);
运行结果:
Mysql基本语法DML和DQL语句的总结(笔记)相关推荐
- mysql基础之DML、DQL语句
课程笔记Day25 DDL语句 DML语句 DQL语句 第一章 DDL语句 第01节 操作数据库 1.创建数据库 简单的创建语法 -- 语法格式: CREATE DATABASE 数据库的名称;-- ...
- 在mysql数据库中DDL_Mysql 数据库操作之DDL、DML、DQL语句操作
Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l Show databases 查看数据库列表信息 l 查看数据库中的数据表信息 ,格式: use 数据库名: sh ...
- MySQL——DDL、DML、DQL、DCL语法总结
文章目录 通用语法及分类 一.DDL(数据定义语言) 1. 数据库操作 2. 表操作 二.DML(数据操作语言) 1. 添加数据 注意事项 2.删除数据 3.修改数据 注意事项 三.DQL(数据查询语 ...
- 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集
文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...
- MySQL基础语法(详细版)
文章目录 1.数据库的介绍 1.1 数据库概念 1.1.1 数据的存储方式 1.1.2 什么是数据库 2.数据库的安装与卸载 2.1数据库的安装 2.2数据库的卸载 3.数据库服务的启动与登录 3.1 ...
- MySql的初识感悟,以及sql语句中的DDL和DML和DQL的基本语法
花了将近一周的时间学习了数据库的基本用法,今天总结一下. 一.一些感悟 数据库的定义:数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.可 ...
- dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL
本篇文章来回顾一下MySQL的基本操作之DDL,DML,DQL,DCL,每种操作都有各自不同的语法,常用的操作汇总如下. 一.DDL-数据定义语言 作用:数据定义语言主要用来定义数据库中的各类对象,包 ...
- MySQL基础——DDL、DML、DQL、DCL语句
当成功安装数据库之后,对于数据库进行的简单且基础的操作 打开数据库操作 1.在运行中输入services.msc 会打开如下界面 可以选择对MySQL进行开启或者关闭 2.也可以使用命令指示符 命令提 ...
- MySQL的DDL、DML和DQL的基本语法
定义: SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一 种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统 ...
最新文章
- mount --bind
- ftp 信息服务器日常维护,Web Ftp Mail服务器的日常管理与维护
- 微信小程序 html css xml,微信小程序 使用towxml解析html流程及踩坑记录
- C语言:函数中参数的传值与传地址
- JSON字符串和对象 的转换
- sourceTree添加git密钥步骤
- 怎么使用Docker搭建PHP开发环境呢?
- PoseCNN代码复现CMake编译找不到math_functions.hpp
- delphi学习路线
- windows设置开机启动项
- WeX5和BeX5比较
- 电商推荐系统论文:基于Spark机器学习的电商推荐系统的设计与实现,大数据电商推荐系统毕设论文,Spring MLlib电商推荐系统
- FC冒险岛java版_FC冒险岛全关卡版
- win11电脑摄像头打不开,如下图
- QuickTime Player安装Soundflower插件实现完整录屏功能
- 额,我要说一件重要的事+用C++编写一个走迷宫小游戏(1.1版)
- macOs Ventura 13自动开机关机设置教程(命令行)
- MPB:青岛大学苏晓泉组分享基于分类学和系统发育的宏基因组比较DMS算法
- C语言的从零开始和我自己的心路历程
- AI时代-人工智能入学指南
热门文章
- 如何去除视频内的字幕和台词?最新4种方法汇总
- 买了诺基亚又不待见他,微软图啥?
- 人在职场身不由己,请收敛自己的气
- 安卓自动点击软件 开维控制精灵
- 微信小程序 |做一款跟ChatGPT下五指棋的小程序
- 牛逼!下一代 Docker 镜像构建神器
- php中for循环菱形,PHP练习--用for循环打印空心菱形,for菱形_PHP教程
- 器:ubnutu系统完美克隆至新硬盘,系统备份迁移至新硬盘(机器)
- 【Oracle健康检查脚本加量不加价】对Oracle 10g、11g和12c版本分别提供了只读版,并且加上了MySQL的健康检查...
- 蛇打七寸,开源ERP携掌融宝再次出击