MYSQL-数据库-DDL-DML-DQL-DCL-基础学习

MySql概念:

        建立在关系模型基础上,有多张相互连接的二维表组成的数据库

SQL通用语法:

        1.SQL语句可以单行或多行书写,以分号结尾

        2.SQL语句可以使用空格/缩进来增强语句的可读性

        3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

        4.注释

        单行注释:-- 注释内容,或#注释内容(mysql特有)

        多行注释:/*注释内容*/

mysql定义字符集

设置表字符集
alter table 表名 default character set utf8;修改需要插入中文字段的属性
alter table 表名 change 列名 列名 varchar(255) character set utf8;修改数据库字符集
编辑配置文件my.cnf
client下
default-character-set=utf8
mysqld下
character-set-server=utf8
重启mysql
show variables like '%character%'

SQL分类

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

DDL-数据库操作

       查询所有数据库
SHOW DATABASES;
查询当前数据库
SELECT DATABASE();
创建数据库
CREATE DATABASE [IF NOT EXISTS]数据库名 [DEFAULT CHARSET字符集] [COLLATE排序规则];IF NOT EXISTS:数据库不存在的情况下
DEFAULT CHARSET:字符集,可以省略,默认是UTF-8
COLLATE:排序规则
方括号中的东西都是可选的
CREATE DATABASE 表名 CHARACTER SET utf8;
删除数据库
DROP DATABASE 数据库名
使用
USE [if exists]数据库名
方括号表示如果存在,则删除

DDL-表操作-查询

查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC 表名;
查询指定表的建表语句
SHOW CREATE TABLE 表名;

DDL-表操作-创建

创建表
mysql> create table test(-> id int comment '编号',-> name varchar(50) comment '姓名',-> age  int comment '年龄',-> xingbie varchar(1) comment '性别'-> ) comment 'user表';
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+---------------+
| Tables_in_zhu |
+---------------+
| test          |
+---------------+
1 row in set (0.00 sec)mysql>
这里的test是表名,id,name,age,xingbie是列数,int和varchar是类型,varchar(1)是长度,comment是注释
圆括号外的comment是注释,说明是一个表

DDL表操作-数据类型

数值类型
类型            大小        有符号SIGNED范围        无符号UNSIGNED范围        描述
TINYINT        1byte        -128,127                0,255                小数数值
SMALLINT       2byte        -32768,32767           0,65536               大整数值
MEDIUMINT      3byte        -8388608,8388607       0,16777215            大整数值
INT或INTEGER   4byte        -2147483648,2147483647 0,4294967295          大整数值
BIGINT         8byte        -2^63,2^63-1            0,2^64-1              极大整数1
FLOAT          4byte                                                       单精度浮点值
DOUBLE         8byte                                                         双精度浮点值
DECTMAL                                                                   小数值
字符串类型
类型                大小                    描述
CHAR                0-255bytes            定长字符串
VARCHAR             0-65535bytes          变长字符串
TINYBLOB            0-255bytes            不超过255个字符的二进制数据
TINYTEXT            0-255bytes            短文本字符串
BLOB                0-65 535bytes         长文本数据
MEDIUMBLOB          0-16 777 215 bytes    二进制形式中等长度文本数据
MEDIUMTEXT          0-16 777 215 bytes    中等长度文本数据
LONGBLOB            0-4 294 967 295bytes  二进制形式的极大文本数据
LONGTEXT            0-4 294 967 295bytes  极大文本数据  
日期类型
类型        大小       范围                                    格式            描述
DATE        3        1000-01-01--9999-12-31                YYYY-MM-DD        日期值
TIME        3        -838:59:59--838:59:59                 HH:MM:SS          时间值持续时间
YEAR        1        1901--2155                            YYYY              年份值
DATETIME    8        1000-01-01 00:00:00--9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期时间
TIMESTAMP   4         1970-01-01 00:00:01--2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳   

DDL-表操作-修改

1.添加字段
ALTTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
2.修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧的字段名  新字段名 新类型(长度) [COMMENT 注释][约束];
3.删除字段
ALTER TABLE 表名 DROP 字段名
4.修改表名
ALTER TABLE 表名 RENAME TO 新表名;

5.删除表

DROP TABLE [if exists]表名;  如果存在
TRUNCATE TABLE 表名;    //删除指定表,并且重新创建

DML介绍:

        DML用来对数据库中表的记录进行增删改操作,是数据库的操作语言

