数据库管理与数据库语句

  • 数据库用户管理及高级sql语句

    • 数据库管理

      • 数据库用户管理

        • mysql权限表

          • 在mysql中mysql库中的user表是最重要的权限表,记录允许连接到服务器的账号信息以及全局权限,

          • 在mysql库中db和host表也是重要的权限表

            • db表中存储了用户对某个数据库的操作权限,决定用户能够从那个主机存取那个数据库。

            • host表中存储了某个主机对数据库的操作权限。

        • 查看自己在那个库

          • select database()

        • 用户管理

          • 完整直接的登录命令

            • mysql -u用户 -p密码 -h 从哪登录 -p 连接端口 可以跟库名

          • 例如在系统命令行中执行sql语句

            • mysql -u root -p -h localhost test -e "DESC person;"

              • -e 后用引号引起要使用的sql语句

          • 新建普通用户

            • create user ’用户名‘@’从哪登录‘ identified by ’通过那个密码连接‘

              • create创建后用户权限较低需要赋予权限

            • grant select on *.* to '用户名'@’从哪登录‘ identified by ’登陆密码‘

              • 用授权语句也可以进行用户的创建

            • insert into user (Host,User,Password) VALUES('localhost','customer1',PASSWORD('customer1'));

              • 直接修改权限表

          • 删除用户

            • drop user ’用户名‘@’那个终端‘

            • DELETE FROM mysql.user WHERE host='localhost' and user='customer1';

              • 注意and限制条件,避免对整体数据进行改动

        • 密码管理

          • 系统命令行修改

            • mysqladmin -u root -p password "123456"

          • 修改权限表

            • UPDATE mysql.user set Password=password("rootpwd2") WHERE User="root" and Host="localhost";

              • 在修改权限表时一定要加where进行限制

          • 使用sql命令

            • SET password=password("rootpwd3");

              • 需要注意该方式是修改当前登录用户的密码

            • SET PASSWORD FOR 'testUser'@'localhost'=password("newpwd");

              • 该方式可以利用root权限对其他用户的密码进行修改

          • 管理员密码丢失解决办法

            • 跳过权限表

              • mysqld-safe --skip-grant-tables &

                • 也可以在配置文件中加入该选项,然后进行重启重载的方式。加入”&“ 选项将该命令放到后台执行,并且该行为会被记录错误日志

              • 无密码登录使用update语句对密码字段进行修改

                • update mysql.user set password=password('mypass') where user='root' and host='localhost';

                • 修改完毕后重新加载权限表

                  • flush privileges;

        • 授权管理

          • 默认授权语句的all授权不包括授权权限

            • GRANT SELECT,INSERT ON *.* TO 'grantUser'@'localhost' IDENTIFIED BY 'grantpwd' ;

              • WITH GRANT OPTION :该语句能赋予用户的授权权限。

          • 收回权限

            • REVOKE UPDATE ON *.* FROM 'testUser'@'localhost';

              • 单独收取update权限

          • 查看权限

            • 可以查询user表

                • Y表示有权限

                • N表示无权限

            • show grants for ’账户‘@’在那登录‘

          • 访问控制

            • 通过授权时

              • GRANT SELECT,INSERT ON *.* TO 'grantUser'@'localhost' IDENTIFIED BY 'grantpwd'

                • 'grantUser'@'localhost' 通过@后的语句可以限定用户能从什么条件下进行登录。

      • 高级sql语句

        • 实验测试表

          • create database auth; use auth create table t1(id int(10), name char(20),level int(10)); insert into t1 value(10,'sagou',42); insert into t1 value(8,'senoku',45); insert into t1 value(15,'useless',47); insert into t1 value(27,'guess',52); insert into t1 value(199,'useless',48); insert into t1 value(272,'Theshy',36); insert into t1 value(298,'leslieF',40); insert into t1 value(30,'shirley',58); insert into t1 value(190,'zhangsan',48); insert into t1 value(271,'lisi',52); insert into t1 value(299,'wangwu',52); insert into t1 value(31,'zhaoliu',58); create table t2(id int(10), name char(20),level int(10)); insert into t2 value(10,'sagou',42); insert into t2 value(8,'senoku',45); insert into t2 value(15,'useless',47); insert into t2 value(27,'guess',52); insert into t2 value(199,'useless',48); insert into t2 value(272,'Theshy',36); insert into t2 value(298,'leslieF',40);

            • 创建了两个t1表与t2表

        • 查询并进行筛选排序

          • select id,name,level from t1 where level>=45 order by level desc;

            • 筛选条件level>=45

            • 排序order by level desc

              • desc:降序排序

              • asc:升序排序(默认)

        • 查询结果分组化

          • group by通常与聚合函数一起使用

            • 计数

              • count

            • 求和

              • sum

            • 求平均数

              • avg

            • 最大值

              • max

            • 最小值

              • min

            • 统计等级45以上,以等级分组每个分组有多少人

              • select count(name),level from t1 where level>=45 group by level;

                • count():计数函数

            • 统计等级45以上,以等级分组每个分组有多少人并进行降序排序

              • select count(name),level from t1 where level>=45 group by level order by count(name) desc;

        • 限制结果条目

          • 只返回匹配的记录

            • 使用limit语句

            • 只显示前三个用户的信息

              • select id,name,level from t1 limit 3

            • 也可以结合排序功能,不过要注意limit排序需要放到最后

              • select id,name,level from t1 order by level desc limit 3;

            • 只显示特定行的匹配结果

              • select id,name,level from t1 limit 2,3;

                • 表示显示第二行开始的三行数据

        • 设置别名

          • 为了将某些较长的列名简化增加易读性可以设置别名

              • 在统计数量时会将数量列名设置为count(name)利用别名简化显示

                • select count(*) as number from t1;

                  • as:alias别名,以此作为连接;可以设置汉语,如果采用了utf8等支持汉语的编码格式。

          • 创建表时将其它表的内容导入到该表

            • create table t3 as select * from t1;

        • 通配符

          • 在使用select时限制条件where后的匹配可以使用通配符

            • ”%“:表示匹配所有

            • “_“:表示匹配单个字符

        • 子查询

          • 利用select嵌套实现子查询的需求

            • insert into t2 select * from t1 where id in (select id from t1)

        • NULL

          • 在创建表时可以利用not null 来规定避免出现空值的情况。

          • null与空值有何区别

            • 空值

              • 长度为0

              • 空值的判断使用=’’或者<>’’来处理。

            • null

              • 长度为null占用空间

              • IS NULL 或者 IS NOT NULL,是用来判断字段是不是为 NULL 或者不是 NULL,不能查出是不是空值的。

            • 在通过 count()计算有多少记录数时,如果遇到 NULL 值会自动忽略掉,遇到空值会加入到记录中进行计算。

        • 逻辑运算符

          • 逻辑非:NOT 或 !

            • 有一方不成立,则结果就不成立

          • 逻辑与:AND 或 &&

            • 任何一个值为0,则结果就为0

          • 逻辑或 :R 或 ||

            • 任何一个值为1,则结果就为1

          • 逻辑异或:XOR

            • 双方都成立则最终值不成立,双方都不成立,则最终值也不成立 双方有一个成立,一个不成立,则最终值成立

        • 位运算符

          • &

            • 按位与

              • 任何一个值为0结果就为0

          • |

            • 按位或

              • 任何一个值为1结果就为1

          • ^

            • 按位异或

            • 取反

          • 左移

            • <<

          • 右移

            • >>

        • 连接查询

          • 创建测试用表

            • CREATE TABLE `a_t1` ( `a_id` int(11) DEFAULT NULL, `a_name` varchar(32) DEFAULT NULL, `a_level` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `b_t1` ( `b_id` int(11) DEFAULT NULL, `b_name` varchar(32) DEFAULT NULL, `b_level` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into a_t1(a_id, a_name, a_level) values(1, 'aaaa', 10); insert into a_t1(a_id, a_name, a_level) values(2, 'bbbb', 20); insert into a_t1(a_id, a_name, a_level) values(3, 'cccc', 30); insert into a_t1(a_id, a_name, a_level) values(4, 'dddd', 40); insert into b_t1(b_id, b_name, b_level) values(2, 'bbbb', 20); insert into b_t1(b_id, b_name, b_level) values(3, 'cccc', 30); insert into b_t1(b_id, b_name, b_level) values(5, 'eeee', 50); insert into b_t1(b_id, b_name, b_level) values(6, 'ffff', 60);

          • 内连接

            • select a_id,a_name,a_level from a_t1 inner join b_t1 on a_id=b_id;

                • 相当于查询两个数据表共同有的部分,(交集)

          • 左连接

            • select * from a_t1 a left join b_t1 b on a.a_id=b.b_id;

                • 以左表为主,查询出左表中的所有内容和与右表中相同的内容,不同的以null代替

            • 右连接与左连接相反

        • 数据库函数

          • 聚合函数

            • avg() :返回指定列的平均值

            • count() :返回指定列中非 NULL 值的个数

            • min() :返回指定列的最小值

            • max() :返回指定列的最大值

            • sum(x) :返回指定列的所有值之和

              • mysql>select sum(level) as sum_level from t1; mysql>select max(level) as max_level from t1; mysql>select min(level) as min_level from t1;

          • 字符串函数

            • length(x) 返回字符串 x 的长度第

            • trim() 移除字符串两侧的空白字符或其他预定义字符

            • concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串

            • upper(x) 将字符串 x 的所有字母变成大写字母

            • lower(x) 将字符串 x 的所有字母变成小写字母

            • left(x,y) 返回字符串 x 的前 y 个字符

            • right(x,y) 返回字符串 x 的后 y 个字符

            • repeat(x,y) 将字符串 x 重复 y 次

            • space(x) 返回 x 个空格

            • replace(x,y,z) 将字符串 z 替代字符串 x 中的字符串 y

            • strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1

            • substring(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串

            • reverse(x) 将字符串 x 反转

          • 时间日期函数

            • curdate() 返回当前时间的年月日

            • curtime() 返回当前时间的时分秒

            • now() 返回当前时间的日期和时间

            • month(x) 返回日期 x 中的月份值

            • week(x) 返回日期 x 是年度第几个星期

            • hour(x) 返回 x 中的小时值

            • minute(x) 返回 x 中的分钟值

            • second(x) 返回 x 中的秒钟值

            • dayofweek(x) 返回 x 是星期几,1 星期日,2 星期一

            • dayofmonth(x) 计算日期 x 是本月的第几天

            • dayofyear(x) 计算日期 x 是本年的第几天

        • 存储过程(是一个对象)

          • 介绍:MySQL 数据库存储过程是一组为了完成特定功能的 SQL 语句的集合,存储过程在数据库中创建并保存,它不仅仅是 SQL 语句的集合,还可以加入一些特殊的控制结构,也可以控制数据的访问方式。

          • 优点:

            • 执行后留在缓冲区,再次调用效率高

            • 灵活性高,可以进行复杂的操作

            • 存储过程时存储在服务端,在客户端进行调用时消耗带宽少

            • 支持多次反复调用,多人同时调用

          • 创建存储过程

            • mysql> DELIMITER $$ mysql> CREATE PROCEDURE t1Role() BEGIN SELECT id,name,level from t1 limit 3; END $$

              • DELIMITER $$ :修改mysql结束符为$$,避免与中间的mysql语句的结束符产生冲突,创建存储过程完毕后需要修改回”;“结束符。

            • 修改储存过程就是删除原有储存过程在创建新同名储存过程。

              • DROP PROCEDURE [IF EXISTS] procedure_name;

                • if exists 是检测存储过程依赖,避免删除造成较大影响

                • procedure_name:是具体的存储过程名

以上就是对mysql数据库的管理以及高级sql语言的说明,仅供参考 。

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

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

相关文章

DataGrip 2024 mac/win版:让数据库管理更简单

JetBrains DataGrip 2024 是一款专为数据库开发者设计的集成开发环境(IDE)&#xff0c;它凭借其卓越的性能和丰富的功能&#xff0c;为数据库管理提供了前所未有的便利。 DataGrip 2024 mac/win版获取 DataGrip 2024 支持几乎所有主流的关系型数据库管理系统&#xff0c;如 My…

浅谈目标检测之YOLO(You Only Look Once)v1

简介&#xff1a;本文章要介绍的YOLOv1算法&#xff0c;它与之前的目标检测算法如R-CNN等不同&#xff0c;R-NN等目标检测算法是一种两阶段&#xff08;two-stage&#xff09;算法&#xff0c;步骤为先在图片上生成候选框&#xff0c;然后利用分类器对这些候选框进行逐一的判断…

记录一下MATLAB优化器出现的问题和解决

今天MATLAB优化器出了点问题。我想了想&#xff0c;决定解决一下&#xff0c;不然后面项目没有办法进行下去。 我忘了截图了。 具体来说&#xff0c;是出现了下面的问题。 Gurobi: Cplex: 在上次为了强化学习调整了Pytoch环境以后&#xff08;不知道是不是这个原因&#…

仓库管理系统09--修改用户密码

1、添加窗体 2、窗体布局控件 UI设计这块还是传统的表格布局&#xff0c;采用5行2列 3、创建viewmodel 4、前台UI绑定viewmodel 这里要注意属性绑定和命令绑定及命令绑定时传递的参数 <Window x:Class"West.StoreMgr.Windows.EditPasswordWindow"xmlns"http…

制造业工厂的管理到底有多难

一、引言 随着全球经济的不断发展&#xff0c;制造业作为实体经济的核心&#xff0c;对国家的经济增长起着至关重要的作用。然而&#xff0c;制造业工厂的管理却是一项复杂而艰巨的任务。本文将深入探讨制造业工厂管理所面临的挑战&#xff0c;并提出相应的应对策略。 二、制造…

TCP: 传输控制协议

TCP: 传输控制协议 TCP的服务TCP 的首部小结 本系列文章旨在巩固网络编程理论知识&#xff0c;后续将结合实际开展深入理解的文章。 TCP的服务 T C P和U D P都使用相同的网络层&#xff08;I P&#xff09;&#xff0c;T C P却向应用层提供与U D P完全不同的服务。 T C P提供一…

【已解决】Python报错:AttributeError: module ‘json‘ has no attribute ‘loads‘

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

图片如何去水印,分享4个小妙招,手把手教会你!

作为一个经常逛社区网站下载表情包、头像的人&#xff0c;遇到的一个大难题就是图片有水印。如何才能快速去除水印&#xff1f;询问了一圈身边朋友&#xff0c;搜集了各种资料&#xff0c;小编整理了4个超好用的方法。 如果大家和小编一样&#xff0c;能坐着就不站着&#xff0…

一次DC1靶机的渗透测试

确定目标IP&#xff1a; nmap -sP 192.168.11.1/24 发现目标机器 扫描开放的端口&#xff1a; nmap -T4 -A -v 192.168.11.145 发现开放了一个80端口&#xff0c;并且给出了是Drupal的管理系统 浏览器访问这个服务&#xff1a; 因为这是一个Drupal的管理系统&#xff0c;那么…

利用第三方服务对目标进行被动信息收集防止被发现(web安全白帽子)

利用第三方服务对目标进行被动信息收集防止被发现&#xff08;web安全白帽子&#xff09; 1 被动信息收集1.1 信息收集内容1.2 信息用途 2 信息收集-DNS2.1 DNS信息收集NSLOOKUP2.1.1 ping2.1.2 nslookup 2.2 DNS信息收集-DIG&#xff08;此命令查到的结果更复杂些&#xff0c;…

算法训练营day19--530.二叉搜索树的最小绝对差+501.二叉搜索树中的众数+236. 二叉树的最近公共祖先

一、530.二叉搜索树的最小绝对差 题目链接&#xff1a;https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 文章讲解&#xff1a;https://programmercarl.com/0530.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF…

MAB规范(3):Chapter6 Glossary 术语表

第6章 - 术语表 此章不做过多的批注&#xff0c;都是些简单的术语解释。

学分制系统 GetCalendarContentById SQL注入致RCE漏洞复现

0x01 产品简介 学分制系统由上海鹏达计算机系统开发有限公司研发,是基于对职业教育特点和需求的深入理解,结合教育部相关文件精神,并广泛吸纳专家、学者意见而开发的一款综合性管理系统。系统采用模块化的设计方法,方便学校根据自身教学改革特点、信息化建设进程情况选择、…

某某商场对账返款单,table

好久不写原生html&#xff0c;今天写了个&#xff0c;快忘完了 。。。 Double Header Table ***商场统一收银结算商户对账返款单 商场&#xff08;盖章有效&#xff09; 铺位名称&#xff1a; 铺位号&#xff1a; 制单人&#xff1a; 制单日期&#xff1a; </tr><tr&…

Lesson 39 Don‘t drop it!

Lesson 39 Don’t drop it! 词汇 front n. 前面 搭配&#xff1a;in front of … 在……前面&#xff08;外部&#xff09;    in the front of … 在……前面&#xff08;内部&#xff09; 例句&#xff1a;Bobby坐在Sam的前面。    Bobby is sitting in front of Sam…

嵌入式C语言中常见寄存器的控制方法

使用C语言对寄存器赋值时,常常需要用到C语言的位操作方法。 把寄存器某位清零 假设a代表寄存器,且其中本来已有值。如果要把其中某一位清零且其它位不变,代码如下。 //定义一个变量 a = 1001 1111 b (二进制数)unsigned char a = 0x9f;//对 bit2 清零a &= ~(1<<…

C++哈希表、哈希桶的实现以及模拟实现封装unordered_map 和 unordered_set 位图 布隆过滤器 哈希切割相关

文章目录 unordered系列关联式容器unordered_mapunordered_map的接口说明 unordered_setset 与 unordered_set的效率比较 底层结构哈希概念哈希冲突哈希函数常见哈希函数哈希冲突解决闭散列 —— 开放定址法哈希表的插入线性探测二次探测 哈希表的闭散列实现哈希表的结构插入代…

1962springboot VUE社区服务平台系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE社区服务平台系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解vue java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和…

二叉搜索树的删除操作(详细图解和代码解析)

二叉排序树的定义: 二叉排序树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;是一种二叉树&#xff0c;其中每个节点的值大于其左子树中任意节点的值&#xff0c;小于其右子树中任意节点的值。换句话说&#xff0c;对二叉排序树进行中序遍历时&#xff0c;节点的值…

MIGO增强(扩展字段,屏幕增强字段,常规保存增强)

1.MIGO前台增强: 1.SE18找到增强点:MB_GOODSMOVEMENT 2.找到相应的BADI:右键创建实施 3.找到重写的方法 METHOD if_ex_mb_document_badi~mb_document_before_update.DATA:lv_stat TYPE c,lv_type TYPE bapi_mtype,lv_msg TYPE bapi_msg.DATA:lv_message TYPE string.IF sy-tc…