MySQL笔记--SQL语句

目录

1--SQL的通用语法

2--SQL语句的分类

3--DDL语句

3-1--数据库操作

3-2--表操作

3-3--数据类型

3-4--修改和删除

4--DML语句

4-1--插入数据

4-2--修改数据

4-3--删除数据

5--DQL语句

5-1--基本查询

5-2--条件查询

5-3--聚合函数

5-4--分组查询

5-5--排序查询

5-6--分页查询

5-7--执行顺序

6--DCL语句

6-1--用户管理

6-2--权限控制


1--SQL的通用语法

2--SQL语句的分类

3--DDL语句

3-1--数据库操作

# 查询所有数据库
show databases;# 查询当前使用数据库
select database();# 创建数据库
create database 数据库名
create database if not exists 数据库名; # 不存在时创建,存在则不创建
create database 数据库名 default charset 字符集; # 使用特定字符集# 删除数据库
drop database if exists 数据库名;# 使用特定数据库
use 数据库名;

3-2--表操作

# 查询当前数据库所有表
show tables;# 查询表结构
desc 表名;# 查询指定表的建表语句
show create table 表名;# 创建表
create table 表名(字段1 字段1类型[COMMENT 字段1注释],字段2 字段1类型[COMMENT 字段2注释],字段3 字段1类型[COMMENT 字段3注释],......字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];# example:
create table tb_user(-> id int comment '编号',-> name varchar(50) comment '姓名',-> age int comment '年龄',-> gender varchar(1) comment '性别'-> ) comment '用户表';

3-3--数据类型

MySQL中数据类型包括三类:数值类型、字符串类型和日期时间类型;

数值类型:通过增加 unsigned 来指明使用无符号;

字符串类型:char 的性能会比 varchar 的性能要好。

日期时间类型:

案例:

create table emp(-> id int comment '编号',-> workno varchar(10) comment '工号',-> name varchar(10) comment '姓名',-> gender char(1) comment '性别',-> age tinyint unsigned comment '年龄',-> idcard char(18) comment '身份证号',-> entrydate date comment '入职时间'-> ) comment '员工表';

3-4--修改和删除

# 添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释];
# 为 emp 表增加一个新的字段"昵称",字段名为nickname,类型为varchar(20);
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 表名 rename to 新表名;
# 将 emp 表的表名修改为employee
alter table tmp rename to employee;# 删除字段
alter table 表名 drop 字段名;
# 将 emp 表的字段 username 删除;
alter table tmp drop username;# 删除表
drop table [if exists] 表名;# 删除指定表,并重新创建该表
truncate table 表名; # 重新创建的是一个空表

4--DML语句

4-1--插入数据

# 给指定字段添加数据
insert into 表名(字段名, 字段名2, ...) values(值1, 值2, ...);
# example
insert into emp(id, workno, name, gender, age, idcard, entrydate) values(1, '001', 'zhangsan', '男', 18, '123123123123123123', '2023-10-31');
# 展示插入后表的结果
select * from 表名;
# example
select * from emp;# 给全部字段添加数据
insert into 表名 values(值1, 值2, ...);# 一次插入多条记录,使用,来分隔两条记录
insert into 表名 values(...), (...);

4-2--修改数据

# 指定条件来修改指定数据
update 表名 set 字段1=值1, z字段2=值2, ..., where 条件;
# example
update emp set name = 'lisi', age = 19 where id = 1;# 不指定条件来修改所有数据
update 表名 set 字段1=值1, z字段2=值2, ...;
# update emp set age = 20;

4-3--删除数据

# 删除指定数据
delete from 表名 where 条件;# 删除全部数据
delete from 表名;

5--DQL语句

5-1--基本查询

# 查询多个字段
select 字段1, 字段2, 字段3, ... from 表名;
select * from 表名;# 设置别名
select 字段1 as 别名1, 字段2 as 别名2, ... from 表名;# 去除重复记录
select distinct 字段列表 from 表名;

