news 2026/4/27 1:13:35

mySQL常用操作密令,仅作笔记查询使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mySQL常用操作密令,仅作笔记查询使用

卸载:

1.停止MySQL服务:net stop mysql启动MySQL服务:net start mysql
2.卸载MySQL服务
3.找到MySQL安装目录下的my.ini

datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/Data”

运行:

1.cmd打开:mysql -u root -p之后输入密码
2.修改mysql root用户密码:
格式:mysql> set password for 用户名@localhost = password(‘新密码’);
例子:mysql> set password for root@localhost = password(‘shapolang’);

上面例子将用户root的密码更改为shapolang ; 重新登录,输入新密码shapolang就ok了;

3.停止MySQL服务 运行输入services.msc停止MySQL服务 或者 cmd下输入net stop mysql
4.在cmd下 输入mysqld --skip-grant-tables启动服务器,光标不动
5.新打开cmd 输入mysql -u root -p use mysql;
不需要密码update user set password=password(‘abc’)WHERE User=‘root’;
关闭cmd窗口,在任务管理器结束mysqld进程,在服务管理页面重启MySQL服务—密码修改完成

创建数据库的格式:

create table 表的名字( 数据名字1 数据类型,数据名字2 数据类型,数据名字… );
//用逗号,隔开,结束别忘了写;结束

常用的数据类型

int:整型 double:浮点型, 例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10) 'aaa ’ 占10位
varchar:可变长度字符串类型;
varchar(10) ‘aaa’ 占3为 text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss timestamp:时间戳类型yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

==================================================================
操作数据库、表、列等:
关键字:create、alter、drop
创建数据库密令

create database mydb1;
create database mydb2 character set gbk;
create datebase mydb3 character set gbk collate gbk_chinese_ci;

查询密令:

show databases; 查看当前数据库服务器中的所有数据库
show create database mydb2;查看mydb2数据库的定义信息
drop database mydb3;删除mydb3数据库

修改密令:

alter database mydb2 character set utf8;

查看服务器中的数据库,并把mydb2的字符集修改为utf8;

select database(); 查看当前使用的数据库
use mydb2; 切换到mydb2数据库
Show variables like ‘character%’;查看数据库编码的具体信息

临时更改客户端和服务器结果集的编码,用于数据中文的展示

Set character_set_client=gbk;
Set character_set_results=gbk;

表默认为中文修改方式
1.找到安装目录下的my.ini文件
2.把文中的utf8默认修改为gbk:

[mysql]
default-character-set=gbk

3.重启
把sort表中的goods列改为中文:

alter table sort change goods goods varchar(50) character set utf8;

1. 查看mysql系统的编码格式
在命令窗口界面使用命令:

show variables like ‘char%’;

可以看到server\client\database\connection等变量的编码格式

  1. 修改服务器的编码格式

在mysql安装目录的bin目录下找到my.ini,在[mysqld] 下添加 character_set_server = utf8,重启mysql

  1. 修改数据库的编码格式

alter database 数据库名 character set utf8;


emp2为表的名字

查看表的字段信息:desc emp2;
在表的基础上新增加一个number列:alter table emp2 add number blob;
修改某一列如number,使其长度为60: alter table emp2 modify number varchar(60);
删除某一列如number,但一次只能删一列: alter table emp2 drop number;
修改表的名字为emp22: rename table emp2 to emp22;
查看表格emp2的创建细节:show create table emp2;
修改表的字符集为gbk: alter table emp2 character set gbk;
列名如name修改为rrname: alter table emp2 change name rrname varchar(100);
删除表:drop table emp2;

查询表中的数据(DML操作)密令:

对数据进行增删改操作:insert、update、delete emp2为表的名字
查询表中的所有数据 : select*from emp2;

插入操作密令:insert 注意:列名与列值的类型、个数、顺序要一一对应。

例如: create table emp2(id int,name varchar(100),gender varchar(10),
birthday date,salary float(10,2),entry_date date,resume text);

