SQL-2

刷题知识点:

null不能用=这种判断,要用is null 或者is not null

或者可用 ifnull来判断。

明确:数据库DB是数据存储仓库。

数据库管理系统(Database management system,DBMS),是操纵和管理数据库的大型软件

SQL,操作关系型数据库的编程语言。

关系型数据库RDBMS:

  • 建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
  • 特点:使用表存储数据,格式统一,便于维护,使用SQL语言操作,标准统一,使用方便。

 SQL:

  • 以分号结尾
  • 单行注释  --
  • 多行注释 /* zhushi*/

DDL(数据定义语言)

  • 查询所有数据库 SHOW DATABASES;
  • 查询当前数据库 SELECT DATABASE();
  • 创建 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
  • 删除 DROP DATABASE[ IF EXISTS] 数据库名;
  • 使用 USE 数据库名;
  • 查询当前数据库所有表 SHOW TABLES;
  • 查询表结构 DESC 表名;
  • 查询指定表的建表语句 SHOW CREATE TABLE 表名;
  • 创建

            CREATE TABLE 表名(

                        字段1 字段1类型[COMMENT 表注释],

                       字段2 字段2类型[COMMENT 表注释]

                         )[COMMENT 表注释]; 

                 

        

                例:age TINYINT UNSIGNED 

                        score DOUBLE(4,1)

                用户名  usename varchar(50)

                性别 gender char(1)

添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
例:ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';

修改数据类型:
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
例:将emp表的nickname字段修改为username,类型为varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';

删除字段:
ALTER TABLE 表名 DROP 字段名;

修改表名:
ALTER TABLE 表名 RENAME TO 新表名;

删除表:
DROP TABLE [IF EXISTS] 表名;
删除表,并重新创建该表:
TRUNCATE TABLE 表名;

DML(数据操作语言)

  • 添加数据(INSERT)

指定字段:

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
全部字段:
INSERT INTO 表名 VALUES (值1, 值2, ...);

批量添加数据:
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);

字符串和日期类型数据应该包含在引号中

插入的数据大小应该在字段的规定范围内

  • 修改数据(UPDATE)

修改数据:
UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... [ WHERE 条件 ];
例:
UPDATE emp SET name = 'Jack' WHERE id = 1;

  • 删除数据(DELETE)

DELETE FROM 表名 [ WHERE 条件 ];

DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

DELETE语句不能删除某一个字段的值(这种情况用UPDATE)

例:

DELETE FROM employee WHERE gender = ‘女’;

DQL(dara query language 数据查询语言)

SELECT `字段列表`
FROM `表名列表`
WHERE `条件列表`
GROUP BY `分组字段列表`
HAVING `分组后条件列表`
ORDER BY `排序字段列表`
LIMIT `分页参数`;
  • 基础查询

查询多个字段:
SELECT 字段1, 字段2, 字段3, ... FROM 表名;
SELECT * FROM 表名;

设置别名:
SELECT 字段1 [ AS 别名1 ], 字段2 [ AS 别名2 ], 字段3 [ AS 别名3 ], ... FROM 表名;
SELECT 字段1 [ 别名1 ], 字段2 [ 别名2 ], 字段3 [ 别名3 ], ... FROM 表名;

去除重复记录:
SELECT DISTINCT 字段列表 FROM 表名;

转义:
SELECT * FROM 表名 WHERE name LIKE '/_张三' ESCAPE '/'
/ 之后的_不作为通配符

  • 条件查询

语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;

比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
BETWEEN … AND …在某个范围内(含最小、最大值)
IN(…)在in之后的列表中的值,多选一
LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)
IS NULL是NULL
逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或 !非,不是
-- 年龄等于88
select * from employee where age = 88;
-- 年龄小于30
select * from employee where age < 30;
-- 小于等于30
select * from employee where age <= 30;
-- 没有身份证
select * from employee where idcard is null or idcard = '';
-- 有身份证
select * from employee where idcard;
select * from employee where idcard is not null;
-- 不等于
select * from employee where age != 30;
-- 年龄在20到30之间
select * from employee where age between 20 and 30;
select * from employee where age >= 20 and age <= 30;
select * from employee where age >= 20 && age <= 30;
-- 下面语句不报错,但查不到任何信息
select * from employee where age between 30 and 20;
-- 性别为女且年龄小于30
select * from employee where age < 30 and gender = '女';
-- 年龄等于25或30或35
select * from employee where age = 25 or age = 30 or age = 35;
select * from employee where age in (25, 30, 35);
-- 姓名为两个字
select * from employee where name like '__';
-- 身份证最后为X
select * from employee where idcard like '%X';
  • 聚合函数