5-2--条件查询

常用条件如下:

# 基本语法
select 字段列表 from 表名 where 条件列表;# 基本实例
# 1. 查询年龄等于 88 的员工
select * from emp where age = 88; # 2. 查询年龄小于 20 的员工
select * from emp where age < 20;# 3. 查询年龄小于等于 20 的员工
select * from emp where age <= 20;# 4. 查询没有身份证号的员工
select * from emp where idcard is null;# 5. 查询由身份证号的员工
select * from emp where idcard is not null;# 6. 查询年龄不等于 88 的员工
select * from emp where age != 88;
select * from emp where age <> 88;# 7. 查询年龄在15岁到20岁之间的员工(闭区间)
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;# 8. 查询性别为女 且年龄小于 25 岁的员工
select * from emp where gender = '女' and age < 25;# 9. 查询年龄等于 18 或 20 或 40 的员工
select * from emp where age = 18 or age = 20 or age = 40;
select * from emp where age in (18, 20, 40);# 10. 查询姓名为两个字的员工
select * from emp where name like '__';# 11. 查询身份证号最后一位是X的员工
select * from emp where idcard like '%X';

5-3--聚合函数

聚合函数用于将数据作为整体,进行纵向计算;

常见聚合函数:

# 基本语法:
select 聚合函数(字段列表) from 表名; # null 值不参与聚合函数的计算# 代码实例
# 1. 统计员工数量
select count(*) from emp;# 2. 统计员工平均年龄
select avg(age) from emp;# 3. 统计员工最大年龄
select max(age) from emp;# 4. 统计员工最小年龄
select min(age) from emp;# 5. 统计深圳地区员工的年龄总和
select sum(age) from emp where workaddress = '深圳'; 

5-4--分组查询

基本语法
select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后过滤条件;where 和 having 的区别:
1. 执行时机不同,where是分组之前进行过滤,不满足where条件的不会参与分组,having是对分组之后的结果进行过滤
2. 判断条件不同,where不能对聚合函数进行判断,而having可以
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
# 代码实例:
1. 根据性别分组,统计男性员工和女性员工的数量
select gender, count(*) from emp group by gender;2. 根据性别分组,统计男性员工和女性员工的平均年龄
select gender, avg(age) from emp group by gender;3. 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress, count(*) from emp where age < 45 group by workaddress having count(*) > 3;

5-5--排序查询

基本语法:
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;排序方式:
asc 表示升序(默认值)
desc 表示降序
使用多字段排序时,当第一个字段值相同时,会根据第二个字段进行排序
代码实例:# 1. 根据年龄对员工进行升序排序
select * from emp order by age asc;# 2. 根据入职时间对员工进行降序排序
select * from emp order by entrydate desc;# 3. 根据年龄对员工进行升序排序,当年龄相同时按照入职时间进行降序排序
select * from emp order by age asc, entrydate desc;

5-6--分页查询

基本语法:
select 字段列表 from 表名 limit 起始索引, 查询记录数;注意事项:
起始索引从 0 开始,起始索引 = (查询页码 - 1) * 每页显示记录数;
不同数据库对于分页查询有不同的实现, MySql中是limit;
如果查询的是第一页数据,则起始索引可以省略;
代码实例:
# 1. 查询第1页员工数据,每页显示10条记录
select * from emp limit 0, 10;
select * from emp limit 10; # 第一页可以省略查询页码# 2. 查询第二页员工数据
select * from emp limit 10 10; # (2 - 1) * 10 = 10

5-7--执行顺序

6--DCL语句

6-1--用户管理

# 1. 查询用户
use mysql;
selece * from user;# 2. 创建用户
create user '用户名'@'主机名' identified by '密码';# 3. 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';# 4. 删除用户
drop user '用户名'@'主机名';主机名可以使用 % 通配,表示可以从任何主机登录数据库;

