【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.userselect 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: 1mysql> 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-tables6、重启mysql数据库
[root@localhost mysql]# systemctl restart mysqld7、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 distributionCopyright (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 changed2、建立数据表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_salarymysql> 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)

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

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

相关文章

Android Jetpack组件的全方位分析

Jetpack是一个用于简化Android应用程序开发的工具包,包含了一系列的组件和工具。Jetpack包含了很多组件,如LiveData、ViewModel、Room、Data Binding、Navigation等。 Jetpack组件是一种更高级别的抽象,它们可以提供更简洁、更易于使用的API。…

self instruct 介绍

《SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions》 github: self-instruct 背景 大模型表现惊人,但是严重依赖于人工编写的指令数据。然而,依靠人工标注数据成本高昂。本文中提出self-instruct框架:一种基于大…

在 React 中如何使用定时器

在React中使用定时器通常有两种方式:使用setInterval和setTimeout函数。 使用setInterval函数: 首先,在组件中导入useEffect和useState函数: import React, { useEffect, useState } from "react";在组件中声明一个状…

ES6-简介、语法

ES6 ES6简介 ​ ECMAScript 6(简称ES6)是于2015年6月正式发布的JavaScript语言的标准,正式名为ECMAScript 2015(ES2015)。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语…

Linux 常用

系统信息 查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c查看物理CPU个数 cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo | grep "c…

Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

一、创建Android签名文件 使用Android Studio开发工具,可视化窗口进行创建 第一步:点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步:选择APK选项 第三步:创建签名文件 第四步:输入创建签名的…

如何五分钟设计制作自己的蛋糕店小程序

在现如今的互联网时代,小程序已成为企业推广和销售的重要利器。对于蛋糕店来说,搭建一个小程序可以为其带来更多的品牌曝光和销售渠道。下面,我们将以乔拓云平台为例,来教你如何从零开始搭建自己的蛋糕店小程序。 首先&#xff0c…

2023/8/27周报

目录 摘要 论文阅读 1、标题和现存问题 2、过度平滑和度量方法 3、处理过坡 4、实验结果 深度学习 1、解决可视化问题 2、CART算法 总结 摘要 本周在论文阅读上,阅读了一篇Pairnorm:解决GNNS中的过平滑问题的论文。PairNorm 的核心思想是在图卷积层之间引…

CUDA和C++混合编程及CMakeLists.txt

1. 概要 首先认识一个问题,单从CMakeLists.txt的角度来看,无法同时使用两种编译器编译两种语言。不过直接编写Makefile是可以的,通过设置不同的任务,可以实现一个Makefile编译两个语言。但这不是这里要讨论的重点。 使用CUDA和C进…

7 集群基本测试

1. 上传小文件到集群 在hadoop路径下执行命令创建一个文件夹用于存放即将上传的文件: [atguiguhadoop102 ~]$ hadoop fs -mkdir /input上传: [atguiguhadoop102 hadoop-3.1.3]$ hadoop fs -put wcinput/work.txt /input2.上传大文件 [atguiguhadoop1…

Vue 3 常见面试题汇总

前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 前言 最近两年许多大厂都在实行“降本增效”、“优化组织架构”,然后“为社会输送了大量人才”,今年(2023&#xff…

视频云存储/安防监控视频智能分析网关V3:占道经营功能详解

违规占道经营者经常会在人流量大、车辆集中的道路两旁摆摊,导致公路交通堵塞,给居民出行的造成不便,而且违规占路密集的地方都是交通事故频频发生的区域。 TSINGSEE青犀视频云存储/安防监控视频/AI智能分析网关V3运用视频AI智能分析技术&…

10万字智慧政务大数据平台项目建设方案222页[Word]

导读:原文《10万字智慧政务大数据平台项目建设方案222页[Word]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 1.1 项目建设目标 推进市一级政府搭建数…

求生之路2社区服务器sourcemod安装配置搭建教程centos

求生之路2社区服务器sourcemod安装配置搭建教程centos 大家好我是艾西,通过上文我们已经成功搭建了求生之路2的服务端。但是这个服务端是纯净的服务端,就是那种最纯粹的原版。如果想要实现插件、sm开头的命令等功能,需要安装这个sourcemod。…

js中的解构赋值

在JavaScript中,解构赋值是一种方便地从数组或对象中提取值并赋给变量的方法。 它允许你使用一种简洁的语法来快速访问和使用数据。 对于数组解构赋值,你可以使用方括号([])来指定变量名,并将其放在赋值语句的左侧。例…

opencv 案例实战02-停车场车牌识别SVM模型训练及验证

1. 整个识别的流程图: 2. 车牌定位中分割流程图: 三、车牌识别中字符分割流程图: 1.准备数据集 下载车牌相关字符样本用于训练和测试,本文使用14个汉字样本和34个数字跟字母样本,每个字符样本数为40,样本尺…

家政服务行业搭建小程序的实用技巧分享

随着移动互联网的发展,小程序成为了各行各业的新宠。对于家政服务行业来说,搭建一个小程序商城可以极大地提升服务的便捷性和用户体验,同时也能提高企业的竞争力。本文将分享家政服务行业搭建小程序的实用技巧,帮助您顺利创建属于…

Docker 常用服务 安装使用 教程

Docker安装常用服务 1、 安装mysql # 1.拉取mysql镜像到本地 docker pull mysql:tag (tag不加默认最新版本) # 2.运行mysql服务 docker run --name mysql -e MYSQL_ROOT_PASSWORDroot -d mysql:tag --没有暴露外部端口外部不能连接 docker run --name mysql -e MYSQL_ROOT_PAS…

mongodb和redis的用途

MongoDB和Redis都是常见的NoSQL数据库,它们有不同的特点和用途。 MongoDB的主要特点和用途: 数据存储:MongoDB是一种面向文档的数据库,以JSON样式的BSON文档(二进制JSON)的形式存储数据。它支持复杂的数据…

【从零学习python 】63.正则表达式中的re.Match类及其属性和方法介绍

文章目录 re.Match类介绍进阶案例 re.Match类介绍 当我们调用re.match方法、re.search方法,或者对re.finditer方法的结果进行迭代时,拿到的数据类型都是re.Match对象。 x re.match(rh,hello) y re.search(re,hello) z re.finditer(rl,hello) print(…