• 数据库搭建与使用


    数据库搭建与使用

    在这里插入图片描述
    https://dev.mysql.com/downloads/mysql/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    [mysqld]
    language=D:\\soft\worksoft\mysql-8.0.30-winx64\\share\english
    # 设置3306端口
    port=3306
    # 设置mysql的安装目录
    basedir=D:\\soft\worksoft\mysql-8.0.30-winx64
    # 设置mysql数据库的数据的存放目录
    datadir=D:\\soft\worksoft\mysql-8.0.30-winx64\data
    # 允许最大连接数
    max_connections=200
    # 允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统
    max_connect_errors=5
    # 服务端使用的字符集默认为UTF8
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 默认使用“mysql_native_password”插件认证
    # mysql_native_password
    # default_authentication_plugin=mysql_native_password
    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    [client]
    # 设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8
    

    在这里插入图片描述
    配置环境变量:计算机 -> 此电脑 -> 右键,属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建一个 MYSQL_HOME,值呢就是上面basedir的地址
    在这里插入图片描述
    在这里插入图片描述

    mysqld —initialize —user=mysql —console
    无密码生成:https://blog.csdn.net/u010500895/article/details/120777516
    建议根据这个文章去初始化:https://www.cnblogs.com/xiaowangtongxue/p/10846348.html
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    重启mysql
    在cmd.exe中输入net stop mysql
    关闭mysql 输入 net start mysql,就可以重新启动mysql服务了。

    退出mysql
    1.可以直接执行exit命令退出mysql,也可以执行quit命令退出mysql
    2.如果要强制退出mysql,可以按【ctrl+d】快捷键。

    连接MySQL时报错:Public Key Retrieval is not allowed的解决方法:http://www.imooc.com/article/321153

    mysql客户端的使用

    在这里插入图片描述
    在这里插入图片描述
    我只下了sqlyog

    1、连接mysql服务端

    在这里插入图片描述
    在这里插入图片描述
    这四个数据库是mysql自带的数据库,不能删掉!!!
    删除其他数据库的时候,也要慎重

    2、新增数据库

    在这里插入图片描述

    3、命令行界面

    在这里插入图片描述
    但是sqlyog没有这个的

    4、sql文件导入

    在这里插入图片描述
    数据库右键 -> 导入 ->执行sql脚本
    navicat:
    在这里插入图片描述
    导入后记得刷新

    5、文件导出

    这个是整个库导出:
    在这里插入图片描述
    sqlyog:
    在这里插入图片描述
    也可以单单的对表进行导出

    数据库结构解析

    Mysql表结构定义

    在这里插入图片描述

    CREATE TABLE `user`(
      `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID',
      `name` VARCHAR(10) DEFAULT NULL COMMENT '名称',
      PRIMARY KEY ('id') USING BTREE
    )ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='first_table'
    # AUTO_INCREMENT=10意思是id从10开始
    

    Mysql表结构修改语法

    在这里插入图片描述
    https://blog.csdn.net/lbq15735104044/article/details/120190278
    在这里插入图片描述
    就是在工具里面操作

    mysql表数据的基本增删改查

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    avg:求平均值
    sum:求和
    在这里插入图片描述
    在这里插入图片描述

    SELECT a.id,a.name,b.name FROM j_chapters a LEFT JOIN j_course b ON a.id=b.id
    SELECT a.id aid,a.name aname,b.name bname FROM j_chapters a LEFT JOIN j_course b ON a.id=b.id
    

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    sql的复杂查询实战

    在这里插入图片描述

    Redis内存性数据库

    在这里插入图片描述
    在这里插入图片描述
    https://github.com/microsoftarchive/redis/releases

    SQL语言与MySQL

    数据库搭建与操作

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    SQL语法与关键知识点

    在这里插入图片描述
    在这里插入图片描述

    DML

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    进阶查询-多表join
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1select * from departments
    2select dept_no from departments where dept_name = 'Development'
    3select * from employees where hire_date like '1998%' order by hire_date asc
    3select * from employees where hire_date between '1998-01-01' and '1998-12-31' order by hire_date asc
    

    在这里插入图片描述

    6select * from employees where first_name like '%Mary%' or last_name like '%Mary%'
    

    在这里插入图片描述

    10select emp_no, count(*) from salaries group by emp_no having count(*) > 17
    12select max(salary)/avg(salary)/sum(salary)/min(salary) from salaries
    

    在这里插入图片描述
    链接查询

    select distinct a.* from employees a
    left join dept_emp b on a.emp_no = b.emp_no
    left join departments c on c.dept_no = b.dept_no
    where c.dept_name = 'Development'
    

    子查询

    select * from employees where emp_no in 
    (
    select emp_no from dept_emp whrer dept_no = 
    (
    select dept_no from departments where dept_name = 'Development'
    )
    )
    

    在这里插入图片描述
    在这里插入图片描述
    distinct 去重

    select distinct a.* from employees a
    left join dept_emp b on a.emp_no = b.emp_no
    left join departments c on c.dept_no = b.dept_no
    left join salaries d on d.emp_no = a.emp_no
    where c.dept_name = 'Development' order by d.salary desc limit 10
    

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    索引

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在查询语句前面加一个explain 就能分析出来

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    内置函数

    在这里插入图片描述

    # 左删除
    select id, LTRIM(remark) from hogwarts_user;
    # 右删除
    select id, RTRIM(remark) from hogwarts_user;
    # 前后空格删除
    select id, TRIM(remark) from hogwarts_user;
    

    在这里插入图片描述

    select emp_no,from_date from dept_manager
    # 所有的日期都加上两日
    select emp_no,ADDDATE(from_date,2) from dept_manager
    # 获取当前日期
    select CURRENT_TIME(); 
    select NOW();
    
    # 计算任期年数(使用DATEDIFF的话要在select中加入参数)
    select emp_no, from_date, to_date, DATEDIFF(to_date,from_date)/365 任期年数 from dept_manager
    

    在这里插入图片描述

    select sign(0.15);  # 1
    select sign(-15);  # -1
    select 6 DIV 5;  # 1
    select 6/5;  # 1.2
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    -- 存储过程
    drop procedure if exists fun;
    -- 从这里
    delimiter $$
    create procedure fun()
    begin
    	declare i int;
    	declare name varchar(100);
    	declare age int;
    	set i = 19;
    	set name=concat('sily',i);
    	set age=i+2;
    	loops:while i<=2000 do
    		insert into `user` values(i,name,age);
    		set i=i+1;
    	end while loops;
    end$$
    delimiter ;
    -- 到这里需要多行执行
    call fun();
    drop procedure fun;
    

    在这里插入图片描述
    https://blog.csdn.net/weixin_60589106/article/details/122704881
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    show variables:展示的mysql的服务器系统变量
    show variables like ‘%_log%’,找到general_log,如果是为OFF,证明记录日志是关闭的,要先去开启日志,SET GLOBAL general_log=‘ON’
    general_log_file:是日志的存储位置,每一条记录的存在.log中
    show variables like ‘%long_query%’:查看控制慢查询的阀值,也就是说当一个 SQL 的执行时间超过这个值的时候会就被记录到慢查询文件中去。

    在这里插入图片描述
    在这里插入图片描述

    show variables like '%log_output%'
    
    -- 打开全局日志
    SET GLOBAL general_log= 1
    
    -- 用于控制慢查询的阀值
    show variables like '%slow_query_log%'
    set long_query_time=0.0001
    
    show variables like '%_log%'
    -- 使用table输出
    set global slow_query_log = on
    
    set SQL_LOG_OFF=on
    
    -- 日志输出类型是用table/file
    set global log_output='table'
    select * from demo.`user` order by id desc limit 2000,20000
    
    -- general_log记录了mysql服务器的操作
    select * from mysql.general_log
    -- 慢日志
    select * from mysql.slow_log
    

    在这里插入图片描述

  • 相关阅读:
    [附源码]Java计算机毕业设计SSM高校本科毕业及资料存档管理系统
    JMeter + InfluxDB2
    国产香氛品牌别样的生意经
    如何正确使用GPT工具
    [unity3D]什么是预制体(Prefab)?如何制作预制体?如何导出预制体?预制体变体是什么?
    SVN项目,提交Git保留之前提交记录
    【面试专栏】第四篇:Java基础:集合篇-Map、HashMap、Hashtable
    Linux入门教程:P14->进程管理类
    【JavaSe笔记】——final关键字,常量,抽象类的定义使用和特征
    openresty安装配置,执行shell脚本
  • 原文地址:https://blog.csdn.net/camille009/article/details/127078577