MySQL语法回顾

数据库操作语言包括DDL、DML、DQL和DCL,分别用于定义、操作、查询和控制数据库。

DDL(Data Definition Language)数据定义语言:

DDL用于定义数据库、表、列、索引、视图、存储过程、触发器等对象,包括CREATE、ALTER、DROP等命令。

常用的DDL命令有:

  • CREATE:创建数据库或表
  • ALTER:修改数据库或表结构
  • DROP:删除数据库或表

DML(Data Manipulation Language)数据操作语言:

DML用于添加、删除、更新和查询数据,包括INSERT、DELETE、UPDATE和SELECT等命令。

常用的DML命令有:

  • INSERT:插入数据
  • DELETE:删除数据
  • UPDATE:更新数据
  • SELECT:查询数据

DQL(Data Query Language)数据查询语言:

DQL用于查询数据,包括SELECT命令。SELECT可以查询指定的列、表、条件和排序方式等。

DCL(Data Control Language)数据控制语言:

DCL用于控制数据库对象的访问、权限、安全性等,包括GRANT和REVOKE命令。GRANT授权将访问权限授予用户和角色,REVOKE撤销访问权限。

 

SQL关键字的执行顺序通常是:

  1. FROM:从哪个表中获取数据
  2. JOIN:连接其他表
  3. WHERE:筛选满足条件的数据
  4. GROUP BY:按照指定的列进行分组
  5. HAVING:对分组后的数据进行筛选
  6. SELECT:选择要返回的列
  7. DISTINCT:去除重复的数据
  8. ORDER BY:按照指定的列进行排序
  9. LIMIT:限制返回的数据条数

MySQL是一种开源的关系型数据库管理系统。以下是MySQL的基本语句:

#基本语句

查询所有数据库:

show databases;

创建数据库:

CREATE DATABASE database_name;

选择数据库:

USE database_name;

创建表格:

CREATE TABLE table_name (column1 datatype constraint,column2 datatype constraint,...
);

插入数据:

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

更新数据:

UPDATE table_name SET column_name = new_value WHERE condition;

删除数据:

DELETE FROM table_name WHERE condition;

 注意:要注意字段和值之间的对应情况,逗号隔开,若update和delete没有指定where语句的话或直接默认全部;

insert into user(id, name, age) value (1,'zhangsan',23);
insert into user(id, name, age) value (2,'lisi',24);insert into user values (3,'wangwu',25);update user set name = 'zhaoliu' where id =1;update user set name='小美',age=18 where id=3;update user set age=18;delete from user where id=1;
delete from user ;select * from user;

 

查询数据:

SELECT column1, column2, ... FROM table_name WHERE condition;

对数据进行排序:

SELECT column1, column2, ... FROM table_name ORDER BY column_name ASC/DESC;

对数据进行分组:

SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;

连接表格:

SELECT column1, column2, ... FROM table1 JOIN table2 ON table1.column_name = table2.column_name;

下面是练习代码:

先创建表内数据

insert into emp(id, workno, name, gender, age, idcard, workaddress, date)
values (1,'1','柳岩','女',20,'123456789012345678','北京','2000-01-01 '),(2,'2','张无忌','男',18,'123456789012345670','北京','2005-09-01 '),(3,'3','韦一笑','男',38,'123456789712345670','上海','2005-08-01 '),(4,'4','赵敏','女',18,'123456757123845670','北京','2009-12-01'),(5,'5','小昭','女',16,'123456769012345678','上海','2007-07-01'),(6,'6','杨道','男',28,'12345678931234567X','北京','2006-01-01'),(7,'7','范瑶','男',40,'123456789212345670','北京','2005-05-01 '),(8,'8','黛绮丝','女',38,'123456157123645670','天津','2015-05-01'),(9,'9','范凉凉','女',45,'123156789012345678','北京','2010-04-01 '),(10,'10','陈友谅','男',53,'123456789012345670','上海','2011-01-01 '),(11, '11 ','张士诚','男',55,'123567897123465670','江苏','2015-05-01 ') ,(12,'12','常遇春','男',32,'123446757152345670','北京','2004-02-01 '),(13,'13','张三丰','男',88,'123656789012345678','江苏','2020-11-01 '),(14,'14','灭绝','女',65,'123456719012345670','西安',' 2019-05-01'),(15,'15','胡青牛','男',70,'12345674971234567X','西安','2018-04-01'),(16,'16','周芷若','女',18, null,'北京','2012-06-01');
select name,workno,age from emp;-- as关键字,distinct去重
select distinct workaddress as '工作地址' from emp;-- where查询
select * from emp where age=88;select * from emp where emp.idcard is null;
select * from emp where emp.idcard is not null;select * from emp where age>=15 and age<=30;
select * from emp where age between 15 and 20;select * from emp where age=18 or age=20 or age=40;
select * from emp where age in(18 ,20 , 40);-- 查询符合字符的数据
select * from emp where name like '__';-- 身份证号最后一位是X
select * from emp where emp.idcard like '%X';-- 聚合函数
-- 有多少个字段
-- null不参与聚合函数计算
select count(*) from emp;
select count(idcard) from emp;-- 平均年龄-- 最小年龄
select min(age) from emp;
-- 最大年龄
select max(age) from emp;-- 西安地区年龄之和
select sum(age) from emp where workaddress='西安';-- group by
-- 分组之前查询用where,之后用having
-- 分组男女
select gender , count(*) from emp group by gender;select gender , avg(age) from emp group by gender;-- 3.查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress, count(*) arr from emp where age<45 group by workaddress having arr>=3;-- 排序
-- 升
select * from emp order by age asc ;
select * from emp order by age;-- 降
select * from emp order by age desc ;-- 根据入职时间降序排序
select * from emp order by date desc ;-- 3.根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
select * from emp order by age , date desc ;-- 分页查询
select * from emp limit 10,10;select gender,count(*) from emp where age<60 group by gender;-- 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
select name,age from emp where age<35 order by age ,date desc ;-- 5.查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select * from emp where gender='男' and age>20 and age<=40 order by age ,date limit 5;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259019.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手搭建知识付费平台必备攻略:如何以低成本实现高转化?