6-2--权限控制

常见权限:

基本语句
# 1. 查询权限
show grants for '用户名'@'主机名';# 2. 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';# 3. 撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';多个权限之间使用逗号分隔,授权时数据库名和表名可以使用 * 进行通配,表示所有

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

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

相关文章

javaEE -13(6000字CSS入门级教程 - 2)

一&#xff1a;Chrome 调试工具 – 查看 CSS 属性 首先打开浏览器&#xff0c;接着有两种方式可以打开 Chrome 调试工具 直接按 F12 键鼠标右键页面 > 检查元素 点开检查即可 标签页含义&#xff1a; elements 查看标签结构console 查看控制台source 查看源码断点调试ne…

幂等性设计,及案例分析

一、redis锁处理幂等性失效 上面代码中&#xff0c;锁起不了作用&#xff1b; ——count方法&#xff0c;和insert方法在同一事务中&#xff0c;事务中包含锁&#xff0c;锁没有作用&#xff0c;锁的范围内&#xff0c;事务没提交&#xff0c;但释放锁后&#xff0c;事务提交前…

unity 点击3D物体

1. 在场景中添加事件系统 2. 为主相机添加射线检测 3. 为物体挂载以下脚本&#xff0c;物体必须带碰撞体 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;// 挂在物体上&#xff0c;需要添加碰撞体 public …

Qt中实现页面切换的两种方式

文章目录 方式一 &#xff1a;使用QStackedWidget讲解代码结构main.cpp完整代码运行结果&#xff1a; 方式二 &#xff1a;代码结构完整代码mainwindow.hnewmainwindow.hmain.cppmainwindow.cppnewmainwindow.cppmainwindow.uinewmainwindow.ui 效果 方式一 &#xff1a;使用QS…

mathematica解非齐次常微分方程通用写法。解RC微分方程,输入硬写为Cos,通用写法:将微分方程的解函数表达式转为mathematica的纯函数

输入电压为余弦信号, mathematica解微分方程举例&#xff08;mathematica解非齐次常微分方程通用写法&#xff09;

天津重点大数据培训 大数据培训的三个重要内容

随着互联网的发展和技术的进步&#xff0c;大数据的应用范围越来越广泛&#xff0c;对于企业和个人来说&#xff0c;学习和掌握大数据技术已经成为了必不可少的一项能力。大数据技术是当前和未来的发展方向&#xff0c;对于想进入互联网行业或从事相关技术工作的人来说&#xf…

android下的app性能测试应主要针对那些方面,如何开展?

如何开展安卓手机下的App性能测试&#xff0c;对于优秀的测试人员而言&#xff0c;除了要懂得性能测试的步骤流程外&#xff0c;还应该懂的性能测试的一些其他知识&#xff0c;比如性能测试指标、各指标的意义&#xff0c;常用的性能测试工具、如何查看结果分析等等知识。所以本…

ubuntu配置 Conda 更改默认环境路径

我的需求是以后凡是新建一个虚拟环境都需要安装在一个挂载了大容量的分区/data里面 /home里面的是即将爆满但是还能塞点东西的硬盘. 如果您想要永久更改 Conda 的默认环境路径&#xff0c;可以编辑 Conda 的配置文件。首先&#xff0c;找到 Conda 的配置文件通常是 .condarc 文…

idea插件(一)-- SequenceDiagram(UML自动生成工具)

目录 1. 安装 2. 默认快捷键 3. 操作说明 4. 导出为图片与UML类图 4.1 导出为图片&#xff1a; 4.2 导出 UML 类图 SequenceDiagram是从java、kotlin、scala&#xff08;Beta&#xff09;和groovy&#xff08;limited&#xff09;代码生成简单序列图&#xff08;UML&…

06 MIT线性代数-线性无关,基和维数Independence, basis, and dimension

