MySQL 数据库(基础)- SQL

news2024/9/21 3:21:22

SQL通用语法

SQL通用语法

  1. SQL语句可以单行或者多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
    注意:空格和缩进的个数是没有限制的,可以是 “一个” 也可以是 “多个”。
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  4. 注释:
    单行注释:-- 注释内容 或者 # 注释内容(MySQL特有)
    多行注释:/* 注释内容 */

SQL分类

SQL分类

  • DDL
    数据定义语句,用来定义数据库对象(数据库字段
  • DML
    数据操作语言,用来对数据库表中的数据进行 增删改
  • DQL
    数据查询语言,用来查询数据库表中的记录
  • DCL
    数据控制语言,用来创建数据库用户,控制数据库的访问权限

DDL

DDL

  • 查询
    查询所有数据库
    SHOW DATABASES;
    

在这里插入图片描述

  • 查询当前数据库

    SELECT DATABASE();
    
  • 创建

    CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
    

在这里插入图片描述

[IF NOT EXISTS] 如果不存在,则执行

在这里插入图片描述

[DEFAULT CHARSET 字符集] 给数据库添加字符集 

在这里插入图片描述

  • 删除
    DROP DATABASE [IF EXISTS] 数据库名;
    

在这里插入图片描述

  • 使用
    USE 数据库名;
    

在这里插入图片描述

DDL - 表操作 - 查询

DDL - 表操作 - 查询

  • 查询当前数据库所有表
show tables;

在这里插入图片描述

  • 查询表结构
desc 表名;

在这里插入图片描述

  • 查询指定表的建表语句
show create table 表名;

在这里插入图片描述

DDL-表操作-创建

DDL - 表操作 - 创建

create table 表名{
	字段1 字段1类型 [comment 字段1注释],
	字段2 字段2类型 [comment 字段2注释],
	字段3 字段3类型 [comment 字段3注释],
	字段n 字段n类型 [comment 字段n注释]
}[comment 表注释];

注意:[]为可选参数,最后一个字段后面没有 “逗号”

在这里插入图片描述

DDL-表操作-数据类型

DDL - 表操作 - 数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期时间类型。

  • 数值类型

类型:tinyint		大小:1 byte		有符号(signed)范围 :(-128,127)					无符号(unsigned)范围:(0,255)				描述:小整数值
类型:smallint		大小:2 byte		有符号(signed)范围 :(-3276832767)					无符号(unsigned)范围:(065535)				描述:大整数值
类型:mediumint  	大小:3 byte		有符号(signed)范围 :(-83886088388607)				无符号(unsigned)范围:(016777215)			描述:大整数值
类型:intinteger	大小:4 byte		有符号(signed)范围 :(-21474836482147483647)		无符号(unsigned)范围:(04294967295)		描述:大整数值
类型:bigint			大小:8 byte		有符号(signed)范围 :(-2^632^63-1)					无符号(unsigned)范围:(02^64-1)			描述:极大整数值
类型:float			大小:4 byte		有符号(signed)范围 :(-3.402823466 E+383.402823466351 E+38)					无符号(unsigned)范围:0(1.175494351 E-383.402823466 E+38)						描述:单精度浮点数值
类型:double			大小:8 byte		有符号(signed)范围 :(-1.7976931348623157 E+3081.7976931348623157 E+308)		无符号(unsigned)范围:0(2.2250738585072014 E-3081.7976931348623157 E+308)		描述:双精度浮点数值
类型:decimal		有符号(signed)范围 :依赖于M(精度)和D(标度)的值							无符号(unsigned)范围:依赖于M(精度)和D(标度)的值			描述:小数值(精确定点数)

  • 字符串类型

类型:char		大小:0-255 bytes 			描述:定长字符串
类型:varchar	大小:0-65535 bytes 			描述:变长字符串
类型:tinyblob	大小:0-255 bytes			描述:不超过255个字符的二进制数据
类型:tinytext	大小:0-255 bytes			描述:短文本字符串
类型:blob		大小:0-65 535 bytes 		描述:二进制形式的长文本数据
类型:text		大小:0-65 535 bytes			描述:长文本数据
类型:mediumblob 大小:0-16 777 215 bytes 	描述:二进制形式的中等长度文本数据
类型:mediumtext 大小:0-16 777 215 bytes		描述:中等长度文本数据
类型:longblob	大小:0-4 294 967 295 bytes	描述:二进制形式的极大文本数据
类型:longtext	大小:0-4 294 967 295 bytes	描述:极大文本数据

  • 日期类型

类型:date		大小:3		范围:1000-01-019999-12-31			格式:YYYY-MM-DD			描述:日期值
类型:time		大小:3		范围:'-838:59:59838:59:59			格式:HH:MM:SS			描述:时间值或持续时间
类型:year		大小:1		范围:19012155						格式:YYYY				描述:年份值
类型:dateTime	大小:8		范围:1000-01-01 00:00:009999-12-31 23:59:59				格式:YYYY-MM-DD HH:MM:SS			描述:混合日期和时间值
类型:timestamp	大小:4		范围:1970-01-01 00:00:012038-01-19 03:14:07				格式:YYYY-MM-DD HH:MM:SS			描述:混合日期和时间值,时间戳

案例:

create table emp(
	id			int 			 comment '编号',		// 纯数字
	workno		varchar(10)		 comment '员工工号',	// 字符串类型,长度不超过10位
	name		varchar(10) 	 comment '姓名',		// 字符串类型,长度不超过10位
	gender		char(1)			 comment '性别',		// 男/女,存储一个汉字
	age			tinyint unsigned comment '年龄',		// 正常年龄,不可能存储负数
	idcard  	char(18)		 comment '身份证号',	// 18位
	entrydate	date			 comment '入职时间'	// 取年月日即可
) comment '员工表';

在这里插入图片描述

DDL-表操作-修改

DDL - 表操作 - 修改(字段)

  • 添加字段
alter table 表名 add 字段名 字段类型(长度) [comment 注释] [约束];

案例:
为emp表增加一个新的字段 “昵称” 为 nickname,类型为 varchar(20)
在这里插入图片描述

  • 修改数据类型
alter table 表名 modify 字段名 新的字段类型(长度);
  • 修改字段名和字段类型
alter table 表名 change 旧字段名 新的字段名 字段类型(长度) [comment 注释] [约束];

案例:
将 emp 表中的 nickname 修改为 username ,类型为 varchar(30)
在这里插入图片描述

  • 删除字段
alter table 表名 drop 字段名;

案例:
删除 emp 表中的 username 字段;
在这里插入图片描述

DDL-表操作-修改(表)

DDL - 表操作 - 修改(表)

  • 修改表名
alter table 表名 rename to 新的表名;

案例:
将 emp 表的表名修改为 employee

在这里插入图片描述

  • 删除表
drop table [if exists] 表名;

在这里插入图片描述

  • 删除指定表,并重新创建该表
truncate table 表名;

在这里插入图片描述

注意:在删除表时,表中的全部数据也会被删除。

DML

DML - 添加数据

  • 给指定的字段添加数据
insert into 表名 (字段名1,字段名2,...) values (1,2,...);

在这里插入图片描述

  • 给全部字段添加数据
insert into 表名 values (1,2,...);

在这里插入图片描述

  • 批量添加数据
insert into 表名 (字段名1,字段名2,...) values (1,2,...),(1,2,...);
insert into 表名 values (1,2,...),(1,2,...);

在这里插入图片描述

注意:

  • 插入数据时,指定字段顺序需要与值的顺序是一一对应的。
  • 字符串和日期数据应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。

DML-修改数据

DML - 修改数据

update 表名 set 字段名1=1,字段名2=2,....[where 条件];

在这里插入图片描述
在这里插入图片描述

DML-删除数据

DML - 删除数据

delete from 表名 [where 条件];

在这里插入图片描述

注意:

  • delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的数据。
  • delete 语句不能删除某一个字段的值(可以使用update)。

DQL - 数据查询语言,用来查询数据库中表的记录

DQL - 数据查询语言,用来查询数据库中表的记录

  • DQL-语法
select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段列表
having
	分组后条件列表
order by
	排序字段列表
limit
	分页参数

在这里插入图片描述

DQL - 基本查询

  1. 查询多个字段
select 字段1,字段2,字段3 from 表名;

select * from 表名;

在这里插入图片描述
在这里插入图片描述

  1. 设置别名
select 字段1 [as 别名1], 字段2 [as 别名2] ... from 表名;

在这里插入图片描述

  1. 去除重复记录
select distinct 字段列表 from 表名;

在这里插入图片描述

DQL - 条件查询

  1. 语法
select 字段列表 from 表名 where 条件列表;
  1. 条件
    在这里插入图片描述

DQL - 聚合函数

  1. 介绍
    将一列数据作为整体,进行纵向的计算

  2. 常见的聚合函数
    在这里插入图片描述

  3. 语法

select 聚合函数(字段列表)from 表名;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:所有的 null 值是不参与聚合函数的运算的。

DQL - 分组查询

  1. 语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. where 与 having 区别
  • 执行时机不同:where 是分组之前进行过滤,不满足where条件,不参与分组;而 having 是分组之后对结果进行过滤。
  • 判断条件不同:where 不能使用聚合函数进行判断,而 having 可以。

注意:

  • 执行顺序:where > 聚合函数 > having。
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段没有意义。

DQL - 排序查询

  1. 语法
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 排序方式
  • ASC :升序(默认)
  • DESC:降序

DQL - 分页查询

  1. 语法
select 字段列表 from 表名 limit 起始索引,查询记录数;

在这里插入图片描述

注意:

  • 起始索引从 0 开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是 limit 。
  • 如果查询的是第一页数据,其实索引可以省略,直接简写为 limit 10 。

语句练习:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

DQL - 执行顺序

在这里插入图片描述

DCL - 用来管理数据库用户,控制数据库的访问权限

DCL - 管理用户

  1. 查询用户
use mysql;
select * from user;
  1. 创建用户
create user ‘用户名’@‘主机名’ identified by '密码';

在这里插入图片描述

  1. 修改用户密码
alter user ‘用户名’@‘主机名’ identified with mysql_native_password by '新密码';

在这里插入图片描述

  1. 删除用户
drop user ‘用户名’@‘主机名’;

在这里插入图片描述
注意:

  • 主机名可以使用 % 通配。
  • 这类SQL开发人员操作的比较少,主要是 DBA(数据库管理员) 使用。

DCL - 权限管控

MySQL中定义了很多权限,但是常用的就一下集中:
在这里插入图片描述

  1. 查询权限
show grants for '用户名'@'主机名';

在这里插入图片描述

  1. 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

在这里插入图片描述

  1. 撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

在这里插入图片描述
注意:

  • 多个权限之间,使用逗号隔开。
  • 授权时,数据库名和表名可以使用 * 进行通配,代表所有。

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

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

相关文章

【Django项目】基于Python+Django+MySQL的音乐网站系统项目

功能介绍 首页:歌曲分类、歌曲搜索、热门歌曲、热门下载、新歌推荐 歌曲排行:歌曲分类、分页功能 用户板块:用户登陆/注册、播放历史 歌曲详情:歌曲播放、当前播放列表、歌曲点评、歌曲播放插件、下载歌曲 系统后台:歌…

MacOS 通过Docker安装宝塔面板搭建PHP开发环境

1、docker拉取ubuntu系统 docker pull ubuntu2、运行容器 docker run -i -t -d --name bt -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -p 3306:3306 -p 6379:6379 --privilegedtrue -v /Users/oi/Sites:/www/wwwroot ubuntu-v 后的 /Users/oi/Sites 代表…

redis redisson(仅供自己参考)

redis 通过setnx实现的分布式锁有问题 如图: 解决的新的工具为(闪亮登场):redisson redisson可重入锁的原理 实现语言lua: 加锁实现脚本语言: 释放锁的脚本语言: 加锁的lua -- 首先判断这个锁…

Ubuntu安装MATLAB

一、准备工作 下载MATLAB安装文件: 访问MathWorks官方网站(MathWorks官网),下载适用于Linux的MATLAB安装文件。这通常是一个.iso镜像文件或.zip压缩文件。请注意选择与Ubuntu版本相匹配的MATLAB版本。创建安装目录: 打…

VMware安装Ubuntu以及利用vscode远程Ubuntu

一、VMware安装Ubuntu (1)VMware安装Ubuntu主要参考此文VMware虚拟机安装Ubuntu22.04图文教程(超详细!!!)。 (2)VMware密钥参考此文24年VMware 17密钥(附下载链接&#…

01. 数组篇(进行中......)

一. 前缀和技巧 &#xff08;1&#xff09;前缀和 前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。 class NumArray { public:vector<int> preSum; //前缀和数组NumArray(vector<int>& nums) {//preSum[0] 0&#xff0c;便于计算累加和preSum…

解决QT creator中文乱码问题

1.首先设置文本编辑器为UTF-8 先在工具-选项-文本编辑器-behavior部分选择文件编码为UTF-8&#xff0c;紧接着是选择“如果编码是UTF-8则添加”&#xff0c;如下图 2.设置ext code for tools 为system 具体解决办法是 工具-选项-环境-interfaces这一栏有一个“Text code for to…

【2024_CUMCM】Matlab快速入门

目录 常识 disp and input 字符串合并 sum 提取矩阵指定位置的元素 指定行列 指定行or指定列&#xff08;返回行/列向量&#xff09; 指定某些行 指定全部元素&#xff0c;按列拼接 size repmat 矩阵的运算 基本运算 形状相同的矩阵运算 每个元素同时和常数相乘或相…

揭秘!为何SmartEDA电路仿真成为学生的科技利器,学习之路从此不再难行

在当今科技日新月异的时代&#xff0c;电子工程、自动化、通信等专业的学生们面临着前所未有的学习挑战。传统的电路设计与分析方法已难以满足现代教学需求&#xff0c;而SmartEDA电路仿真软件的出现&#xff0c;如同为学生们带来了一盏明灯&#xff0c;照亮了他们的学习之路。…

C++-时间复杂度

前言 OJ测试中最烦人的结果莫过于TLE(Time Limit Exceed 超时)和MLE(Mempry Limit Exceed超内存&#xff09;了&#xff0c;在递归和搜索题里面看见这两货就烦。 目录 前言 时间复杂度 时间复杂度概念 时间复杂度的表示法 时间复杂度OJ测试要求 时间复杂度例举 剪枝 1.可行…

C++相关概念和易错语法(19)(继承规则、继承下的构造和析构、函数隐藏)

1.继承规则 继承的本质是复用&#xff0c;是结构上的继承而不是内容上的继承&#xff0c;近似于在子类中声明了父类的成员变量。 &#xff08;1&#xff09;写法&#xff1a;class student : public person 派生类&#xff08;子类&#xff09;&#xff0c;继承方式&…

Cypress UI自动化之安装环境

注&#xff1a;macOS系统 一、git环境 略 二、node环境 1、安装nvm 前提&#xff1a;有装过Homebrew&#xff0c;参考adb使用方法文档 1、安装nvm&#xff1a;首先要保证之前没有安装过node&#xff0c;如果之前安装过&#xff0c;先 brew uninstall node brew install n…

省市县下拉框的逻辑以及多表联查的实例

2024.7.12 一. 省市县的逻辑开发。1、准备&#xff1a;1.1. 要求&#xff1a;1.2 数据库表&#xff1a; 2. 逻辑&#xff1a;3. 方法3.1 创建实体类3.2 数据访问层3.3 实现递归方法3.4 控制器实现3.5 前端处理 二、多表联查&#xff08;给我干红温了&#xff09;1. 出现了问题2…

Java性能优化-switch性能优化-用String还是int做比较

场景 Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化&#xff1a; Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化_java热点函数-CSDN博客 参考以上性能测试工具的使用。 下面针对Java中对switch-case比较时…

LLM 合成数据生成完整指南

大型语言模型是强大的工具&#xff0c;不仅可以生成类似人类的文本&#xff0c;还可以创建高质量的合成数据。这种能力正在改变我们进行 AI 开发的方式&#xff0c;特别是在现实世界数据稀缺、昂贵或隐私敏感的情况下。在本综合指南中&#xff0c;我们将探索 LLM 驱动的合成数据…

访问控制的定义与原理

访问控制(Access Control)是一种重要的安全机制&#xff0c;用于限制对程序中的数据、函数、类以及计算机系统中资源(如文件、数据库、网络设备等)的访问权限。其主要目的是保护系统中的敏感信息和资源&#xff0c;防止未经授权的访问和操作&#xff0c;确保系统的安全性、完整…

无向图的双连通分量——AcWing 395. 冗余路径

无向图的双连通分量 定义 在无向图中&#xff0c;一个双连通分量&#xff08;Biconnected Component, BCC&#xff09;是指这样的子图&#xff1a;删除其中任意一个顶点都不会使这个子图分离成两个或更多个不相连的子图。换句话说&#xff0c;双连通分量是无割点的极大连通子…

lua 脚本语言 : 基础到高级语法

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

[Python学习篇] Python异常

什么是异常&#xff1f; 异常&#xff08;Exception&#xff09;是指在程序执行过程中发生的错误事件&#xff0c;它会中断程序的正常执行流程。异常可以由程序中的错误引发&#xff0c;也可以通过主动抛出异常来处理特殊情况。Python 使用异常处理机制来捕获和处理这些错误&am…

初识c++(构造函数,析构函数,拷贝构造函数,赋值运算符重载)

一、类的默认函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。 #include<iostream> using namespace std; class Date { public:Date(){_year 1;_month 1;_day 1;cout << _year << "/" <&…