【MySQL】2、MySQL数据库的管理

常用
describe user;
Field:字段名称
Type:数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空key :主键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)1 2
id:1 3 5 7

常用的数据类型:

int:整型						用于定义整数类型的数据
float:单精度浮点4字节32位		准确表示到小数点后六位		
double:双精度浮点8字节64位
char:固定长度的字符类型		用于定义字符类型数据。
varchar:可变长度的字符类型		
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位		指定长度数组
#Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错

主键是唯一的,但主键可以由多个字段构成

SQL 语句

DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

1、DDL语句用于创建数据库对象,如库、表、索引等:

新建-create
增:
create database 库名;        创建库
use 库名;    
create table 表名 (字段1 数据类型,字段2 数据类型,...,PRIMARY KEY (主键名));

增例:
create database school;
use school;
create table class (id int not null,name char(10) not null,score decimal(5,2),passwd char(48) default'',primary key (id));

#NOT NULL   不允许为空值
#DEFAULT''  默认值为空
PRIMARY KEY :主键一般选择没有重复并且不为空值的字段
删除-drop
删:
drop table 表名;            删除表
drop table 库名.表名;       删除指定库中的表
drop database 库名;         删除库

#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

删例:
drop table class;
drop table school.class;
drop database school;

2、DML管理表中的数据记录

增-insert
insert into 表名(字段1,字段2,...) values (字段1的值,字段2的值,...);
desc 表名;        查看表的格式
insert into class(id,name,score,passwd) VALUES (1,'zhangsan',70.5,password('123456'));

insert into class values(2,'lisi',87.3,123456);    向表中添加数据
select * from 表名;        查看表中的内容


#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示;若不使用PASSWORD(''),查询时以明文显示。
添加字段
alter table 表名 add 新字段
alter table ky30 add address varchar(48) default '地址不详';

alter table 表名 modify column 字段名 数据类型;
 改-update
UPDATE 表名 SET 字段名1=字段值1,字段名2=字段值2 WHERE 条件表达式;
#要修改该哪些字段就写哪些字段

例:
修改指定用户的密码:
update school.class set passwd=password('') where name='zhangsan';
修改指定id的姓名和密码
update class set name='wangwu',passwd='123' where id=2;
修改表的字段
alter table 表名 change 旧列名 新列名 数据类型;
修改表名
alter table 原表名 rename 新表名;
alter table ky30 rename ky29;
修改root用户登录密码
修改mysql的登录密码:
update mysql.user set authentication_string=password('123') where User='root';
刷新生效
flush privileges;
删-delete
DELETE FROM 表名 WHERE 条件表达式;

删除class表指定id的数据
delete from class where id=2;
清空表中的所有数据
delete from class;
drop table class;

delete清空表,原理:一行一行删除记录的数据,会返回删除的记录条目;如果表中有自增长字段,会记录最大ID,当再次新添加的记录,会从原来最大的记录ID后面继续自增写入记录

truncate清空表,原理是:将表结构按原样重新建立,速度较快,不会返回被删除的条目;再次添加记录,ID会从1开始

3、DQL数据查询语句

查-select
select * from 表名        查看指定表的所有数据

查找指定表中的指定用户:
select id,name,score,passwd from school.class where name='zhangsan';
select * from school.class where id=2;

限制查找
select * from limit 2;           显示前两行
select * from limit 2,3;        显示前两行后的三行

数据表高级操作

清空列表

delete from 语句可以使用 where 子句对删除的结果集进行过滤选择

truncate table语句是删除表中所有记录数据

