JavaEE(一) MySQL数据库

5 篇文章 0 订阅
1 篇文章 0 订阅

目录

1.MySQL介绍

2.MySQL的安装与配置

3.MySQL语法

3.1 创建数据库

3.2 创建表

3.3 表的修改删除等操作

3.4 查询语句

3.5 多表查询

3.6 MySQL函数


 


1.MySQL介绍

MySQL是一个关系型数据库管理系统目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

这里有两个关键词,数据库系统DBS和数据库管理系统DBMS,至于这两个关键字是什么,我这里就不多讲了,用的多了就清除了。
关系型数据库的特点:
    1.数据集中控制,在文件管理方法中,文件是分散的,这些文件之间一般是没有联系的,因此不能按照统一的方法来控制、维护和管理。而数据库则可以集中控制、维护和管理有关数据。
    2.数据独立,数据库中的数据独立于应用程序,包括数据的物理独立性和逻辑独立性,给数据库的使用、调整、优化和进一步扩充提供了方便。
    3.数据共享,数据库中的数据可以供多个用户使用,每个用户只与库中的一部分数据发生联系;用户数据可以重叠,用户可以同时存取数据而互不影响。
    4.减少数据冗余,数据库中的数据不是面向应用,而是面向系统。数据统一定义、组织和存储,集中管理,避免了不必要的数据冗余。
    5.数据结构化,整个数据库按一定的结构形式构成,数据在记录内部和记录类型之间相互关联,用户可通过不同的路径存取数据。
    6.统一的数据保护功能,在多用户共享数据资源的情况下,对用户使用数据有严格的检查,对数据库规定密码或存取权限,以确保数据的安全性、并发控制。
     
数据库的默认端口:
    mysql的默认端口是3306,可以编辑用户目录下的 .my.cnf 文件进行修改。
    sqlserver默认端口号为:1433
    oracle 默认端口号为:1521
    DB2 默认端口号为:5000
    PostgreSQL默认端口号为:5432

2.MySQL的安装与配置

对于数据库的安装,我个人比较喜欢手动配置,步骤如下

mysql下载地址:https://dev.mysql.com/downloads/mysql/

配置环境变量,在path中添加MySQL安装路径\bin

解压后直接在MySQL的bin目录下打开cmd,执行mysqld --initialize --console

将生成的这个记下来。这是登入数据库的初始密码

继续执行mysqld --install

显示  Service successfully installed. 则说明安装成功

执行  net start mysql 启动mysql服务

然后登陆mysql:输入mysql -u root -p

密码就是刚刚生成的那一串东西

登陆进来过后,要修改自己数据库的密码,命令如下

alter user 'root'@'localhost' identified by 'youpassword';  

查看一下数据库,若出现mysql这个库,则说明数据库root密码修改成功,并且以root用户登录。

软件安装就已经全部完成了。

旧版本安装

进入改文件夹,新建一个my.ini

 

[mysql]

; 设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

;设置3306端口

port = 3306

; 设置mysql的安装目录

basedir=C:\mysql-5.6.17-winx64

; 设置mysql数据库的数据的存放目录

datadir=C:\mysql-5.6.17-winx64\data

; 允许最大连接数

max_connections=200

; 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

; 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

添加环境变量

 

用管理员打开cmd

安装好过后默认没有密码的。按照以下命令修改密码

退出以后就可以用新密码登录了。

3.MySQL语法

在MySql数据库中,SQL语句主要可以划分为以下几类:

DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引、约束)的操作。

CREATE、DROP、ALTER、RENAME、 TRUNCATE等

DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。

INSERT、DELETE、UPDATE、SELECT等 

DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别。

3.1 创建数据库

#create database 数据库名字;.

#一个例子
create database javaee_db01;

#选则创建的数据库
use javaee_db01;

#显示所有数据库
show databases;

3.2 创建表

CREATE table countries(
	id int(2) not null PRIMARY KEY auto_increment,
	country VARCHAR(15) not null
);

#查看表结构
desc countries;

#PRIMARY KEY主键
#auto_increment自动递增
#int数据类型,varchar、char......

3.3 表的修改删除等操作

MySQL更改数据:
	新增字段-->alter table table_name add column col_name 类型;
	修改字段-->alter table table_name change oldc_name newc_name 类型;
	修改类型-->alter table table_name modify col_name 类型;
	修改表名-->alter table oldt_name rename to newt_name;
	更新数据-->update table_name set col_name = colnew_value where col_name = colold_value ;
	
MySQL删除数据:
	删除数据表-->drop table if exists table_name;
	记录删除-->delete from table_name where 条件;

3.4 查询语句

MySQL查询语句:
	查询所有-->select * from table_name;
	指定查询-->select col_name1,col_name2…… from table_name;
	条件查询-->select * from table_name where 限定条件;
	(where语句中的关键字:and  or  like betwing  in 排序)
	like模糊查询-->select * from table_name col_name like '-%';#_表示匹配任意一个字符  %表示通配符,匹配0个到多个字符。
	排序查询-->select * from table_name order by col_name desc; #desc表示升序,asc表示降序,如果需要多个字段排序,直接在后面加

