MySQL数据库的安装、创建库、创建表、创建测试数据及连接取数

news/2024/12/29 6:25:18/

安装MySQL数据库

  • MySQL数据库简介
  • 安装MySQL数据库
    • 下载安装包
    • 安装MySQL
  • MySQL创建一个新的数据库,并在其中创建新的数据表,填充测试数据并查看
    • `mysql>`模式下输入的每句sql语句都要以`;`结尾;若多行语句无`;`,则被默认为一条语句未输入完成;若多条语句无`;`,直到最后一条语句有`;`,则被认为是一条语句。
  • 连接MySQL数据库
    • Java工程连接数据库
    • SpringMVC工程连接数据库

MySQL数据库简介

此处先给出MySQL官网?

安装MySQL数据库

下载安装包

安装MySQL

  • 将下载的安装包mysql-8.0.30-winx64.zip解压后,将mysql的根目录——比如D:\mysql-8.0.30-winx64\bin——配置到环境变量path中。
  • 使用PowerShell进行安装,首先以管理员身份运行PowerShell。在PowerShell中先进入到MySQL的根目录的bin目录下,再执行mysqld --install命令,如下图所示。
    在这里插入图片描述
  • mysqld --initialize-insecure --user=mysql
  • net start mysql,显示“MySQL服务正在启动 …” “MySQL服务已经启动成功。”,如下图所示。
    在这里插入图片描述
  • 使用指令mysql -u root -p登陆,这是因为安装完成、启动mysql后,要先使用root账户登陆数据库,如下图所示。安装完成后的root用户的初始密码是空——即Enter password:处不需输入任何字符、直接回车即可,如下图所示。数据库登陆成功后,输入指令处的路径显示为mysql>,如下图红框所示。

若需退出mysql>,直接输入exit即可;若已进入->,输入\q即可,如下两图所示。
在这里插入图片描述
在这里插入图片描述
若需关闭MySQL,需以管理员身份启动命令行(否则输入关闭指令后会提示拒绝访问),在操作系统的任意路径下,命令输入net stop mysql即可,如下图所示。
在这里插入图片描述
此处也给出未以管理员身份启动命令行时,启动数据的情形
在这里插入图片描述

MySQL创建一个新的数据库,并在其中创建新的数据表,填充测试数据并查看

  1. 首先,必须要在一个数据库里面工作,所以你必须创建一个数据库。利用create database【数据库名称,比如test】;,来出创建数据库注意,语句结尾必须要有;号,否则如下图第一行所示,提示SQL语法错误,进而创建失败
    在这里插入图片描述
  2. 如上所述,因为必须要在一个数据库里面工作,所以使用 use 【要切换到的数据库名称,比如test】 ;来使用上一步创建好的数据库test,如下图所示,提示数据库切换成功Database changed
    在这里插入图片描述
  3. 查看已创建的数据库,在mysql>下输入show databases;,如下图所示。
    在这里插入图片描述