创建一个表并写入内容
create table ky (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', level CHAR(16) NOT NULL, PRIMARY KEY (user_name));
insert into ky values('lisi', password('123456'),'10');
insert into ky  values('lisi1', password('123456'),'45');
insert into ky  values('lisi2', password('123456'),'46');
insert into ky  values('lisi3', password('123456'),'47');
insert into ky  values('lisi4', password('123456'),'48');
insert into ky  values('lisi5', password('123456'),'49');
insert into ky  values('lisi6', password('123456'),'50');
insert into ky  values('lisi7', password('123456'),'1');
show tables;
select * from ky;

删除表中符合条件的数据
delete from ky where level >=45;
select * from ky;
清空表中的所有数据
truncate table ky;
select * from ky;

临时表

用于保存一 些临时数据,只在当前连接可见,连接被关闭后,临时表就会被 MySQL 删除,相关的资源也会被释放。

CREATE TEMPORARY TABLE `mytmp` (`id` int(10) NOT NULL AUTO_INCREMENT,`NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`level` int(10) NOT NULL,PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into mytmp(name,level) values('aa',10);
select * from mytmp;
退出数据库;临时表就会消失

mysql -uroot -p

克隆表

方法1:
create table ky (name varchar(32) not null,passwd char(48) default'',id int(10) nott null);
show tables;
insert into ky values('lisi', password('123456'),'10');
insert into ky  values('lisi1', password('123456'),'45');
insert into ky  values('lisi2', password('123456'),'46');
insert into ky  values('lisi3', password('123456'),'47');
insert into ky  values('lisi4', password('123456'),'48');
insert into ky  values('lisi5', password('123456'),'49');
insert into ky  values('lisi6', password('123456'),'50');
insert into ky  values('lisi7', password('123456'),'1');
select * from ky;

克隆表的格式
create table test like ky;
select * from test;
克隆表的数据内容
insert into test select * from ky;
select * from test;
方法2:
show create table ky\G
克隆表的格式
create table test1 ("name" varchar(32) NOT NULL,"passwd" char(48) DEFAULT '',"id" int(10) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
show tables;
克隆表的内容
insert into test1 select * from ky;
select * from test1;

DCL设置用户权限

1.新建用户

create user '用户名'@'来源地址' 设置用户的密码 identified by '密码';

2.查询创建的用户信息,并做增删改

mysql 用户名 mysql.user

select user

修改用户密码
set password = password ('密码') 当前
修改其他用户的密码
set password for '用户名'@'localhost' = password ('密码')

忘记用户的密码
修改my.cnf配置,跳过密码认证
skip-grant-tables

数据库用户授权-grant

授予部分权限
grant 权限列表 on 库名.表名 to '用户名'@'来源地址' identified by '密码';
授予全部权限
grant all prvileges on 库名.* to '用户名'@'来源地址' identified by '密码';

grant select on school.* to 'zhangsan'@'localhost' identified by '123456';
flush privileges;   

退出mysql用zhangsan账户登录
quit
mysql -u zhangsan -p

验证授权的访问操作
select * from school.class; 
验证非授权的访问操作
drop table school.class; 
授权
grant all on school.* to 'lisi'@'192.168.220.101' identified by 'abc123';   
刷新
flush privileges;
查看授权情况
show grants;
查看用户权限
show grants for 用户名@来源地址
查看用户权限
show grants for 'lisi'@'192.168.220.101';
 撤销用户的权限
revoke 权限列表 on 库名.表名 from '用户名'@'来源地址'
例:
revoke all on school.* from 'lisi' @ 'localhost';

遇到root密码忘了怎么办?

【处理方案】

1、在 my.ini 或 my.cnf 的 [mysqld] 下添加 skip-grant-tables
[root@localhost mysql]# vi /etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
skip-grant-tables                     ####此处添加###


2、重启mysql数据库
[root@localhost mysql]# systemctl restart mysqld    


3、登录数据库
[root@localhost mysql]# mysql -uroot -p
Enter password:               ###回车直接登录
mysql> 

4、修改root密码
mysql> update mysql.user set authentication_string=PASSWORD('abc123') where User='root'; 
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

5、修改mysql免密码登录配置 然后重启服务
[root@localhost mysql]# vi /etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
#skip-grant-tables

6、重启mysql数据库
[root@localhost mysql]# systemctl restart mysqld


7、mysql数据库验证
[root@localhost mysql]# mysql -uroot -p
Enter password:                                ####输入abc123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

案例:建立公司IT运营部工资表

需求描述:

为公司建立员工工资数据库 imployee_salary
在imployee_salary数据库中,建立 IT_salary数据表,以保存IT运营部员工的工资信息,如下表所示

表格如下:

岗位类别		姓名	年龄	员工ID	学历	年限	薪资
网络工程师	孙空武	27	011	本科	3	4800
Windows工程师	蓝凌	19	012	中专	2	3500
Linux工程师	姜纹	32	013	本科	8	15000
Java软件工程师	关园	38	014	大专	10	16000
硬件驱动工程师	罗中昆	29	015	大专	9	16500

答:

1、建立数据库
mysql> create database imployee_salary;
Query OK, 1 row affected (0.00 sec)

mysql> use imployee_salary;
Database changed

2、建立数据表IT_salary            ###这边一定要注意是中文的逗号还是英文的逗号
MySQL [imployee_salary]> create table IT_salary (
    -> type varchar(32) not null,
    -> name char(16) not null,
    -> age tinyint not null,
    -> id smallint not null,
    -> degree char(16) default '大专',
    -> years tinyint not null,
    -> salary int not null,
    -> primary key (id));



3、将IT运营部的员工工资信息插入到IT_salary

mysql> insert into IT_salary values(
    -> '网络工程师','孙空武',27,011,'本科',3,4800);
Query OK, 1 row affected (0.04 sec)

mysql> insert into IT_salary values(
    -> 'Windows工程师','蓝凌',19,012,'中专',2,3500);
Query OK, 1 row affected (0.01 sec)

mysql> insert into IT_salary values( 
    -> 'Linux工程师','姜纹',32,013,'本科',8,15000); 
Query OK, 1 row affected (0.00 sec)

mysql> insert into IT_salary values( 
    -> 'Java软件工程师','关园',38,014,'大专',10,16000);
Query OK, 1 row affected (0.00 sec)

4、查看核对信息
mysql> select * from IT_salary;
+---------------------+-----------+-----+----+--------+-------+--------+
| type                | name      | age | id | degree | years | salary |
+---------------------+-----------+-----+----+--------+-------+--------+
| 网络工程师          | 孙空武    |  27 | 11 | 本科   |     3 |   4800 |
| Windows工程师       | 蓝凌      |  19 | 12 | 中专   |     2 |   3500 |
| Linux工程师         | 姜纹      |  32 | 13 | 本科   |     8 |  15000 |
| Java软件工程师      | 关园      |  38 | 14 | 大专   |    10 |  16000 |
+---------------------+-----------+-----+----+--------+-------+--------+
4 rows in set (0.00 sec)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

lwIP更新记10:IP 冲突检测

lwip-2.2.0-rc1 版本于 2023 年 6 月 29 日发布,带来了我期盼已久的 IPv4 冲突检测 功能。 lwip-2.2.0-rc1 版本重新回归了 master 分支(主分支),不再使用单独的稳定分支。 master 分支 是一个 Git(版本控制程序&…

AWS 提示证书签名过期无法自动更新

如果域名没有通过验证的话,证书的过去是没有办法自动更新的。 验证的方式也非常简单,通过下面的配置,把 CNAME添加到你的域名上面,AWS 就可会自动完成验证了。 当添加完成后,AWS 验证需要的时间大致在 30 分钟到 1 个…

春秋云镜 :CVE-2020-21650(MyuCMS后台rce)

一、题目 靶标介绍: MyuCMS开源内容管理系统,采用ThinkPHP开发而成的社区商城聚合,插件,模板,轻便快捷容易扩展 其2.2版本中admin.php/config/add方法存在任意命令执行漏洞. 进入题目: exp: url/index.p…

推荐一款好用的开源视频播放器(免费无广告)

mpv是一个自由开源的媒体播放器,它支持多种音频和视频格式,并且具有高度可定制性。mpv的设计理念是简洁、高效和功能强大。 软件特点: 1. 开源、跨平台。可以在Windows\Linux\MacOS\BSD等系统上使用,完全免费无广告。Windows版解压…

k8s 常用命令(四)

12、删除pod中的nginx服务及service [rootmaster ~]# kubectl delete deployment nginx -n kube-public [rootmaster ~]# kubectl delete svc -n kube-public nginx-service 13、查看endpoint的信息 [rootmaster ~]# kubectl get endpoints 14、修改/更新(镜像、…

传感网应用开发1+X实训室建方案

一、概述 1.1建设背景 从院校实际教学情况与人才培养计划为出发点,贯彻传感网应用开发1X实训室职业技能等级标准,充分考虑传感网应用开发1X实训室从业人员的职业发展路径与成长路径,以职业素养、职业技能、知识水平为主要框架结构&#xff…

大型企业是否有必要进行数字化转型?

在数字化、信息化、智能化蓬勃发展的今天,初创公司可以很轻易的布局规划数字化发展的路径。而对于大型企业而言,其已经形成了较为成熟稳固的业务及组织架构,是否还有必要根据自身行业发展特点寻求数字化转型?(比如制造…

[ACL2023] Exploring Lottery Prompts for Pre-trained Language Models

Exploring Lottery Prompts for Pre-trained Language Models 文章链接 清深的工作,比较有意思的一篇。作者先给出假设,对于分类问题,在有限的语料空间内总能找到一个prompt让这个问题分类正确,作者称之为lottery prompt。为此&…

LeetCode面试经典150题(day 2)

26. 删除有序数组中的重复项 难度:简单 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯…

微信小程序|步骤条

步骤条是现代用户界面设计中常见的元素之一,它能够引导用户按照预定顺序完成一系列任务或步骤。在小程序中,实现步骤条可以为用户提供更好的导航和引导,使用户体验更加流畅和直观。本文将介绍如何在小程序中实现步骤条,并逐步展示实现的过程和关键技巧 目录 步骤条的作用及…

单片机UART一对多:同时读取多个传感器基于modbus协议

文章目录 背景MODBUS协议介绍UART接口改一对多参考链接 背景 很多传感器现在都做成了串口模块,如激光测距传感器TOF050,在开发时使用串口功能模块不仅大大加快了我们的开发进度,还能降低功能模块直接的耦合度,专业是功能交给专业…

GAN原理 代码解读

模型架构 代码 数据准备 import os import time import matplotlib.pyplot as plt import numpy as np import torchvision.transforms as transforms from torch.utils.data import DataLoader from torchvision import datasets import torch.nn as nn import torch# 创建文…

【C语言】动态内存管理(malloc,free,calloc,realloc)-- 详解

一、动态内存分配 定义:动态内存分配 (Dynamic Memory Allocation) 就是指在程序执行的过程中,动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样,需要预先分配存储空间,而是由系统根据程…

十、pikachu之php反序列化

文章目录 1、php反序列化概述2、实战3、关于Magic function4、__wakeup()和destruct() 1、php反序列化概述 在理解这个漏洞前,首先搞清楚php中serialize(),unserialize()这两个函数。 (1)序列化serialize():就是把一个…

基于Jenkins+Git+Ansible 发布PHP 项目-------从小白到大神之路之学习运维第88天

第四阶段提升 时 间:2023年8月25日 参加人:全班人员 内 容: 基于JenkinsGitAnsible 发布PHP 项目 目录 基于JenkinsGitAnsible 发布PHP 项目 一、部署PHP 运行环境 二、主机环境配置 三、Tomcat主机操作: 四、Jenkins主…

【golang】panic函数、recover函数以及defer语句

从panic被引发到程序终止运行的大致过程是什么? 大致过程: 某个函数中的某行代码有意无意地引发了一个panic。这时,初始的panic详情会被建立起来,并且该程序的控制权会立即从从行代码转移至调用其所属函数的那行代码上&#xff…

CentOS系统环境搭建(十七)——elasticsearch设置密码

centos系统环境搭建专栏🔗点击跳转 elasticsearch设置密码 没有密码是很不安全的一件事😭 文章目录 elasticsearch设置密码1.设置密码2.登录elasticsearch3.登录kibana4.登录elasticsearch-head 1.设置密码 关于Elasticsearch的安装请看CentOS系统环境搭…

SpringBootWeb案例 Part 4

3. 修改员工 需求:修改员工信息 在进行修改员工信息的时候,我们首先先要根据员工的ID查询员工的信息用于页面回显展示,然后用户修改员工数据之后,点击保存按钮,就可以将修改的数据提交到服务端,保存到数据…

【校招VIP】产品思维分析之面试新的功能点设计

考点介绍: 这种题型是面试里出现频度最高,也是难度最大的一种,需要面试者对产品本身的功能、扩展性以及行业都有一定的了解。而且分析时间较短,需要一定的产品能力和回答技巧。 『产品思维分析之面试新的功能点设计』相关题目及解…

java+springboot+vue儿童慈善捐赠管理系统的设计与实现8n9e4

针对用户需求开发与设计,该技术尤其在各行业领域发挥了巨大的作用,有效地促进了“爱相连”儿童慈善管理的发展。然而,由于用户量和需求量的增加,信息过载等问题暴露出来,为改善传统线下管理中的不足,本文将…