添加数据:INSERT
修改数据:UPDATE
删除数据:DELETE

DML-添加数据

1.给指定字段添加数据
1.给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,....) VALUES(值1,值2,...);2.给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2);3.批量添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2),(值1,值2);
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...);

注意:

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

DML-修改数据

UPDATE 表名 SET 字段名1=值1,字段名2=值2,....[WHERE 条件];注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据

例子:

修改id为1的name值为'你好'
update newtable set name='你好' where id=1;

DML-删除数据

DELETE FROM 表名 [WHERE 条件];

例子:

删除newxingbie为女的所有数据

删除所有数据
DELETE from newtable;

DQL-介绍

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

查询语句:SELET

DQL-语法:

SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMIT分页参数
查询分类
基本查询条件查询(WHERE)聚合函数(count,max,avg,sum)分组查询(GROUP BY)排序查询(ORDER BY)分页查询(LIMIT)

DQL-基本查询

1.查询多个字段
SELECT 字段1,字段2,字段3... FROM 表名;
SELECT * FROM 表名;
2.设置别名
SELECT 字段1 [AS 别名],[AS 别名2],....FROM 表名;

例如起字段名为 工作地址

具有一次性,单一性,第二次查询不用as则为原来的样子

如下,没有as也是同样效果,所以as可以省略

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

例如

DML-条件查询

1.语法:

SELECT 字段列表 FROM 表名 WHERE 条件列表;

2.条件

比较运算符                功能
>                        大于
>=                       大于等于
<                        小于           
<=                       小于等于
=                        等于
<>或!=                   不等于
BETWEEN...AND...         在某个范围之内(含量小,最大值)
IN(...)                  在in之后的列表中的值,多选一
LIKE 占位符               模糊匹配(...匹配单个字符,%匹配任意个字符)
IS NULL                  是NULL########################################################################
逻辑运算符                    功能
AND或&&                      并且(多个条件同时成立)
OR或||                       或者(多个条件任意一个成立)
NOT或!                      非,不是
is null的使用
查询有身份证号的员工信息
select * from yg where idcard id is not null;查询没有身份证号的员工信息
select * from yg where idcard id is null

例子

年龄不等于88的员工

年龄在15岁(包含)到20岁(包含)之间的员工信息

还有一个是between...and在某个范围之内的来匹配

性别为女,年龄小于25

or语句使用-查询年龄的等于18或20或40的员工信息

in是满足括号中一个条件即可

筛选名字为两个字的员工like使用
select * from yg where name like '__';

查身份证号最后一位是5的员工like语句

select * from yg where idcard like '%5';
%5代表最后一个字符是5
或者
select * from yg where idcard like '_________________5';
和上一个一样

DQL-聚合函数

1.常见聚合函数
函数        功能
count       统计数量
max         最大值
min         最小值
avg         平均值
sum         求和

语法:

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

注意:null值不参与聚合运算

1.统计该企业员工数量

2.统计该企业员工的平均年龄

3.统计企业员工最大年龄和最小年龄

4.统计西安地区员工的年龄之和

DQL-分组查询

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

2.where和having区别

执行时机不同:where是分组之前进行过滤,不满足where条件,而having是分组之后对结果进行过滤
判断条件不同:where不能对聚合函数进行判断,而having可以
3.根据性别分组,统计男员工和女员工的数量

4.根据性别分组,统计男员工和女员工的平均年龄

5.查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于2的工作地址

起别名查询

DQL-排序查询

1.语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式2;
2.排序方式
ASC:升序(默认值)
DESC:降序
3.根据年龄对公司的员工进行升序排序
SELECT * FROM yg ORDER BY age asc;

4.根据入职时间,对员工进行降序排序
SELECT * FROM yg ORDER BY ENDRYDATE DESC;

5.根据年龄对公司的员工尽心升序排序,年龄相同,则按照入职时间降序排序

DQL-分页查询

1.语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是LIMIT
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10
2.查询第一页数据,显示10条记录

起始为:(1-1)*10

或者

2.查询第2页员工数据,每页显示10条记录

查看第1行数据

DQL-案例练习

1.查询年龄为20,21,22,23岁的女性员工信息

2.查询性别为男,并且年龄在20到40岁以内的姓名为三个字的员工

3.查询员工表中,年龄小于60的,男性员工和女性员工的人数

4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序

5.查询性别为男,且年龄在20-40岁以内的前5个员工信息,对查询的结果俺年龄升序排序,年龄相同按入职时间排序