此时,数据库安装目录下的data文件夹下的目录,如下所示。下图红框内的四个文件夹对应上方显示的五个数据库的四个,上方第一个数据库information_schema不知道在何处 = =。
在这里插入图片描述

  1. 要将原语句create table 【表名,比如此处的testTable1】 (id int,name varchar(100));分为四行来依次输入,以;结尾表示一条语句结束,如下所示。注意第一行语句的create table testTable1(结尾的(不要遗漏!;当提示Query OK, 0 rows affected (0.10 sec)表示创建成功。
    在这里插入图片描述
    ②还可创建复杂的表,使用如下语句:
CREATE TABLE hogwarts_user (id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',name varchar(20) DEFAULT NULL,age int(10) DEFAULT NULL COMMENT '年龄',primary key (id) USING BTREE)ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='霍格沃兹学生';

提示“Query OK”,创建成功,如下图所示。请注意,在创建新表之前,需先选好数据库,如下图红框所示。
在这里插入图片描述
有博客提到“注意创建表格过程中必须是英文输入法,中文和英文的逗号,括号和引号都必须是英文的。”,待确认。
5. ①向上一步创建的表testTable1插入数据,insert into testTable1(id,name) values(0,'0');。第一处testTable1(id,name)要给出要插入的表名和要插入的单条数据涉及到的列名,第二处values(0,'0')要针对第一处给出的【要插入数据涉及到的每个列名】的值。若插入成功,会提示Query OK,如下图所示。
在这里插入图片描述

若要一条sql语句插入多条数据,可使用insert into testTable1(id,name) values(0,'0'),(1,'1'),(2,'2');

②若向上一步创建复杂的表hogwarts_user 插入数据insert into hogwarts_user(name, age) values('霍格沃兹测试学院',1),通常不要手动设置id的值。因为在创建hogwarts_user表时,将id设置为了自增AUTO_INCREMENT,所以一般不在插入新数据时设置id,交由数据库自增,防止自己设定的id与数据库自增的id冲突。若非要设置id,语法上可行

在创建表hogwarts_user 时,如果有设置某列名不能为空(NOT NULL)时,则向该表插入数据时该列的属性必须有值,否则会报错。

  1. 使用select * from 【表名,比如此处的testTable1】;查看刚才插入的那一条数据,如下图所示。
    在这里插入图片描述
    查看上一步②中创建的数据,如下图所示。
    在这里插入图片描述

  2. mysql>exit退出数据库——即退出mysql命令行模式mysql>,如下图所示。
    在这里插入图片描述

  3. 若要关闭MySQL(需先退出数据库——即mysql>模式),在操作系统的任意路径下输入net stop mysql即可,如下图所示。提示服务已成功停止表示MySQL数据库已关闭。
    在这里插入图片描述

mysql>模式下输入的每句sql语句都要以;结尾;若多行语句无;,则被默认为一条语句未输入完成;若多条语句无;,直到最后一条语句有;,则被认为是一条语句。

如下图所示,因为第一个红框处前几句语句都没有;分号,所以直到最后一句才被认为是sql语句结束,所以被当作前几行语句是一句sql语句,从而报错。
在这里插入图片描述

连接MySQL数据库

Java工程连接数据库

  1. 首先将jar包mysql-connector-java-8.0.30.jar导入Java工程的正确位置,通常在lib目录下。Java工程导入jar包的方法详见这篇博客。
  2. 注册JDBC驱动:Class.forName("com.mysql.cj.jdbc.Driver");。作用待定,删除本句话及catch中本句可能抛出的异常后,可正常获取数据库数据。
  3. 打开?or获取?到数据库的链接:connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC", "root", "");

“jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC”:其中的test是数据库的名称,可通过net start mysql启动数据库、mysql -u root -p登录数据库后,在mysql>下(自认,即数据库内)使用show databases;查看当前电脑上现有数据库的所有名称。

  1. 创建查询:statement = connection.createStatement();
  2. 编写要查询的sql语句:String sqlString = “select * from hogwarts_user;”;
  3. 执行sql查询,按照上一行的sql语句:ResultSet resultSet = statement.executeQuery(sqlString);
  4. 输出resultSet中的查询结果:如下所示。需要注意的是,java.sql.ResultSet也需要close()关闭
			//输出查询结果while (resultSet.next()) {int id = resultSet.getInt("id");//resultSet.getInt用于获取int类型的结果String nameString = resultSet.getString("name");//resultSet.getString用于获取String类型的结果String ageString = resultSet.getString("age");System.out.print("id是"+id);System.out.print(",name是"+nameString);System.out.println(",age是"+ageString);System.out.println("---------------");}

完整代码,如下所示。

import java.sql.*;Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;//java.sql.ResultSet也需要close关闭!// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
//    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
//    static final String DB_URL = "jdbc:mysql://localhost:3306/test";// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URLstatic final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";try{//注册JDBC驱动Class.forName(JDBC_DRIVER);//打开链接connection = DriverManager.getConnection(DB_URL, "root", "");//创建sql查询statement = connection.createStatement();//sql语句String sqlString = "select * from hogwarts_user;";//执行查询,获取sql查询结果resultSet = statement.executeQuery(sqlString);//输出查询结果while (resultSet.next()) {//此循环条件自测无误,不会导致错过一条int id = resultSet.getInt("id");String nameString = resultSet.getString("name");String ageString = resultSet.getString("age");System.out.print("id是"+id);System.out.print(",name是"+nameString);System.out.println(",age是"+ageString);System.out.println("---------------");}
} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();
} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();
}finally {if (resultSet!=null) {//java.sql.ResultSet也需要close!try {resultSet.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (statement!=null) {try {statement.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (connection!=null) {try {connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

SpringMVC工程连接数据库


http://www.ppmy.cn/news/6015.html

相关文章

English Learning - Day19 一周高频问题汇总 2022.12.25 周日

English Learning - Day19 一周高频问题汇总 2022.12.25 周日这周主要内容1 分词作状语作时间状语时相当子 when 引导的从句作原因状语时相当于 as,since,because 引导的从句作方式或伴随情况状语时不能用状语从句替换,但常可改写为并列成分作条件狀语相当于 it, un…

Debezium系列之:打通Debezium2.0以上版本的使用技术

Debezium系列之:打通Debezium2.0以上版本的使用技术 一、相关技术博客二、安装部署Debezium2.0以上版本三、Debezium2.0以上版本实际应用的变化四、完整的Debezium connector参数五、提交Debezium connector六、jmx页面查看connector信息一、相关技术博客 博主使用过程中踩了…

通达信接口node筹码分布怎么修改参数?

通达信接口node筹码分布怎么修改参数?其实就是需要点击筹码分布又上角的图标就可以修改了,可以修改成本的算法,还有历史换手衰减系数,还可以添加远期和近期的成本分布。 通达信接口node筹码参数分享,如下:…

预焙阳极行业现状:供给格局边际将改善 “双碳”下优质产品迎新机遇

预焙阳极属于碳素制品,是电解铝生产过程中不可缺少的大宗原材料。从用途来看,预焙阳极仅用作电解铝过程中电解槽的阳极材料,既作为导体,又参与电化学反应而产生消耗,预焙阳极的品质会对原铝的质量产生重要影响。 一、预…

计算平方根的一些方法总结(C++)

tags: DSA Math C 写在前面 重新熟悉下计算平方根的算法, 当然对于力扣的平方根69. x 的平方根 - 力扣(LeetCode), 已经出现了不下五种的方法了, 这次简要总结下. 代码均为C. 调包 return (int) sqrt(x); return (int) pow(x, .5);高级调包 应用了 …

MATLAB笔记:基础数据类型,矩阵操作

个人测试笔记&#xff0c;%前为代码&#xff0c;后为注释 A[2 0 0;0 3 0;0 6 6] %%矩阵赋值 AAA>2&A<6 %与 AAA<3|A>4 %或 AAzeros(3,3) BB[AA,A] %%矩阵连接 aA(2) %%取矩阵元素 aA(2,2) aA(:) %%取全部元素 aA(1:5) aA([1,5,9]) A(1,…

校园打架行为识别检测 yolov7

校园打架行为识别检测系统基于python基于yolov7深度学习框架边缘分析技术&#xff0c;自动对校园、广场等区域进行实时监测&#xff0c;当监测到有人打架斗殴时&#xff0c;系统立即抓拍存档语音提醒&#xff0c;并将打架行为回传给学校后台&#xff0c;提醒及时处理打架情况。…

【JavaEE】Cookie 和 Session

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录【Cookie和Session】相关方法1. HttpServletRequest类的相关方法2. HttpServletRespon类的相关方法3. HttpSession类中相关的方法&#xff1a;4. Cookie类中相关的方法&#xff1a;写一个模拟登录的案例上传文件Serv…