将一列数据作为一个整体,进行纵向计算。null值不参与所有聚合函数运算。

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

语法:

SELECT 聚合函数(字段列表) FROM 表名;

--统计该企业员工数量
SELECT COUNT(*) FROM emp;
SELECT COUNT(idcard) FROM emp;
--平均年龄
SELECT AVG(age) FROM emp;
--最大年龄
SELECT MAX(age) FROM emp;--最小年龄
SELECT MIN(age) FROM emp;
--西安地区员工的年龄之和
SELECT SUM(age) FROM emp WHERE workaddress = '西安';
  • 分组查询

语法:
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后的过滤条件 ];

where 和 having 的区别:

  • 执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。
-- 根据性别分组,统计男性和女性数量(只显示分组数量,不显示哪个是男哪个是女)
SELECT COUNT(*) FROM emp GROUP BY gender;
-- 根据性别分组,统计男性和女性数量
SELECT gender, COUNT(*) FROM emp GROUP BY gender;
-- 根据性别分组,统计男性和女性的平均年龄
SELECT gender, AVG(age) FROM employee GROUP BY gender;
-- 年龄小于45,并根据工作地址分组
SELECT workaddress, COUNT(*) FROM emp WHERE age < 45 GROUP BY workaddress;
-- 年龄小于45,并根据工作地址分组,获取员工数量大于等于3的工作地址
SELECT workaddress, COUNT(*) FROM emp WHERE age < 45 GROUP BY workaddress HAVING count(*) > =3;
SELECT workaddress, COUNT(*) AS address_count FROM emp WHERE age < 45 GROUP BY workaddress HAVING address_count > =3;

注意:执行顺序:where>聚合函数>having

           分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

  •  排序查询

语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;

排序方式:

  • ASC: 升序(默认)
  • DESC: 降序

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

-- 根据年龄升序排序
SELECT * FROM employee ORDER BY age ASC;
SELECT * FROM employee ORDER BY age;
-- 两字段排序,根据年龄升序排序,入职时间降序排序
SELECT * FROM employee ORDER BY age ASC, entrydate DESC;
  • 分页查询

语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;

注意事项
  • 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
  • 分页查询是数据库的方言,不同数据库有不同实现,MySQL是LIMIT
  • 如果查询的是第一页数据,起始索引可以省略,直接简写 LIMIT 10
--查询第1页员工数据,每页展示10条记录
SELECT * FROM emp LIMIT 0, 10;
SELECT * FROM emp LIMIT 10;
--查询第2页员工数据,每页展示10条记录------>(页码-1)*页展示记录数
SELECT * FROM emp LIMIT 10,10;
--统计员工表中,年龄小于60,男性员工和女性员工的人数
SELECT gender, COUNT(*) 
FROM emp 
WHERE age < 60
GROUP BY gender;
--查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,年龄相同按入职时间降序排序SELECT name,age 
FROM emp
WHERE age <= 35
ORDER BY age ASC. entrydate DESC;
DQL执行顺序

FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT

DCL(data Control Language)数据控制语言,用来管理数据库用户、控制数据库的访问权限。

查询用户:

USE mysql;
SELECT * FROM user;
创建用户:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

修改用户密码:
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

删除用户:
DROP USER '用户名'@'主机名';

-- 创建用户test,只能在当前主机localhost访问
create user 'test'@'localhost' identified by '123456';
-- 创建用户test,能在任意主机访问
create user 'test'@'%' identified by '123456';
create user 'test' identified by '123456';
-- 修改密码
alter user 'test'@'localhost' identified with mysql_native_password by '1234';
-- 删除用户
drop user 'test'@'localhost';