DQL-执行顺序

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

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

DCL管理用户

1.查询用户

use  mysql;
select * from user;

2.创建用户

create user '用户名'@'主机名' identifled by '密码';

3.修改用户密码

alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';

4.删除用户

drop user'用户名'@'主机名';
DCL-权限控制

mysql中定义了很多种权限,但是常用的就以下几种

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

 1.查询权限

SHOW GRANTS FOR '用户名'@'主机名';

例子

赋给root@%所有的数据库和表的权限之后如下

2.授予权限

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

授予me用户对于sjk这个数据库的所有权限

授予root@%所有权限对于所有数据库和表

3.撤销权限

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

撤销root@%的所有权限

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

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

相关文章

SpringBoot核心框架之AOP详解

SpringBoot核心框架之AOP详解 一、AOP基础 1.1 AOP概述 AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程&#xff0c;面向方面编程&#xff09;&#xff0c;其实就是面向特定方法编程。 场景&#xff1a;项目部分功能运行较慢&#xff0c;定位执行耗时…

【RK3588嵌入式图形编程】-SDL2-构建模块化UI

构建模块化UI 文章目录 构建模块化UI1、概述2、创建UI管理器3、嵌套组件4、继承5、多态子组件6、总结在本文中,将介绍如何使用C++和SDL创建一个灵活且可扩展的UI系统,重点关注组件层次结构和多态性。 1、概述 在前面的文章中,我们介绍了应用程序循环和事件循环,这为我们的…

第四届图像、信号处理与模式识别国际学术会议(ISPP 2025)

重要信息 会议官网&#xff1a;www.icispp.com 会议时间&#xff1a;2025年3月28-30日 会议地点&#xff1a;南京 简介 由河海大学和江苏大学联合主办的第四届图像、信号处理与模式识别国际学术会议&#xff08;ISPP 2025) 将于2025年3月28日-30日在中国南京举行。会议主…

低代码与开发框架的一些整合[2]

1.分析的项目资源说明 经过近期的的不断分析与运行对比&#xff0c;最终把注意力集中在了以下几个框架&#xff1a; 01.dibootdiboot.diboot: 写的更少, 性能更好 -> 为开发人员打造的低代码开发平台。Mybatis-plus关联查询&#xff0c;关联无SQL&#xff0c;性能高10倍&a…

Spring Boot 中事务的用法详解

引言 在 Spring Boot 中&#xff0c;事务管理是一个非常重要的功能&#xff0c;尤其是在涉及数据库操作的业务场景中。Spring 提供了强大的事务管理支持&#xff0c;能够帮助我们简化事务的管理和控制。本文将详细介绍 Spring Boot 中事务的用法&#xff0c;包括事务的基本概…

Java面试——Tomcat

优质博文&#xff1a;IT_BLOG_CN 一、Tomcat 顶层架构 Tomcat中最顶层的容器是Server&#xff0c;代表着整个服务器&#xff0c;从上图中可以看出&#xff0c;一个Server可以包含至少一个Service&#xff0c;用于具体提供服务。Service主要包含两个部分&#xff1a;Connector和…

第4章 信息系统架构(三)

4.3 应用架构 应用架构的主要内容是规划出目标应用分层分域架构&#xff0c;根据业务架构规划目标应用域、应用组和目标应用组件&#xff0c;形成目标应用架构逻辑视图和系统视图。从功能视角出发&#xff0c;阐述应用组件各自及应用架构整体上&#xff0c;如何实现组织的高阶…

python小项目编程-中级(1、图像处理)

目录 图像处理 实现 测试 unittest pytest 图像处理 实现界面化操作&#xff0c;使用PIL库实现简单的图像处理功能&#xff0c;如缩放&#xff08;设置缩放比例&#xff09;、旋转和滤镜、对比度调整、亮度调整、灰度图、二值化图&#xff08;二值图如果使用的是彩色图片需…

【Leetcode 每日一题】2209. 用地毯覆盖后的最少白色砖块

问题背景 给你一个下标从 0 0 0 开始的 二进制 字符串 f l o o r floor floor&#xff0c;它表示地板上砖块的颜色。 f l o o r [ i ] floor[i] floor[i] 为 ‘0’ 表示地板上第 i i i 块砖块的颜色是 黑色 。 f l o o r [ i ] floor[i] floor[i] 为’1’ 表示地板上第 i …

Docker 性能优化指南