1. 线性无关 Independence Suppose A is m by n with m<n (more unknowns than equations) Then there are nonzero solutions to Ax0 Reason: there will be free variables! A中具有至少一个自由变量&#xff0c;那么Ax0一定具有非零解。A的列向量可以线性组合得到零向…

【MySQL数据库】 二

本文主要介绍了数据库操作的操作流程 , 以及数据库和数据表的基本操作 . 一.数据库操作工作流程 1.用户在客户端输入SQL 2.客户端把SQL通过网络发送给服务器 3.服务器会执行这个SQL&#xff0c;把结果返回给客户端 4.客户端收到结果显示到界面上 二.数据库的操作 1.创建数…

【c++|opencv】二、灰度变换和空间滤波---3.均值滤波

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 均值滤波 1. 均值滤波 #include <iostream> #include <opencv2/opencv.hpp> #include"Salt.h"using namespace cv; using names…

计算机毕业设计选题推荐-校园失物招领微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Flutter 01 目录结构入门

一、Flutter目录结构&#xff1a; 二、Flutter入口文件、入口方法&#xff1a; 三、Flutter Demo&#xff1a; demo1&#xff1a; import package:flutter/material.dart;//MaterialApp 和 Scaffold两个组件装饰App void main() {runApp(MaterialApp(home: Scaffold(appBar: A…

VSCode 设置平滑光标

1.点击左下角的设置按钮&#xff0c;再点击设置 2.点击文本编辑器&#xff0c;点击光标&#xff0c;勾选控制是否启用平滑插入动画。 3.随便打开一个文件&#xff0c;上下左右移动光标时&#xff0c;会发现非常的流畅。 原创作者&#xff1a;吴小糖 创作时间&#xff1a;2023…

SOLIDWORKS® 2024 新功能 - PDM

SOLIDWORKS 2024 新功能 - PDM 1、改进的视觉内容 • 通过装配体可视化功能&#xff0c;在 SOLIDWORKS 中以图形方式查看零部件数据&#xff0c;如工作流程状态。 • 使用特定图标迅速识别焊件切割清单零部件。 优点 重要数据和系统信息一目了然。 2、增强的数据保护和跟踪功…

Elasticsearch下载安装,IK分词器、Kibana下载安装使用,elasticsearch使用演示

首先给出自己使用版本的网盘链接&#xff1a;自己的版本7.17.14 链接&#xff1a;https://pan.baidu.com/s/1FSlI9jNf1KRP-OmZlCkEZw 提取码&#xff1a;1234 一般情况下 Elastic Search&#xff08;ES&#xff09; 并不单独使用&#xff0c;例如主流的技术组合 ELK&#xff08…

计算机视觉注意力机制小盘一波 (学习笔记)

将注意力的阶段大改分成了4个阶段 1.将深度神经网络与注意力机制相结合&#xff0c;代表性方法为RAM ⒉.明确预测判别性输入特征&#xff0c;代表性方法为STN 3.隐性且自适应地预测潜在的关键特征&#xff0c;代表方法为SENet 4.自注意力机制 通道注意力 在深度神经网络中…

第 04 章_逻辑架构

第 04 章_逻辑架构 1. 逻辑架构剖析 1. 1 服务器处理客户端请求 那服务器进程对客户端进程发送的请求做了什么处理&#xff0c;才能产生最后的处理结果呢&#xff1f;这里以查询请求为 例展示&#xff1a; 下面具体展开看一下&#xff1a; 1.2 Connectors 1.3 第 1 层&…

Oracle JDK 和OpenJDK两者有什么异同点

Oracle JDK 和 OpenJDK 是两种不同版本的 Java Development Kit&#xff08;Java 开发工具包&#xff09;&#xff0c;它们都提供了用于开发 Java 程序的一系列工具和库。以下是它们之间的一些主要异同点&#xff1a; 相同点&#xff1a; 功能&#xff1a;在大多数情况下&…