注意事项
主机名可以使用 % 通配

权限控制

常用权限:

权限说明
ALL, ALL PRIVILEGES所有权限
SELECT查询数据
INSERT插入数据
UPDATE修改数据
DELETE删除数据
ALTER修改表
DROP删除数据库/表/视图
CREATE创建数据库/表

MySQL - 智云知识

查询权限:
SHOW GRANTS FOR '用户名'@'主机名';

授予权限:
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

撤销权限:
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意事项
  • 多个权限用逗号分隔
  • 授权时,数据库名和表名可以用 * 进行通配,代表所有

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

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

相关文章

《Solidity 简易速速上手小册》第8章:高级 Solidity 概念(2024 最新版)

文章目录 8.1 高级数据类型和结构8.1.1 基础知识解析更深入的理解实际操作技巧 8.1.2 重点案例&#xff1a;构建一个去中心化身份系统案例 Demo&#xff1a;创建去中心化身份系统案例代码DecentralizedIdentityContract.sol 测试和验证拓展案例 8.1.3 拓展案例 1&#xff1a;管…

http相关概念以及apache的功能

概念 互联网&#xff1a;是网络的网络&#xff0c;是所有类型网络的母集 因特网&#xff1a;世界上最大的互联网网络 万维网&#xff1a;www &#xff08;不是网络&#xff0c;而是数据库&#xff09;是网页与网页之间的跳转关系 URL:万维网使用统一资源定位符&#xff0c;…

见微知著:数据可视化助力数字化时代决策智慧

在数字化时代的浪潮中&#xff0c;数据可视化显然是推动数字化进程不可或缺的利器。通过将复杂的数据转化为直观的图形和图表&#xff0c;数据可视化为企业和组织提供了更清晰、更有效的方式来理解和应用大量的数字信息。下面我就以可视化从业者的角度&#xff0c;来简单聊聊这…

浅谈TCP协议的可靠含义和三次握手

这里不过多阐述计算机网络的体系结构&#xff0c;本文主要是想阐述三次握手和可靠连接之间的联系。TCP协议全称传输控制协议&#xff08;Transmission Cotrol Protocol&#xff09;。 1、TCP协议运行在哪一层 TCP运行在运输层。 2、TCP协议的可靠是什么意思 步入主题&…

maven异常记录-must be unique

maven 打包异常记录 我们可以看看一个重要的异常&#xff1a; dependencies.dependency.(groupId:artifactId:type:classifier) must be unique: org.springframework.boot:spring-boot-starter-test 经过检查pom文件 果然是spring-boot-starter-test引用重复&#xff0c;平…

rocketMQ-Dashboard安装与部署

1、下载最新版本rocketMQ-Dashboard 下载地址&#xff1a;https://github.com/apache/rocketmq-dashboard 2、下载后解压&#xff0c;并用idea打开 3、修改配置 ①、修改端口及rocketmq服务的ip&#xff1a;port ②、修改访问账号、密码 3、然后启动访问&#xff1a; 4、mav…

代码随想录算法训练营第二十三天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

669. 修剪二叉搜索树 刷题https://leetcode.cn/problems/trim-a-binary-search-tree/description/文章讲解https://programmercarl.com/0669.%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html视频讲解https://www.bilibili.com/video/BV17P41177ud/?sh…

8.2 新特性 - 透明的读写分离

文章目录 前言1. 安装部署1.1 下载安装包1.2 MySQL Shell1.3 配置 MySQL 实例1.4 启动 ReplicaSet1.5 启动 8.2 Router 2. 测试路由总结 前言 MySQL 8.0 官方推出过一个高可用方案 ReplicaSet 主要由 Router、MySQL Shell、MySQL Server 三个组件组成。 MySQL Shell 负责管理…

【.NET Core】C#编程规范

【.NET Core】C#编程规范 文章目录 【.NET Core】C#编程规范一、概述1.1 结构清晰第一1.2 简洁之风1.3 代码风格保持一致性 二、命名约定三、类型参数命名指南3.1 请使用描述性名称命名泛型类型参数&#xff0c;除非单个字面名称完全具有自我说明性且描述性名称不会增加任何作用…

C++寒假打卡2.19