Docker 提供了强大的容器化功能&#xff0c;能够帮助开发者在不同的环境中构建、测试和部署应用。然而&#xff0c;随着容器化应用的不断增长&#xff0c;Docker 容器可能会面临一些性能瓶颈&#xff0c;影响其运行效率、资源占用和扩展能力。为了确保容器在生产环境中的高效运…

2025 WE DAY品牌日| 天璇II WE X7 Pro充电桩震撼发布,能效电气开启充电革命

随着新能源产业的迅猛发展,充电桩作为电动汽车能量补给的重要基础设施,正在成为市场关注的焦点。能效电气作为充电桩领域的佼佼者,专注于研发高效、智能的充电解决方案,为电动汽车的普及与可持续发展铺设了坚实的基础。 2025年2月21日,能效电气在深圳盛大举办了以“以创新 引未…

< OS 有关 > Ubuntu 24 SSH 服务器更换端口 in jp/us VPSs

原因&#xff1a; 两台 VPS 的 ssh 端口一直被密码重试&#xff0c; us 这台已经封了 632, jp 这台两周前清过一次 sqlite3 数据&#xff0c;现在赞到 1008 Fail2Ban 是使用 sqlite3 来记录&#xff0c;数据量大后&#xff0c;硬盘的 I/O 会飙升&#xff0c;我有写过一个 app…

MATLAB学习之旅:数据插值与曲线拟合

在MATLAB的奇妙世界里,我们已经走过了一段又一段的学习旅程。从基础的语法和数据处理,到如今,我们即将踏入数据插值与曲线拟合这片充满魅力的领域。这个领域就像是魔法中的艺术创作,能够让我们根据现有的数据点,构建出更加丰富的曲线和曲面,从而更好地理解和描述数据背后…

若依-@Excel新增注解numberFormat

Excel注解中原本的scale会四舍五入小数&#xff0c;导致进度丢失 想要的效果 显示的时候保留两个小数真正的数值是保留之前的数值 还原过程 若以中有一個專門的工具类&#xff0c;用来处理excel的 找到EXCEL导出方法exportExcel()找到writeSheet,写表格的方法找到填充数据的方法…

LeetCode 热题 100_搜索二维矩阵(64_74_中等_C++)(二分查找)(暴力破解法;Z字形查找;一次二分查找)

LeetCode 热题 100_搜索二维矩阵&#xff08;64_74&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;暴力破解法&#xff09;&#xff1a;思路二&#xff08;Z字形查找&#xff09;&#xff1a;思路三&#x…

从CNN到Transformer:遥感影像目标检测的技术演进(矿产勘探、精准农业、城市规划、林业测量、军事目标识别和灾害评估等)

在遥感影像分析领域&#xff0c;目标检测一直是研究热点之一。随着高分辨率对地观测系统的不断发展&#xff0c;遥感影像的分辨率和数据量呈爆发式增长&#xff0c;如何高效、准确地从海量数据中提取有用信息&#xff0c;成为了一个亟待解决的问题。近年来&#xff0c;深度学习…

【rt-thread】rt-thread 控制 led 的两种方式

1. pin设备 #define LED_PIN 3int led(void) {rt_uint8_t count;rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); for(count 0 ; count < 10 ;count){ rt_pin_write(LED_PIN, PIN_HIGH);rt_kprintf("led on, count : %d %d\r\n", count, rt_pin_read(LED_PIN));…

Excell 代码处理

文章目录 Excell 代码处理cvc格式xlsl格式小结 Excell 代码处理 有时候要对excell进行分析&#xff0c;或者数据的导入导出&#xff0c;这个时候如果可以用代码读写分析操作那么会方便很多 cvc格式 CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff09;是…

新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)

视频教程和更多福利在我主页简介或专栏里 &#xff08;不懂都可以来问我 专栏找我哦&#xff09; 如果对你有帮助你可以来专栏找我&#xff0c;我可以无偿分享给你对你更有帮助的一些经验和资料哦 目录&#xff1a; 一、XSS的三种类型&#xff1a; 二、XSS攻击的危害&#x…

代码随想录算法【Day52】

Day51 101. 孤岛的总面积 思路 从周边找到陆地然后 通过 dfs或者bfs 将周边靠陆地且相邻的陆地都变成海洋&#xff0c;然后再去重新遍历地图 统计此时还剩下的陆地 代码 #include <iostream> #include <vector> using namespace std; int dir[4][2] {-1, 0, …