我有才知识付费平台 一、引言 随着知识经济的崛起&#xff0c;越来越多的知识提供者希望搭建自己的知识付费平台。然而&#xff0c;对于新手来说&#xff0c;如何以低成本、高效率地实现这一目标&#xff0c;同时满足自身需求并提高客户转化率&#xff0c;是一大挑战。本文将…

周周爱学习之Redis重点总结

redis重点总结 在正常的业务流程中&#xff0c;用户发送请求&#xff0c;然后到缓存中查询数据。如果缓存中不存在数据的话&#xff0c;就会去数据库查询数据。数据库中有的话&#xff0c;就会更新缓存然后返回数据&#xff0c;数据库中也没有的话就会给用户返回一个空。 1.缓…

C++ day59 下一个更大元素Ⅱ 接雨水

题目1&#xff1a;503 下一个更大元素Ⅰ 题目链接&#xff1a;下一个更大元素Ⅱ 对题目的理解 返回循环数组中每个元素的下一个更大元素&#xff0c; 数字x的下一个更大元素是循环等的搜索它的最近的下一个更大的数 数组的中至少有一个元素 本题难点在于循环遍历这里&…

力扣面试题 08.12. 八皇后(java回溯解法)

Problem: 面试题 08.12. 八皇后 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 八皇后问题的性质可以利用回溯来解决&#xff0c;将大问题具体分解成如下待解决问题&#xff1a; 1.以棋盘的每一行为回溯的决策阶段&#xff0c;判断当前棋盘位置能否放置棋子 2.如何判…

发布“最强”AI大模型,股价大涨,吊打GPT4的谷歌股票值得投资吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 谷歌在AI领域的最新进展&#xff0c;引发投资者关注 在谷歌-C(GOOGL)谷歌-A&#xff08;GOOG&#xff09;昨日发布了最新的AI大模型Gemini后&#xff0c;其股价就出现了大幅上涨&#xff0c;更是引发了投资者的密切关注&a…

PySpark开发环境搭建常见问题及解决

PySpark环境搭建常见问题及解决 1、winutils.exe问题2、SparkURL问题3、set_ugi()问题 本文主要收录PySpark开发环境搭建时常见的一些问题及解决方案&#xff0c;并收集一些相关资源 1、winutils.exe问题 报错摘要&#xff1a; WARN Shell: Did not find winutils.exe: {} ja…

leetcode 面试题 02.02. 返回倒数第k个节点

提建议就是&#xff0c;有些题还是有联系的&#xff0c;建议就收看完 876.链表的中间节点&#xff08;http://t.csdnimg.cn/7axLa&#xff09;&#xff0c;再将这一题联系起来 面试题 02.02. 返回倒数第k个节点 题目&#xff1a; 实现一种算法&#xff0c;找出单向链表中倒数第…

【池式组件】线程池的原理与实现

线程池的原理与实现 线程池简介1.线程池1.线程池2.数量固定的原因3.线程数量如何确定4.为什么需要线程池5.线程池结构 线程池的实现数据结构设计1.任务结构2.任务队列结构3.线程池结构 接口设计 线程池的应用reactorredis 中线程池skynet 中线程池 线程池简介 1.线程池 1.线程…

功能测试,接口测试,自动化测试,压力测试,性能测试,渗透测试,安全测试,具体是干嘛的?

软件测试是一个广义的概念&#xff0c;他包括了多领域的测试内容&#xff0c;比如&#xff0c;很多新手可能都听说&#xff1a;功能测试&#xff0c;接口测试&#xff0c;自动化测试&#xff0c;压力测试&#xff0c;性能测试&#xff0c;渗透测试&#xff0c;安全测试等&#…

3.添加与删除字段

添加字段与删除字段 1.添加字段 因为甲方的业务需求是不停变化的&#xff0c;所以在数据库操作中&#xff0c;添加字段可是常有的事。一个完整的字段包括&#xff1a;字段名、数据类型和完整性约束。 语法规则为&#xff1a; ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条…

【SpringCache】快速入门 通俗易懂

1. 介绍 Spring Cache 是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能。 Spring Cache 提供了一层抽象&#xff0c;底层可以切换不同的缓存实现&#xff0c;例如&#xff1a; EHCache Caffeine Redis(常用…

Swagger页面报错Resolver error at definitions

问题描述 打开swagger页面报错Resolver error at definitions 原因分析&#xff1a; 从错误提示可以看出&#xff0c;是由map引起的原因&#xff0c;具体是因为swagger配置没有默认添加map的复杂结构引起的&#xff0c;需要手动添加。 解决方案&#xff1a; 找到swagger配置类…