Skip to content

各个数据库安装配置笔记

MySQL 安装及配置 Navicat 工具

MySQL安装(压缩包)

下载

按照自己电脑下载对应的安装包

压缩包下载地址

配置文件

解压后在文件夹中添加并配置 my.ini 文件(更改为自己的安装目录,data文件夹自行创建)

json
[
  mysql
]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D: \mysql-8.0.24-winx64
# 设置mysql数据库的数据的存放目录
datadir=D: \mysql-8.0.24-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

配置环境变量

  1. 新建系统变量 :变量名:MYSQL_HOME,变量值:D:\mysql-8.0.24-winx64(自己的MySQL安装路径)
  2. D:\mysql-8.0.24-winx64\bin添加至path变量中

初始化MySQL

初始化前,先确定data文件夹为空

以管理员身份打开命令行工具,输入mysqld --initialize --console

等待片刻后

接下来输入的命令,必须用管理员身份运行命令行,否则无法执行

然后输入安装命令 mysqld install

安装成功后输入net start mysql

接下来登陆MySQL数据库 mysql -u root -p

修改密码

输入 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '73748156'; 来修改密码为73748156

启动服务

输入指令 mysql.exe -hlocalhost -P3306 -uroot -p

然后输入密码

链接 Navicat

点击连接

连接名输入127.0.0.1

输入设置好的密码,点击确定

连接成功

sql server安装与 sql 语言的学习

安装包下载

那必然去官网下载,下方是官网链接 微软下载官网

点击下载

选择这两个,再点击next~~~

先双击这个文件

一直下一步,这个功能要全选

一直下一步,完成后点开另一个文件

同样全选

安装完成

通过 sql sever 2008 建库

连接到服务器

新建数据库

输入数据库相关参数

右键数据库名称,新建表

输入列名,数据类型等参数

右键小箭头设置主键等属性

用 SQL 语句建库

新建数据库

单机新建查询,输入下方代码,点击执行,闭上眼睛默说五遍“我想要一个数据库”,然后睁开眼睛,你便拥有了一个数据库~~~~

sql
CREATE DATABASE [2859902680] --数据库名字(名字含数字数字要用[] ,下同)
  on primary
  (
  name = [2859902680_data],
  filename = 'E:\goodgoodstudy\project\sql\1\2859902680_data.mdf', --数据文件路径
  size=10, --初始大小/MB
  maxsize=unlimited, --是否限制增长
  filegrowth=1 --增量
  )
  LOG ON (
  name = [2859902680_log],
  filename = 'E:\goodgoodstudy\project\sql\1\2859902680_log.ldf', --日志文件路径
  size = 5,
  maxsize=unlimited,
  filegrowth=1
  )

建表

右键点击新建好的数据库,选择新建查询,在新的 sql 文件中输入下方代码,点击执行并呼出一口仙气

sql
CREATE TABLE SC
(
--  列名 约束条件(数据类型,可否为空)
  S# CHAR(4),
    C# CHAR(4),
    SCORE SMALLINT,
  PRIMARY KEY (S#,C#),--设置主键
                 --FOREIGN KEY(S#)REFERENCES S(S#),--设置外键
);

你就会发现一个现新建的数据表!!!

插入数据

还是右键数据库,新建查询,输入以下代码后点击执行

sql
INSERT INTO SC
VALUES ('S1', 'C1', 70),
       ('S1', 'C2', 80),
       ('S1', 'C4', 90),
       ('S2', 'C5', 90),
       ('S4', 'C1', 90),
       ('S5', 'C2', 60),
       ('S5', 'C3', NULL),
       ('S5', 'C4', 60),
       ('S5', 'C5', 78),
       ('S6', 'C1', 76)

记得 char 类型的数据需要加引号,int 类型不需要

然后右键这个数据表

点击 编辑前200行 即可看到刚刚输入的数据乖乖躺在表里~~~~

SQL 查询语句

还是右键数据库,新建查询,然后按照下方模板输入代码,体会查询数据带来的成就感

sql
SELECT DISTINCT /*返回唯一不同的值*/ column, AGG_FUNC(column_or_expression), …
FROM mytable
  JOIN another_table
ON mytable.column = another_table.column
WHERE constraint_expression
GROUP BY column /*结合函数对结果集进行分组*/
HAVING constraint_expression
ORDER BY column ASC/*升序排序*/ /
DESC/*降序排序*/
  LIMIT count/*输出数据量*/ OFFSET COUNT/*从第几个数据开始输出*/;

数据操作

-- ① 检索年龄小于17岁的女学生的学号和姓名。

sql
SELECT DISTINCT S#, SNAME
FROM S
WHERE AGE < 17
  AND SEX = 'F'

-- ② 检索男学生所学课程的课程名与课程号。

sql
SELECT DISTINCT CNAME, SC.C#
FROM SC,
     S,
     C
WHERE SC.C# = C.C#
  AND S.S#=SC.S#
  AND S.SEX = 'M'

-- ③ 检索男学生所学课程的任课教师的工号和姓名。

sql
SELECT DISTINCT T#, TNAME
FROM T
WHERE T# IN( 
SELECT T# FROM C WHERE C# IN(
SELECT C# FROM SC WHERE S# IN(
SELECT S# FROM S WHERE SEX = 'M'
  )
    )
)