题目列表 #字母转换 难度系数 ⭐ &#xff08;送分&#xff09; #数位求和 难度系数 ⭐⭐ &#xff08;几乎也是送分&#xff09; #分糖果 难度系数 ⭐⭐⭐ #猴子摘桃 难度系数 ⭐⭐⭐ &#xff08;板字题&#xff09; #最大值 难度系数 ⭐⭐⭐⭐…

设计模式三:工厂模式

工厂模式包括简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;其中后两者属于23中设计模式 各种模式中共同用到的实体对象类&#xff1a; //汽车类&#xff1a;宝马X3/X5/X7&#xff1b;发动机类&#xff1a;B48TU、B48//宝马汽车接口 public interface BMWCar {void s…

Bert基础(一)--transformer概览

1、简介 当下最先进的深度学习架构之一&#xff0c;Transformer被广泛应用于自然语言处理领域。它不单替代了以前流行的循环神经网络(recurrent neural network, RNN)和长短期记忆(long short-term memory, LSTM)网络&#xff0c;并且以它为基础衍生出了诸如BERT、GPT-3、T5等…

2024全年放假日历表及调休安排 用手机便签设置放假倒计时

对于绝大多数的上班族来说&#xff0c;春节长假已经结束&#xff0c;现在要回归到正常的工作和生活中。为了给生活增加一些“盼头”&#xff0c;很多小伙伴不约而同打开手机日历&#xff0c;查看下个法定节假日是什么时候。下面给大家具体讲一下2024全年放假日历表及调休安排&a…

UE5 C++ 创建可缩放的相机

一.要将相机设置在Pawn类里 1.在MyPawn头文件里&#xff0c;加上摇臂和相机组件 #include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h" 2.在Pawm里声明SceneComponet&#xff0c;SpringArmComponent,CameraComponent组件…

Excel生成不重复的UUID

第一步&#xff1a;在单元格中使用函数 第二步&#xff1a;下拉批量生成 生成函数如下&#xff1a; CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8),DEC2HEX(RANDBETWEEN(0,42949),4),,DEC2HEX(RANDBETWEEN(0,42949),4),DEC2HEX(RANDBETWEEN(0,42949),4),DEC2HEX(RANDBETW…

Unity MVC开发模式与开发流程详解

在Unity游戏开发中&#xff0c;采用MVC&#xff08;Model-View-Controller&#xff09;模式是一种非常常见的设计模式。MVC模式将应用程序分为三个部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#x…

vue3+element Plus+ts 自定义主题色,以及生成主题色各种透明度

目录 思路 安装css-color-function【接收一个颜色值&#xff0c;生成不同的透明度】 获取后台配置的主题色或者使用ColorPicker修改主题色 最终结果如下 思路 本篇文章的主体思路是从element Plus官网引申而来。结合了我以前用vue2element-ui配置主题色生成透明度&#x…

谈谈:你在工作中用到的设计模式!

谈谈:你在工作中用到的设计模式! Hello大家龙年好! 春节的假期转眼间过去,我们也要回归往日的节奏 因为最近和小伙伴们聊天发现,我们普遍在面试中,对被问起设计模式在工作中的应用,既有点熟悉,又有点陌生, 在网上看吧,又感觉鸡肋(为啥?不能解燃煤之急啊!哈哈),所以,为了打破这…

体验即王道:提升B端管理系统用户体验的10大法则

大家好&#xff0c;我是贝格前端工场&#xff0c;专注于前端开发和UI设计&#xff0c;有需求可以私信。本篇从用户体验角度来分析管理系统如何设计和开发。 一、用户体验的重要性 B端管理系统的用户体验对于企业的成功至关重要。 提高工作效率&#xff1a;一个好的用户体验可…

什么是网络安全?一文了解网络安全究竟有多重要!

随着互联网的普及和数字化进程的加速&#xff0c;网络安全已经成为我们生活中不可或缺的一部分。然而&#xff0c;很多人对于网络安全的概念仍然模糊不清。 那么&#xff0c;什么是网络安全&#xff1f;它究竟有多重要呢&#xff1f; 一、网络安全的定义 网络安全是指保护网络…