MySQL的DDL、DML和DQL的基本语法
定义:
SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一 种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名
SQL语句分类
一、DDL
1、显示所有库
SHOW DATABASES;
2、创建一个库 CREATE DATABASE 库名;库只能被创建一次
3、删除一个库 DROP DATABASE 库名;
4、使用库 USE 库名;
5、改变字段属性
-- ALTER TABLE 表名 MODIFY 字段名 属性
ALTER TABLE teacher MODIFY money DECIMAL(11,2);
6、修改字段名
-- ALTER TABLE 表名 CHANGE 字段名 新字段名 属性
ALTER TABLE student CHANGE birthday shengri DATE;
7、添加字段
-- ALTER TABLE 表名 ADD 字段名 属性
ALTER TABLE teacher ADD address VARCHAR(30) DEFAULT '陕西';
8、删除字段
-- ALTER TABLE 表名 DROP 字段名;
删除一个字段
ALTER TABLE teacher DROP telephone;
9、修改表名
-- ALTER table 表名 RENAME AS 新表名;
二、DML
1、新增
INSERT INTO 表名 (字段名1,字段名2……)VALUES(值1,值2……);
&--- INSERT INTO teacher(name,sex,birthday,money,cid)VALUES
('王老大','男','2001-02-02',10000.00,001),('杨老二','男','2003-03-03',88888.00,002);
2、修改
UPDATE 表名 SET 字段名=值,字段名=值 WHERE [子句]
&--- UPDATE student SET name = '杰克逊' WHERE birthday = '2004-04-09';
&--- 在一定范围内写修改语句
UPDATE student SET ssex='女' ,classid = 9 WHERE Sid>= 9 AND Sid <=13;
&--- 等价语句 小数据在前,大数据在后
UPDATE student SET ssex='男' ,classid = 9 WHERE Sid BETWEEN 9 AND 13;
3、删除
&--- delete from teacher WHERE name ='周老十';
DELETE FROM student WHERE birthday = '1990-10-01';
三、DQL
1、SELECT * FROM student;-- (全查)
2、SELECT * FROM student WHERE classid = 1;-- (查找classid是1的人员)
3、-- 根据选择字段查询
SELECT sname,ssex FROM student;
4、-- 给字段起别名(3种方式—— as\''\直接放别名)
-- 一旦起别名了,字段名就是别名
SELECT sname AS '姓名',birthday '生日',ssex 性别 FROM student;
5、-- DISTINCT 去除重复(字段中完全相同的去掉)
SELECT DISTINCT Ssex FROM student;
SELECT DISTINCT ssex,classid FROM student;
6、-- 带条件的查询语句 WHERE
SELECT * FROM student WHERE ssex = '男';
SELECT * FROM student WHERE ssex = '男' AND classid = 1;
7、-- 生日大于1991.01.01的学生
SELECT * FROM student WHERE birthday < '1991-01-01';
8、模糊查询 LIKE
8.1 -- 模糊符号 % 任意多的任意字符
SELECT * FROM student WHERE Sname LIKE '%猴%';
8.2 -- 后模糊 xx%,结果是以xx开头的数据
SELECT * FROM student WHERE Sname LIKE '猴%';
8.3 -- 前模糊 %xx,结果是以xx结尾的数据
SELECT * FROM student WHERE Sname LIKE '%猴';
9、-- IN 在哪个范围内
SELECT * FROM student WHERE Sid IN(2,5,6,7,8,15);
10、-- 没有生日的学生 关键词 IS,不能是null
SELECT * FROM student WHERE birthday IS NULL;
SELECT * FROM student WHERE birthday IS NOT NULL;
11、聚合函数
count(字段) 统计个数,COUNT 不统计null
-- 统计表里一共有多少学生
SELECT COUNT(*) FROM student;
-- 统计表里一共有多少女同学
SELECT COUNT(*) FROM student WHERE Ssex = '女';
-- 可以使用常量去统计
SELECT COUNT(1) FROM student WHERE Ssex = '女';
SELECT COUNT('aaa') FROM student WHERE Ssex = '女';
-- 可以使用主键统计
SELECT COUNT(Sid) FROM student WHERE Ssex = '女';
avg (平均分)
-- 统计所有学生的平均分
SELECT AVG(score) FROM sc;
sum(总数)
-- 所有学生的总成绩
SELECT SUM(score) FROM sc;
max(最高分)
-- 最高成绩
SELECT MAX(score) FROM sc;
min(最低分)
-- 最低成绩
SELECT MIN(Score) FROM sc;
12、分组
-- 按照性别分组,男有多少,女有多少
SELECT ssex, COUNT(*) FROM student GROUP BY Ssex;
-- 每个班有多少学生
SELECT classid,COUNT(*)FROM student GROUP BY classid;
-- 总成绩
SELECT Sid,SUM(score) 总分 FROM sc GROUP BY Sid;
-- 分类合计
SELECT Sid,SUM(score) 总分 ,AVG(score) 平均分,MAX(Score) 最高分,MIN(Score) 最低分,COUNT(Score) 次数 FROM sc GROUP BY Sid;
13、 HAVING 数据聚合之后的分组;HAVING 不能单独出现,必须要和 GROUP BY 一起出现
-- 平均分大于80分的
SELECT sid,AVG(score) FROM sc GROUP BY Sid
HAVING AVG(Score)>80;
14、排序 ORDER BY 升序asc\降序desc
-- 成绩降序(由高到低)
SELECT * FROM sc ORDER BY Score DESC; 15、LIMIT 做分页
分页公式 (页码——1)*步长,步长,写的是确定值,不是表达式
SELECT * FROM student LIMIT 4,4;
16、多表联查
-- 非等值联查 迪卡尔积(两个集合相乘的结果) from之后多张表表名
SELECT * FROM student,class;
-- 内联查询
SELECT * FROM student INNER JOIN class ON student.classid=class.classid;
-- 1、先执行虚拟表,第一张的查询结果,作为最大的基础数据表;2、链接class表,复制了之前虚拟表的,进行条件判断拼数据。虚拟表最大结果集是最大表的个数。
-- 2、等值查询,内联查询的选择场景使用。表的数量多、字段名较多。数据量小,表非常多的时候使用等值联查。
内联多张表
-- 查询上过李四老师课程的学生;where写条件
SELECT student.* FROM student INNER JOIN sc ON student.Sid=sc.Sid INNER JOIN course ON sc.Cid=course.Cid INNER JOIN teacher ON course.Tid=teacher.Tid WHERE Tname='李四';
-- 外联查询 做外联查询,主要查询什么。主表在join的左边,称之为左外联。右外联亦是如此。
-- LEFT JOIN 左外联 主表是student
SELECT * FROM student LEFT JOIN class ON student.classid=class.classid;
-- RIGHT JOIN 右外联 主表是class
SELECT * FROM student RIGHT JOIN class ON student.classid=class.classid ORDER BY Sid;
UNION 上下两个结果并成一个虚拟表;union和数据类型无关;union并列的时候,上下两个表之间的字段名数量要一致;union去重复
SELECT * FROM student LEFT JOIN class ON student.classid=class.classid WHERE class.classid=NULL
UNION
SELECT * FROM student RIGHT JOIN class ON student.classid=class.classid WHERE student.Sid=NULL;
17、WHERE 子查询
使用where子查询实现 -- 子查询必须要有小括号;结果以主句为主,副句是条件。
查询id最大的一个学生
SELECT * FROM student WHERE Sid=(SELECT MAX(Sid) FROM student);
18、FROM 子查询
查询大于3人的班级名称和人数
SELECT classname,a 人数 FROM class LEFT JOIN
(SELECT classid,COUNT(*) a FROM student GROUP BY classid) t1
ON class.classid=t1.classid WHERE a > 3;
19、控制sql语句
IF(expr1,case,expr3)
SELECT tid,tname,IF(tsex=1,'男','女'),tbirthday FROM teacher;
case、when、then、end语句
-- 第一种,简单case(常量)
SELECT tname,tbirthday,
CASE tsex
WHEN 1 THEN '男'
WHEN 0 THEN '女'
END 性别,
taddress FROM teacher;
-- 第二种,搜索case
查询学生的成绩,
-- 并将大于90分的用A显示,
-- 大于80分的用B显示,
-- 大于70分的用C显示,
-- 大于60分的用D显示,
-- 小于60分的显示不及格
------------------------------------------------语法------------------------------------------
SELECT sname,cname,
CASE
WHEN score>=90 THEN 'A'
WHEN score>=80 AND score <90 THEN 'B'
WHEN score>=70 AND score <80 THEN 'C'
WHEN score>=60 AND score <70 THEN 'D'
WHEN score<60 THEN '不及格'
END 成绩评分
FROM student LEFT JOIN sc on student.sid=sc.sid
LEFT JOIN course ON sc.Cid = course.Cid ORDER BY 成绩评分;
以上便是MySQL中DDL、DML、DQL的使用和实例解析,牢记“增删改查”。
MySQL的DDL、DML和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 客户端:命令行 ...
- dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL
本篇文章来回顾一下MySQL的基本操作之DDL,DML,DQL,DCL,每种操作都有各自不同的语法,常用的操作汇总如下. 一.DDL-数据定义语言 作用:数据定义语言主要用来定义数据库中的各类对象,包 ...
- MySQL 的DDL DML DQL DCL细节解析 知道这些就够了
SQL语言一共分为4大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL 1.数据定义语言DDL(Data Definition Language) 对象: 数据库和表 ...
- MySql的初识感悟,以及sql语句中的DDL和DML和DQL的基本语法
花了将近一周的时间学习了数据库的基本用法,今天总结一下. 一.一些感悟 数据库的定义:数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.可 ...
- mysql基础之DML、DQL语句
课程笔记Day25 DDL语句 DML语句 DQL语句 第一章 DDL语句 第01节 操作数据库 1.创建数据库 简单的创建语法 -- 语法格式: CREATE DATABASE 数据库的名称;-- ...
- 数据库MySQL基础---DDL/DML/DQL
MySQL基础 数据库简介 数据库是"按照数据结构来组织.存储和管理数据的仓库".是一个长期存储在计算机内的.有组织的.可共享的.统一管理的大量数据的集合. 与数据库相关的概念数据 ...
- Mysql的DDL DML DQL DCL
m代表长度(1-65) d代表保留少数位(0-30) 整数型 tinyint(m)1字节 取值范围(-128-+127) int(m)4字节 取值范围(大概20几亿) 浮点型 double(m,d)8 ...
- MySQL的 DDL和DML和DQL的基本语法
前言 SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统,同时 ...
- MySQL——DDL、DML、DQL、DCL语法总结
文章目录 通用语法及分类 一.DDL(数据定义语言) 1. 数据库操作 2. 表操作 二.DML(数据操作语言) 1. 添加数据 注意事项 2.删除数据 3.修改数据 注意事项 三.DQL(数据查询语 ...
最新文章
- Java关键字this、super使用总结
- 电脑文档提示无法连接服务器,提示无法将数据库连接到SQL服务器-工业支持中心-西门子中国...
- 每天学点Python之collections
- jeecg中excel导出字段判空处理
- 华为应用市场AppGallery Connect研习社·直播:百万开发者打造优质应用的奥秘
- [科研论文]基于W7100的以太网读卡器的设计与实现
- 无法支持python程序的编辑运行和调试_解决pycharm的Python console不能调试当前程序的问题...
- 打印出现:You've implemented -[UIApplicationDelegate application:didReceiveRemoteNotification:...
- java多线程同步synchronized,浅析Java多线程同步synchronized,javasynchronized
- cocostudio学习
- python excel 空值_用Python轻松搞定Excel中的20个常用操作
- 连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线
- 古剑奇谭显示服务器维修,《古剑奇谭网络版》角色转服功能说明公告
- 单元格内多个姓名拆分成一列_excel一个单元格中有多个名字,怎样拆分这些名字,名字是用空格分开的《excel批量分列》...
- mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题
- OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)
- php代码运行后空白什么原因,PHP空白页面常见原因及解决方法
- Debian添加自启动的两种方式
- LVGL笔记(1)-使用《avilib》库播放avi视频(lvgl在windows模拟运行)
- contiki学习笔记(一)
热门文章
- python导入包的输入法_python使用idle edit编辑器时,中文输入法下遇到r、p、t、y时产生热键冲突...
- 云豹app直播源码Android 端获取相册图片功能的具体实现教程
- Java 七大设计原则 - 依赖倒置原则/面向接口编程
- 论文解析[5] nnU-Net: Breaking the Spell on Successful Medical Image Segmentation
- 实例解读奈奎斯特稳定判据
- 【数据结构与算法】初识二叉树(下)
- Python杨辉三角
- vue双向绑定问题,修改数据时改变了原数据
- 开放式激光振镜运动控制器(二):ZMC408SCAN激光接口与控制
- 数据可视化:世界银行数据(1960-2017)