-- ④ 检索至少选修两门课程的学生学号。

sql
SELECT DISTINCT S#, COUNT(C#) AS a
FROM SC
GROUP BY S#
HAVING COUNT(C#) > 2

-- ⑤ 检索至少有学号S2和S4学生选修的课程的课程号。

sql
SELECT C#
FROM C
WHERE C# IN (
SELECT x.C# FROM SC as x, SC as y
WHERE x.S# = 'S2' and y.S# ='S4' and x.C#=y.C#
  )

-- ⑥ 检索WANG同学不学的课程的课程号。

sql
SELECT DISTINCT C#
FROM SC
WHERE C# NOT IN(
SELECT C# FROM SC WHERE S# IN(
SELECT S# FROM S WHERE SNAME = 'WANG'
  )
)
GROUP BY C#

-- ⑦ 检索全部学生都选修的课程的课程号与课程名。

sql
SELECT C#, CNAME
FROM C
WHERE C# IN(
SELECT C# FROM SC
GROUP BY C#
HAVING COUNT(*) = (SELECT COUNT(*)
                   FROM S
                   GROUP BY S#
)
  )

-- ⑧ 检索选修课程包含LIU老师所授课程的学生学号。

sql
SELECT DISTINCT SC.S#
FROM SC,
     C,
     T
WHERE SC.C# IN (
SELECT C.C# WHERE C.T# IN(
SELECT T# FROM T WHERE TNAME = 'LIU' 
  )
)

组合查询:

-- ① 统计有学生选修的课程门数。

sql
SELECT COUNT(DISTINCT C#) AS co
             FROM SC

-- ② 求选修C4课程的女学生的平均年龄。

sql
SELECT AVG(S.AGE) AS RESULT
FROM S
WHERE S.S# IN(
SELECT SC.S# FROM SC WHERE SC.C#='C4'
  )
AND S.SEX='F'

-- ③ 求LIU老师所授课程的每门课程的平均成绩。

sql
SELECT C#,AVG(SC.SCORE) AS AVG_SCO
FROM SC
WHERE SC.C# IN(
SELECT C# FROM C WHERE T# IN(
SELECT T# FROM T WHERE TNAME='LIU'
  )
)
GROUP BY C#

-- ④ 统计每门课程的学生选修人数(超过10人的课程才统计)。要求显示课程号和人数。

sql
SELECT SC.C#, COUNT(*) AS NUM
FROM SC
GROUP BY SC.C#
HAVING COUNT(*) > 10

-- ⑤ 检索学号比WANG同学大,而年龄比他小的学生姓名。

sql
SELECT SNAME
FROM S
WHERE S#>(
SELECT S# FROM S WHERE SNAME = 'WANG'
  )
AND AGE<(
	SELECT AGE FROM S WHERE SNAME = 'WANG'
)

-- ⑥ 在表SC中检索成绩为空值的学生学号和课程号。

sql
SELECT S#, C#
FROM SC
WHERE SCORE IS NULL

-- ⑦ 检索姓名以L打头的所有学生的姓名和年龄。

sql
SELECT SNAME, AGE
FROM S
WHERE SNAME LIKE 'L%'