3.5 多表查询

    1. 交叉连接:不带WHERE 子句它返回被连接的两个表所有数据行,使用cross join关键字进行交叉连接
	 -->select 字段1,字段2,…… from 表一 cross join 表二;

	2. 内连接:指定了关键字为INNER的连接为内连接,内连接分三种:等值连接、自然连接、不等连接;
	-->SELECT * FROM table_name INNER JOIN table2_name on 连接条件;

	3. 外连接:指定了关键字为OUTER的连接为外连接,外连接分为两种,左外连接和右外连接
	左外连接-->会显示所有左表数据,右表只显示匹配到的数据,无匹配,以null填充
		SELECT * FROM table_name LEFT OUTER JOIN table2_name ON 连接条件;
	右外连接-->会显示所有右表数据,左表只显示匹配到的数据,无匹配,以null填充
		SELECT * FROM table_name RIGHT OUTER JOIN table2_name ON 连接条件;

	4. 全连接,左表和右表的数据将会全部显示,中间用UNION连接
	SELECT * FROM table_name LEFT OUTER JOIN table2_name ON 连接条件 
	UNION
	SELECT * FROM table_name RIGHT OUTER JOIN table2_name ON 连接条件;

	5.子查询:一个查询语句嵌到另一个查询语句的子句
	-->select * from table1_name where 字段1 =(
		SELECT 字段 from table2_name where 条件
	);
	查询table1_name表中的字段,查询条件是字段1等于后面这个查询语句的结果

3.6 MySQL函数

    1. 聚合函数:
	-->AVG() 返回某列的平均值;
	-->COUNT() 返回某列的行数
	-->MAX() 返回某列的最大值
	-->MIN() 返回某列的最小值
	-->SUM() 返回某个列之和

	2. 分组查询 group by
	-->Select 分组字段或聚合函数 from 表  where 条件 group by 分组字段 having 条件 order by 字段

	3. 数学函数
	-->ABS(x)  返回x的绝对值
	-->RAND()  0-1的随机数
	-->ROUND(x,y)  返回参数x的四舍五入的有y位小数的值
	-->MOD(x,y)   返回x/y的模(余数)
	-->PI()  返回pi的值(圆周率)
	-->SQRT(x)   返回一个数的平方根
	-->GREATEST(x1,x2,...,xn)   返回集合中最大的值
	-->LEAST(x1,x2,...,xn)  返回集合中最小的值

	4. 字符串函数
	-->ASCII(str)   返回字符串的ASCII码
	-->CONCAT(str1,str2,...)  将给定字符串拼接
	-->LENGTH(str)  返回给定字符串长度
	-->LEFT(str,len)  返回给定字符串最左len个字符
	-->RIGHT(str,len)  返回给定字符串最右len个字符
	-->SUBSTRING(str,pos)  字符串str的起始位置pos返回一个子串
	-->REVERSE(str)  将str顺序反转
	-->LOWER(str)  Str转为小写
	-->UPPER(str)  Str转为大写

	5. 时间函数
	-->CURTIME()  HH:MM:SS或HHMMSS返回当前时间值
	-->NOW()  YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS
	-->CURDATE()  YYYY-MM-DD’或YYYYMMDD
	-->WEEKDAY(date)  返回日期的星期索引(0开始)
	-->DAYOFYEAR(date)  返回给定日期的天数


本人联系方式2329095893,欢迎各位进行学习讨论

欢迎关注熊熊出没ING公众号,不定时跟新Java、python、信息安全等相关知识哦。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的Java EE项目,用于连接MySQL数据库实现注册登录功能。 首先,在MySQL数据库中创建一个名为“user”的表,包含以下字段:id、username、password。 然后,创建以下两个Java类:User和DBUtil。 User.java: ``` public class User { private int id; private String username; private String password; public User(int id, String username, String password) { this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public String getUsername() { return username; } public String getPassword() { return password; } public void setId(int id) { this.id = id; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } } ``` DBUtil.java: ``` import java.sql.*; public class DBUtil { private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false"; private static final String USERNAME = "root"; private static final String PASSWORD = "123456"; public static Connection getConnection() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return conn; } public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 接下来,创建以下两个Servlet:RegisterServlet和LoginServlet。 RegisterServlet.java: ``` import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/register") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String username = request.getParameter("username"); String password = request.getParameter("password"); Connection conn = null; PreparedStatement pstmt = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO user(username, password) VALUES (?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); int result = pstmt.executeUpdate(); if (result > 0) { out.print("注册成功!"); } else { out.print("注册失败!"); } } catch (Exception e) { e.printStackTrace(); } finally { DBUtil.close(conn, pstmt, null); } } } ``` LoginServlet.java: ``` import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String username = request.getParameter("username"); String password = request.getParameter("password"); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM user WHERE username = ? AND password = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); rs = pstmt.executeQuery(); if (rs.next()) { out.print("登录成功!"); } else { out.print("用户名或密码错误!"); } } catch (Exception e) { e.printStackTrace(); } finally { DBUtil.close(conn, pstmt, rs); } } } ``` 最后,在web.xml文件中添加以下配置: ``` <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/register</url-pattern> </servlet-mapping> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> ``` 现在,你可以在Web页面上实现注册和登录功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值