对表进行插入操作: insert into emp2(id,name,gender,birthday,salary,entry_date,resume)
VALUES(1,‘zhang’,‘female’,‘2020-5-10’,10000,‘2020-5-5’,‘good girl’);
insert into emp2(id,name,gender,birthday,salary,entry_date,resume)
VALUES(2,‘lisi’,‘male’,‘2020-5-10’,10000,‘2020-5-5’,‘good boy’);

或者便捷点: 直接这样写:insert into emp2 values(2,‘lisi’,‘male’,
‘2020-5-10’,10000,‘2020-5-5’,‘good boy’);

修改操作密令:update

例如: 将salary修改为5000元: UPDATE emp2 SET salary=5000;
将name为’zhang’的salary修改为3000元,gender改为female:
UPDATE emp2 SET salary=3000,gender='female’WHERE name=‘zhang’;

删除操作密令:delete

删除表中名称为’zhang’的记录:DELETE FROM emp2 WHERE name=‘zhang’; 删除表中所有记录:DELETE FROM emp2;
使用truncate删除表中记录:TRUNCATE TABLE emp2;
注意: DELETE 删除表中的数据,表结构还在;
删除后的数据可以找回 TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。
删除的数据不能找回。执行速度比DELETE快。

数据查询密令(DQL操作)
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张虚拟表。 查询关键字:SELECT
语法: SELECT 列名 FROM表名

查询所有列:SELECT * FROM stu;
查询指定列:SELECT id, name, age FROM stu;

模糊查询:

查询姓名中第2个字母为“i”的name记录 SELECT * FROM stu WHERE name LIKE ‘_i%’;
注意:这个是想查name第几位为i的名字,前面可用空格什么的代替 上面的太麻烦。。。
或者直接全部进行模糊查询:
查询姓名中包含“a”字母的学生记录 SELECT * FROM stu WHERE name LIKE ‘%a%’;

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
=、!=、<>、<、<=、>、>=;

BETWEEN…AND; IN(set); IS NULL; AND; OR; NOT;

查询age在20到40之间的记录

SELECT *FROM stu WHERE age>=20 AND age<=40;
或者 SELECT *FROM stu WHERE age BETWEEN 20 AND 40;

查询性别非男的学生记录

SELECT *FROM stu WHERE gender!=‘male’;
或者 SELECT *FROM stu WHERE gender<>‘male’;
或者 SELECT *FROM stu WHERE NOT gender=‘male’;

去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp2表中name字段存在相同的记录。当只查询emp2表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT:

SELECT DISTINCT name FROM emp2;
查看表中的age与id值相加之和
SELECT *,age+id FROM emp2;
若id为空:则 SELECT *,sal+IFNULL(id,0) FROM emp2;

在上面查询中出现列名为sal+IFNULL(id,0),这很不美观,现在我们给这一列给出一个别名,为total:

SELECT *, sal+IFNULL(id,0) AS total FROM emp2;
给列起别名时,是可以省略AS关键字的:
SELECT *,sal+IFNULL(id,0) total FROM emp2;

排序:

查询所有emp2记录,按年龄age升序排序 asc为升序 desc为降序
SELECT *FROM emp2 order by age asc;
或者 降序操作:
SELECT *FROM emp2 order by age desc;

查询所有emp2,按age降序排序,如果age相同时,按编号升序排序
SELECT * FROM emp2 order by age desc,emp2 no asc;

聚合函数:sum avg max min count
聚合函数是用来做纵向运算的函数:

COUNT():统计指定列不为NULL的记录行数;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

例如:

查询emp2表中记录数: SELECT COUNT() AS cnt FROM emp2;
查询emp表中有age的人数:SELECT COUNT(age) cnt FROM emp2;
查询emp表中age大于20的人数: SELECT COUNT(
)FROM emp2 where age>20;

分组查询:凡和聚合函数同时出现的列名,则一定要写在group by 之后

例如:查询每个列的name和name中salary大于3000工资的人数:
select name,count(*) from emp2 where salary>3000 group by name;

HAVING子句:

查询工资总和大于9000的name以及salary工资和:
SELECT name, SUM(salary)FROM emp2 GROUP BY name HAVING SUM(salary) > 9000;

注:having与where的区别:

1.having是在分组后对数据进行过滤. where是在分组前对数据进行过滤 2.having后面可以使用分组函数(统计函数) where后面不可以使用分组函数。 WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件, 那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

LIMIT用来限定查询结果的起始行,以及总行数。

查询5行记录,起始行从0开始
SELECT * FROM emp2 LIMIT 0, 5;
注意,起始行从0开始,即第一行开始!

2表查询

//概念,只要两表有公共的字段有匹配之,就可以将两表中的记录组合起来。
//这里的表newscate和news表的公共字段就是news_id和news表的id。
1.INNER JOIN ===就是两个表的相同部分的集合,也就是说把这两个表的相同内容变成一个新的表,然后显示出来 语法: select 字段 from table1 inner join table2 on table1.field1=table2.field2;

//例子:
SELECT title,name,description FROMnewscateINNER JOIN news on newscate.news_id=news.id;

2.LEFT JOIN ====左关联查询,left前面的表示主表,后面是附表,
//这里,主表会显示,附表没有的值会null

//例子: select a.*, b.description from news as a LEFT JOIN newscate as b
on a.id=b.news_id;

3.RIGHT JOIN====右关联查询,类似于左关联,

SELECT a.title,a.name,b.* from news as a RIGHT JOIN newscate as b on
a.id=b.news_id;

三表关联查询

select u.user_id,u.user_name,u.user_sex,c.college_name,s.subject_name,s.achievement from user u LEFT JOIN subject s ON s.user_number=u. user_id LEFT JOIN
college c ON c.subject_number=s.subject_id;
。 。 。 可继续添加

下面三个表分别是:table1表、table2表、table3表

**

目标:查询A公司的所有30岁以下员工的名字。

employee_id company_id
1 101
2 101
3 102

company_id company_name
101 A
102 B

employee_id employee_name employee_age
1 李云 35
2 张飞 23
3 高丽 25

SELECT employee_name FROM (table3 c LEFT JOIN TABLE1 a ON
c.employee_id=a.employee_id ) LEFT JOIN table2 b ON
b.company_id=a.company_id WHERE company_name =‘A’ and
employee_age<30;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 1:47:36

别再只看mAP了!用YOLOv11实战教你读懂混淆矩阵和PR曲线

从混淆矩阵到PR曲线&#xff1a;YOLOv11评估结果实战解读指南 当你完成YOLOv11模型的训练&#xff0c;看到终端输出那一连串数字和图表时&#xff0c;是不是有种"每个字母都认识但组合起来就懵"的感觉&#xff1f;别担心&#xff0c;这几乎是每个计算机视觉工程师的必…

作者头像 李华
网站建设 2026/4/17 19:13:09

缺电?​缺算力?​那是L2时代的问题,​L3时代​5瓦的类人智能,​千瓦的ASI​,会是一个什么样的情景?​FPGA DSP 甚至STM32​!OFIRM会彻底重构这个世界!​

缺电&#xff1f;​缺算力&#xff1f;​那是L2时代的问题​L3时代​5瓦的类人智能​千瓦的ASI​会是一个什么样的情景&#xff1f;​FPGA DSP 甚至STM32​OFIRM会彻底重构这个世界&#xff01;​nvidia会从4万亿​一夜回到不足千亿​端侧&#xff0c;内存&#xff0c;会几何级…

作者头像 李华
网站建设 2026/4/18 21:04:42

如何快速掌握艾尔登法环存档迁移工具:新手必看的完整指南

如何快速掌握艾尔登法环存档迁移工具&#xff1a;新手必看的完整指南 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 你是否曾经因为游戏版本更新而无法继续之前的存档&#xff1f;或者想在多个账号间共享自己…

作者头像 李华
网站建设 2026/4/15 16:13:39

PDF-Extract-Kit-1.0与STM32CubeMX的嵌入式集成方案

PDF-Extract-Kit-1.0与STM32CubeMX的嵌入式集成方案 1. 工业现场的真实需求场景 在工厂自动化产线里&#xff0c;设备运行日志、维修手册、质检报告这些资料大多以PDF格式存在。操作员需要快速从几十页的技术文档中提取某个传感器的参数范围&#xff0c;或者从维修记录里找出…

作者头像 李华