-- ⑧ 求年龄大于女同学平均年龄的男学生姓名和年龄。

sql

```sql
SELECT SNAME, AGE
FROM S
WHERE SEX = 'M'
    AND AGE >(
    SELECT AVG(AGE) FROM S WHERE SEX='F'
)

-- ① 用户定义完整性:学生年龄<30。

sql
ALTER TABLE S
  ADD CONSTRAINT NL CHECK (AGE < 30)

-- 用实验验证当操作违反了完整性约束时,系统如何处理?

sql
INSERT INTO S
VALUES ('S11', 'HAORAN', 19, 'F')

-- ② 修改SC中的约束条件,成绩在0-100之间。-- 如果约束存在则先删除

sql
if exists(
	select * from sysobjects where name= 'CJ'
	)
alter table SC
  drop constraint CJ;

-- 添加约束

sql
ALTER TABLE SC
  ADD CONSTRAINT CJ CHECK (SCORE <= 100 AND SCORE >= 0)

--用实验验证当操作违反了完整性约束时,系统如何处理?

sql
INSERT INTO SC
VALUES ('S1', 'C5', 150)

-- ①求某门课的平均成绩,并把结果存入数据库;

sql
CREATE TABLE L
(
  C# CHAR(4) NOT NULL,
    AVGGRADE SMALLINT,
  PRIMARY KEY (C#),
                 FOREIGN KEY (C#) REFERENCES C(C#)
);

INSERT INTO L
SELECT C#, AVG(SCORE)
FROM SC
GROUP BY C#

-- ②将选LIU老师所授课的全体学生的成绩置零。

sql
UPDATE SC
SET SCORE = 0
WHERE C# IN (
SELECT C# FROM C WHERE T# IN(
SELECT T# FROM T WHERE TNAME = 'LIU'
  )
)

数据库与C#窗体关联

在窗体设计界面插入控件后 添加代码 新建连接对象,并传入连接指令字符串

csharp
 public static string con = "server=BLACK;database=2019_3_2;uid=sa;pwd=123456";
        public static SqlConnection con_connection = new SqlConnection(con);

定义查询语句

csharp
string sql = "SELECT * FROM OP WHERE OP.H_Pos = 402";

含 textbox 输入的sql语句

csharp
sql = "SELECT OP.Name,OP.O_ID,OP.Sex,OP.Num,OP.H_Pos,Age,Health_condition,N_Name FROM OP, NW WHERE OP.O_ID = "
                        +textBox1.Text+" AND NW.O_ID = " + textBox1.Text;

执行查询语句

csharp
SqlDataAdapter sqlLaoRen = new SqlDataAdapter(sql, con);

建立数据表对象

csharp
 DataTable it = new DataTable();

将查询结果填充到数据表内

csharp
sqlLaoRen.Fill(it);

将数据表内容展示到控件中

csharp
 dataGridView1.DataSource = it.DefaultView;

内容居中显示

csharp
dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

粘贴我所做的其中一个窗体的代码

csharp
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Cryptography.X509Certificates;

namespace 三级项目
{
    public partial class Form5 : Form
    {
        public Form5()
        {
            InitializeComponent();
        }
        public static string con = "server=BLACK;database=2019_3_2;uid=sa;pwd=123456";
        public static SqlConnection con_connection = new SqlConnection(con);
        //新建连接对象,并传入连接指令字符串

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string search_leixing = comboBox2.Text;
            string sql ="";
            if (textBox1.Text == "")//判断输入是否为空
            {
                MessageBox.Show("查询失败,请重新输入");
                return;
            }
            switch (search_leixing)//判断下拉栏内容
            { 
                case "通过老人证件号码查询老人信息":
                    if (textBox1.Text.Length != 3)//判断输入是否为空
                    {
                        MessageBox.Show("查询失败,请重新输入");
                        return;
                    }
                    sql = "SELECT OP.Name,OP.O_ID,OP.Sex,OP.Num,OP.H_Pos,Age,Health_condition,N_Name FROM OP, NW WHERE OP.O_ID = "
                        +textBox1.Text+" AND NW.O_ID = " + textBox1.Text;
                    break;
                case "通过护工工号查询护工信息":
                    if (textBox1.Text.Length != 12)//判断输入是否为空
                    {
                        MessageBox.Show("查询失败,请重新输入");
                        return;
                    }
                    sql = "SELECT N_Name,N_ID,NW.Sex,Employment_term,NW.Num,NW.O_ID,NW.H_Pos,OP.Name FROM NW, OP WHERE NW.N_ID = "
                        + textBox1.Text + " AND OP.O_ID = NW.O_ID;";
                    break;
                case "通过管理人员编号查询管理人员信息":
                    if (textBox1.Text.Length != 6)//判断输入是否为空
                    {
                        MessageBox.Show("查询失败,请重新输入");
                        return;
                    }
                    sql = "SELECT M_Name, MA.H_Pos AS 所属养老院, NW.N_NAME AS 护工名字, NW.N_ID, NW.SEX AS 护工性别 FROM MA, Manage, NW WHERE MA.M_ID = "
                        +textBox1.Text+" AND MA.M_ID = Manage.M_ID AND Manage.N_ID = NW.N_ID";
                    break;
                default:
                    MessageBox.Show("查询失败,请重新输入");
                    return;
                    break;
            }
            SqlDataAdapter sqlLaoRen = new SqlDataAdapter(sql, con);
            //传入查询命令字符串
            DataTable it = new DataTable();
            //建立数据表对象
            sqlLaoRen.Fill(it);
            //将查询结果填充到数据表内
            dataGridView1.DataSource = it.DefaultView;
            //将数据表内容展示到控件中
            dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //内容居中显示
        }

        private void button2_Click(object sender, EventArgs e)
        {
            new Form1().Show();
            this.Close();
        }
    }
}

配上好看的窗体界面设计

Redis 安装及配置笔记

Redis下载

下载地址:Releases · microsoftarchive/redis · GitHub

Redis 配置

解压压缩包

将路径添加至环境变量

在当前路径下按shift + 鼠标右键,点击打开PowerShell

输入命令 redis-server.exe redis.windows.conf

常用命令

shell
安装服务:redis-server --service-install
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop
服务端启动时重命名:redis-server --service-start --service-name Redis1

Java 操作 Redis

连接到 Redis 服务

java
import redis.clients.jedis.Jedis;

public class RedisJava {

  public static void main(String[] args) {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("localhost");
    // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
    // jedis.auth("123456"); 
    System.out.println("连接成功");
    //查看服务是否运行
    System.out.println("服务正在运行: " + jedis.ping());
  }
}

字符串读写

java
import redis.clients.jedis.Jedis;

public class RedisStringJava {

  public static void main(String[] args) {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("localhost");
    System.out.println("连接成功");
    //设置 redis 字符串数据
    jedis.set("runoobkey", "www.runoob.com");
    // 获取存储的数据并输出
    System.out.println("redis 存储的字符串为: " + jedis.get("runoobkey"));
  }
}

列表读写

java
import java.util.List;

import redis.clients.jedis.Jedis;

public class RedisListJava {

  public static void main(String[] args) {
    //连接本地的 Redis 服务
    Jedis jedis = new Jedis("localhost");
    System.out.println("连接成功");
    //存储数据到列表中
    jedis.lpush("site-list", "Runoob");
    jedis.lpush("site-list", "Google");
    jedis.lpush("site-list", "Taobao");
    // 获取存储的数据并输出
    List<String> list = jedis.lrange("site-list", 0, 2);
    for (int i = 0; i < list.size(); i++) {
      System.out.println("列表项为: " + list.get(i));
    }
  }
}

Elasticsearch与Kibana的安装与配置

安装 Elasticsearch

下载链接:Elasticsearch 7.6.2 | Elastic

下载后解压

  • 进入bin目录运行elasticsearch.bat

如遇到

则在elasticsearch.yml中末尾添加xpack.ml.enabled: false即可

打印了一堆看不懂的东西。。。

看见了started,掐指一算一定是启动完成了

打开 http://localhost:9200 出现 这样一团东西,就成功啦!

安装 Kibana

下载链接:Kibana 7.6.2 | Elastic

解压后运行bin目录下的kibana.bat,启动Kibana

访问Kibana的用户界面,访问地址:http://localhost:5601