Roookie博客 | 记录 · 收纳 · 分享 - MySQL
type: channel
link: https://www.wlplove.com/tag/MySQL/
items: 不使用 MySQL Installer 安装 MySQL 的方法
items: Spring学习笔记（四） - SSM框架整合
items: MySQL数据表中的auto_increment自增值属性及修改
items: 【踩坑实录】mybatis项目报错：Establishing SSL connection without...property is set to false
items: SQL系列总结（四）：DCL（数据控制语言）
items: SQL系列总结（三）：DML（数据操纵语言）
items: SQL系列总结（二）：DQL（数据查询语言）
items: SQL系列总结（一）：DDL（数据定义语言）
items: Java总结：JDBC连接操作数据库(一)
items: 【踩坑实录】win10下在控制台中无法使用 mysql 命令：mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件

不使用 MySQL Installer 安装 MySQL 的方法
type: item
date: 2024-12-03T09:32:00+00:00
description: 目录： 1、下载安装MySQL 2、在安装目录新建配置 3、添加环境变量 4、安装 5、启动服务 6、卸载 现在 Windows 下安装 MySQL 的时候需要首先下载 MySQL Installer，通过这个软件来联网安装管理不同版本的 MySQL，但是这个软件默认是将 MySQL 安装在 C 盘的，修改安装路径的地方也藏的很隐蔽，并且由于安装时 MySQL Installer 需要联网下载安装包，这对于内网里的机器无疑就是很不友好的。但是从 Oracle 官网下载到的 MSI Installer 程序只是解压出了 MySQL 程序，并没有进行任何的环境变量配置、服务配置，那么就需要通过手动配置程序信息。 1、下载安装MySQL 最新版本下载链接：MySQL :: Download MySQL Community Server 旧版本下载链接：MySQL :: Download MySQL Community Server (Archived Versions) 选择下载某一个版本的 MSI 安装程序或者 ZIP 压缩包，下载完成之后进行安装或解压。 2、在安装目录新建配置 下文中的 MySQL 安装目录以 D:\Program\Environment\MySQL\MySQL Server 5.7 为例： 安装目录下创建一个 “data” 文件夹 安装目录下创建一个 “my.ini” 文本文件，向其中写入以下内容（文件路径根据实际修改）： [mysqld] # mysql 安装目录 basedir="D:\Program\Environment\MySQL\MySQL Server 5.7" # mysql 数据库的数据存放目录 datadir="D:\Program\Environment\MySQL\MySQL Server 5.7\data" sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # MySQL服务器监听的端口 port=3306 # 服务端编码方式 character-set-server=utf8mb4 [clinet] # 客户端编码方式 loose-default-character-set=utf8mb4 # 端口号设置 port=3306 [WinMySQLadmin] Server="D:\Program\Environment\MySQL\MySQL Server 5.7\bin\mysqld.exe" 3、添加环境变量 右键 “开始菜单” -> “系统” -> “高级系统设置” -> “环境变量” 向 Path 中添加环境变量，值为 MySQL 安装目录下的 bin 文件夹： D:\Program\Environment\MySQL\MySQL Server 5.7\bin 4、安装 上面环境变量配置没有问题的话，就可以在 cmd 窗口中使用 mysqld 命令了。 此时以管理员身份运行 cmd 窗口，执行命令来初始化相关 data 文件： # 在前面配置好的 data 文件夹下会生成初始化的文件 mysqld --initialize-insecure --user=mysql 安装 MySQL 服务： mysqld -install 5、启动服务 可以通过以下命令启动 MySQL 服务： net start mysql 或者在 ”服务“ 窗口中找到 ”MySQL“ 这项服务，右键启动即可： 服务窗口可通过在“运行”窗口输入 “services.msc” 来启动，或者右键 开始菜单 -> 计算机管理 -> 服务和应用程序 -> 服务 找到。 在启动过程中有可能会出现报错： 在 MySQL 的服务属性中可以看到这项服务可执行文件的程序路径是不正确的： 这个窗口里面没有提供可以改这个路径的地方，查了一下，得需要到注册表中改，在注册表中（Win + R 运行窗口中输入“regedit”回车打开）找到 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQL” 这个路径，修改其中 ImagePath 的值，将引号里的路径替换为本地 MySQL 安装文件的实际路径（就只替换前面的路径，其他的不用改）： 保存退出之后，再到 “服务” 窗口中刷新一下，可执行文件的路径变成了新的路径之后再次启动即可成功启动 MySQL 服务。 目前本地运行的 MySQL 服务用 root 用户就可以登录，密码为空 MySQL 修改密码： 连接到数据库之后用 SQL 语句为 root 用户更改密码： alter user '用户名'@'localhost' identified by '新密码'; 修改完之…

Spring学习笔记（四） - SSM框架整合
type: item
date: 2021-11-13T14:56:00+00:00
description: 目录 一、创建Webapp项目 二、Spring配置类 三、数据源对象（以Druid为例） 四、整合MyBatis 4.1、数据库配置 4.2、MyBatis配置 五、整合SpringMVC 六、整合Log4j 七、整合Junit 环境说明： 数据库：MySQL 8.0 Java版本：JDK8 通过注解整合 SSM 框架流程： 创建 Web 工程 SSM 整合 Spring 框架：SpringConfig MyBatis 框架：JdbcConfig / jdbc.properties / MybatisConfig SpringMVC 框架：ServletConfig / SpringMvcConfig 一、创建Webapp项目 在 IDEA 中根据 “maven-archetype-webapp” 模板创建 Webapp 项目： 创建基本项目结构： 二、Spring配置类 引入 spring-conext 的依赖坐标： <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.25.RELEASE</version> </dependency> 创建一个 Java 类 SpringConfig 作为 Spring 配置类，类上面添加 @Configuration 注解标识这是一个配置类，添加 @ComponentScan 注解来设置扫描注解的路径 @Configuration @ComponentScan("com.xxx") /** * 如果有多个要扫描的包路径，可以用数组格式： * @ComponentScan({"com.xxx.dao","com.xxx.service"}) */ public class SpringConfig { } 三、数据源对象（以Druid为例） 导入 Druid 数据源的依赖坐标： <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.22</version> </dependency> 新建一个配置数据库连接信息的类 JdbcConfig，里面引入配置文件中的数据库信息，然后用一个方法构造并返回一个 DataSource 对象，最后用 @Bean 注解设置这个方法的返回值成为 Spring IoC 容器的一个 Bean： public class JdbcConfig { @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; /** * 数据源Bean * @return */ @Bean public DataSource dataSource() { DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(driver); ds.setUrl(url); ds.setUsername(username); ds.setPassword(password); return ds; } } Spring 配置类 SpringConfig 中用 Import 注解引入 JdbcConfig 这个类： @Configuration @ComponentScan("com.xxx") +@Import({JdbcConfig.class}) public class SpringConfig { } 四、整合MyBatis 4.1、数据库配置 在 src/main/resources 目录下新建一个配置数据库连接信息的配置文件 jdbc.properties： jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db?useSSL=false&setUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=root 使用 @PropertySource 注解在 Spring 配置类 SpringConfig 上加载外部的 prope…

MySQL数据表中的auto_increment自增值属性及修改
type: item
date: 2021-10-31T09:31:00+00:00
description: 目录： 0x01. 查看自增值 1、查看全局自增值 2、查看特定数据表的自增值 0x02. 自增值的取值问题 1、默认取值 2、建表时指定 3、直接指定 4、修改自增字段属性 环境说明： MySQL 5.7 、MySQL 8.0 长期以来，我的博客数据库中连续文章的主键编号一直都不是连续的，让我这个强迫症晚期患看着很不舒服。在忍受了这么长时间以后，趁着给博客换域名的时机，我把所有的文章编号全部改成了连续的，可算是舒服多了。 把改完主键编号的文章数据导入新数据库之后，就产生了一个新问题：现在新数据表的主键自增值还是旧数据表的主键自增值。比如说博客数据库的文章表中有80条数据，下次新创建文章的编号是以旧数据库的自增值202开始递增，生成的新文章编号是203，而不是81。如果要保持文章编号能连续的话，就只能每次发布完新博客之后再去改数据库中的编号，可谓是相当麻烦。 所以我便想着是否可以通过修改数据表里主键的 AUTO_INCREMENT 自动递增值来一步到位，查了一些资料之后，就有了这篇博客。 0x01. 查看自增值 一般来说，数据表中具有自增属性 AUTO_INCREMENT 的字段主要是数据表的主键或者具有唯一性的字段。 如果要查阅其递增值，有这么两种方式： 1、查看全局自增值 SHOW VARIABLES LIKE 'AUTO_INC%'; 这条命令的执行结果会返回两条数据： AUTO_INCREMENT_INCREMENT 表示自增的初始值，AUTO_INCREMENT_OFFSET 表示自增的步长，即每次的自增量。 修改自增初始值与自增量的命令： SET @@AUTO_INCREMENT_INCREMENT=新初始值; SET @@AUTO_INCREMENT_OFFSET=新步长; 注意：这个表示的是数据库全局的自增设置，因此修改以后只会影响到下次新增的带有 AUTO_INCREMENT 属性的列，其自增初始值与自增步长就是新设置的值，对当前已经带有 AUTO_INCREMENT 属性的列的自增初始值与自增步长不起作用。 2、查看特定数据表的自增值 要想查看某个数据表中自增字段的当前自增值，可用以下命令： SHOW TABLE STATUS FROM [数据库名] LIKE [表名]; FROM [数据库名] 与 LIKE [表名] 这两个子句是可选的。 FROM [数据库名] 表示指定查询所在的数据库；LIKE [表名] 指定该数据库下要查询的某个表，如果省略了 LIKE [表名] 子句，则表示查看该数据库下的所有表的信息。 另外，需要注意的是，表名要加引号。 比如查询 TEST 数据库下 test 表的信息： SHOW TABLE STATUS FROM TEST LIKE 'test'; 查询结果中有一个字段名为 “AUTO_INCREMENT”，表示的就是自增值，该表下一条记录的编号就是这个值。 0x02. 自增值的取值问题 1、默认取值 默认情况下，自增值从1开始，每增加一条新记录，自增值便会自增 1。 所以，对于具有 AUTO_INCREMENT 属性的列，不用特意设置列值，而是直接将 NULL 值插入到自增列中去，数据库会自动根据当前的自增值生成列值。 注意： 将 0 插入到自增列中的效果等同于插入 NULL 值； 当插入记录时，如果没有为自增列指明一个值，那么也等同于插入 NULL； 使用 INSERT 语句插入记录时，如果为自增列设置了一个值，那么会出现这样三种情况： 情况一，插入的值与已有的编号重复，则会出现报错 情况二，插入的值大于列的自增值，成功插入这条记录，并且会更新自增值为新值 情况三，插入的值小于列的自增值且与已有的编号不重复，则成功插入这条记录，但自增值不会更新，如果插入的值与已有的值重复，参考情况一 如果用 UPDATE 语句更新自增列，情况与 INSERT 语句相同。 2、建表时指定 我们也可在建表时使用 “AUTO_INCREMENT=自增值” 来指定一个自增的初始值，比如： CREATE TABLE TEST{ -- 建表语句 }AUTO_INCTEMENT=自增值; 3、直接指定 ALTER TABLE [表名] AUTO_INCREMENT=自增值; 如果执行完以后没有效果，那么可以再执行一次 commit 指令以提交更改，使其生效。 4、修改自增字段属性 ALTER TABLE [表名] MODIFY [字段名] [字段类型和约束条件], AUTO_INCREMENT=自增值; 同样的，如果执行完以后没有效果，再执行一次 commit 提交更改。 这个语句相当于直接修改自增字段的属性，包括其数据类型和约束条件。 另外，我在尝试中发现，使用 SQL 语句更改了自增值以后再执行 …

【踩坑实录】mybatis项目报错：Establishing SSL connection without...property is set to false
type: item
date: 2021-09-30T12:14:00+00:00
description: 环境说明： 系统：Win10专业版 mysql 5.7 问题再现 操作数据库时，警告信息如下： WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 以上警告信息翻译一下就是： 警告：不建议在没有服务器身份验证的情况下建立 SSL 连接。 根据MySQL 5.5.45+、5.6.26+ 和 5.7.6+ 要求，如果未设置显式选项，则必须默认建立 SSL 连接。 为了符合不使用 SSL 的现有应用程序，verifyServerCertificate 属性设置为“false”。您需要通过设置 useSSL=false 来显式禁用 SSL，或者设置 useSSL=true 并为服务器证书验证提供信任库。 解决方法 最省事的方法是修改数据库连接信息，在链接之后加上“useSSL=false”，直接禁用SSL连接方式。 原来链接为： jdbc:mysql://localhost:3306/mybatis?setUnicode=true&characterEncoding=utf8 加上参数之后修改为： jdbc:mysql://localhost:3306/mybatis?setUnicode=true&characterEncoding=utf8&useSSL=false 如果将参数设置为“useSSL=true”，在IDEA数据库连接界面设置SSL证书，也可以消除警告：

SQL系列总结（四）：DCL（数据控制语言）
type: item
date: 2021-08-05T08:56:00+00:00
description: 前排提示： 本篇博客篇幅较长，建议结合目录进行阅读！ 目录： 前言 0x01.权限的授予与收回 GRANT REVOKE 0x02.数据库角色 角色的创建 ——CREATE ROLE 给角色授权 ——GRANT 将角色授予给其他角色或用户 ——GRANT 收回角色权限 ——REVOKE 0x03.用户管理 创建用户： 删除用户： 重命名用户名： 修改用户密码： 环境说明： 数据库：Mysql 5.5 连接软件：Navicat 前言 SQL总结系列目录： SQL系列总结（一）：DDL（数据定义语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（二）：DQL（数据查询语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（三）：DML（数据操纵语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（四）：DCL（数据控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（五）：TCL（事务控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 数据控制语言(Data Control Language，DCL)，是一种可对数据访问权进行控制的指令，它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权。由GRANT和REVOKE两个指令组成。 0x01.权限的授予与收回 用户对某一数据对象的操作权称为权限。 数据库管理员拥有对数据库中所有对象的所有权限。 用户对自己建立的基本表和视图拥有全部的操作权限。 关系数据库系统中数据库模式的存取权限： 对象 操作权限 SCHEMA（模式） CREATE VIEW（视图） CREATE TABLE（基本表） CREATE、ALTER INDEX（索引） CREATE 关系数据库系统中数据的存取权限： 对象 操作权限 TABLE（基本表）、VIEW（视图） CREATE、INSERT、SELECT、UPDATE、DELETE、REFERENCES、ALL PRIVILEGES 属性列 SELECT、INSERT、UPDATE、REFERENCES、ALL PRIVILEGES SQL中使用GRANT和REVOKE语句向用户授予或收回对数据的操作权限。 GRANT GRANT语句向用户授予权限，一般格式为： GRANT <权限> ON <对象类型><对象名> TO <用户> [WITH GRANT OPTION]; 其语义为：将对某个操作对象（基本表、视图等）的指定操作权限授予某个用户 执行GRANT语句的可以是数据库管理员，也可以是数据库对象创建者（即owner）或者已经拥有该权限的用户 接受权限的用户可以是一个或多个具体用户，也可以是PUBLIC，即全体用户 [WITH GRANT OPTION]子句是可选的，如果指定了这个子句，则表示获得权限的用户还可以把这种权限再授予其他的用户（仅限于获得的这些权限），此时这些权限可以称为依赖权限。反之则该用户不能传播该权限 SQL标准允许具有WITH GRANT OPTION的用户把相应权限或其子集传递授予其他用户，但不允许循环授权，即被授权者不能把权限再授回给授权者或其祖先 例1：把查询Student表的权限授给用户U1，并允许U1将此权限授予给其他用户 GRANT SELECT ON TABLE Student TO U1 WITH GRANT OPTION; 例2：把对Student表和Course表的全部操作权限授予用户U2和U3 GRANT ALL PRIVILEGES ON TABLE Student,Course TO U2 U3; 例3：把对表SC的所有权限授予给全体用户 GRANT ALL PRIVILEGES ON TABLE SC TO PUBLIC; 例4：把查询Student表格修改学生学号的权限授给用户U4 GRANT ALTER(Sno) ON TABLE Student TO U4; 查看当前用户拥有的权限： SHOW GRANTS; 查看指定用户拥有的权限，前提是有超级用户权限： SHOW GRANTS FOR <用户名>; REVOKE REVOKE语句收回已经授予给用户的权限，一般格式为： REVOKE [GRANT OPTION FOR] <权限> ON <对象类型> <对象名> FROM <用户> [CASCADE | RESTRICT] [GRANT OPTION FOR]是可选项。如果声明了GRANT OPTION FOR，那么只是撤销对该权…

SQL系列总结（三）：DML（数据操纵语言）
type: item
date: 2021-08-02T21:17:00+00:00
description: 前排提示： 本篇博客篇幅较长，建议结合目录进行阅读！ 目录： 前言 准备数据 0x01.插入数据 1.插入元组 2.插入子查询结果 0x02.修改数据 1.普通修改 2.带有子查询的修改语句 0x03.删除数据 1.普通删除 2.带有子查询的删除语句 环境说明： 数据库：Mysql 5.5 连接软件：Navicat 前言 SQL总结系列目录： SQL系列总结（一）：DDL（数据定义语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（二）：DQL（数据查询语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（三）：DML（数据操纵语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（四）：DCL（数据控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（五）：TCL（事务控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 数据操纵语言（Data Manipulation Language, DML）是对于数据库中的数据的基本操作。具体操作增、删、改这三种，对应的关键词是：增——INSERT、删——DELETE、改——UPDATE。 在使用数据库的系统开发过程中，对于数据库的基本操作就是“增、删、改、查”，以“CRUD”(分别为 Create, Read, Update, Delete)来称呼。 准备数据 本篇博客中出现的SQL语句实例基于下面的三张数据表： {tabs} {tabs-pane label="学生表"} Student(Sno,Sname,Ssex,Sage,Sdept) -- 创建表： CREATE TABLE Student(Sno CHAR(6) Primary KEY, -- 学号 主键 Sname VARCHAR(20), -- 名字 Ssex CHAR(2), -- 性别 Sage INT, -- 年龄 Sdept VARCHAR(20) -- 系部 )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据： INSERT INTO Student VALUES('202101','李勇','男',20,'计算机系'); INSERT INTO Student VALUES('202102','刘晨','女',19,'计算机系'); INSERT INTO Student VALUES('202103','王敏','女',18,'数学系'); INSERT INTO Student VALUES('202104','张立','男',18,'信息系'); {/tabs-pane} {tabs-pane label="课程表"} Course(Cno,Cname,Cpno,Ccredit) -- 创建表： CREATE TABLE Course(Cno CHAR(1) PRIMARY KEY, -- 课程号 主键 Cname VARCHAR(20), -- 课程名 Cpno CHAR(1), -- 前置学科课程号 Ccredit INT -- 学分 )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据： INSERT INTO Course VALUES('1','数据库','5',4); INSERT INTO Course VALUES('2','数学','null',2); INSERT INTO Course VALUES('3','信息系统','1',4); INSERT INTO Course VALUES('4','操作系统','6',3); INSERT INTO Course VALUES('5','数据结构','7',4); INSERT INTO Course VALUES('6','数据处理','',2); INSERT INTO Course VALUES('7','C语言','6',4); {/tabs-pane} {tabs-pane label="学生选课表"} SC(Sno,Cno,Grade) -- 创建表： CREATE TABLE SC(Sno CHAR(6), -- 学号 主键 Cno CHAR(1), -- 课程号 主键 Grade INT, -- 成绩 PRIMARY key(Sno,Cno) -- 设置表级约束条件 )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据： INSERT INTO SC VALUE…

SQL系列总结（二）：DQL（数据查询语言）
type: item
date: 2021-07-30T05:17:00+00:00
description: 前排提示： 本篇博客篇幅较长，建议结合目录进行阅读！ 目录： 前言 准备数据 0x01.单表查询 1.基本查询 2.条件查询 比较大小 确定范围 确定集合 字符匹配 判断是否为空 多重条件 3.分页查询 0x02.连接查询 ——待完成 0x03.嵌套查询 ——待完成 0x04.集合查询 ——待完成 0x05.基于派生表的查询 ——待完成 环境说明： 数据库：Mysql 5.5 连接软件：Navicat 前言 SQL总结系列目录： SQL系列总结（一）：DDL（数据定义语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（二）：DQL（数据查询语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（三）：DML（数据操纵语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（四）：DCL（数据控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（五）：TCL（事务控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 数据查询是数据库的核心操作。因此，数据查询语言DQL（Data Query Language）是SQL中的核心部分，它允许用户查询数据，这也是通常最频繁的数据库日常操作。 SQL提供了SELECT进行语句查询，该语句具有灵活的使用方式和丰富的功能。SELECT语句既可以完成简单的单表查询，也可以完成复杂的连接查询和嵌套查询。 准备数据 本篇博客中出现的SQL语句实例基于下面的三张数据表： {tabs} {tabs-pane label="学生表"} Student(Sno,Sname,Ssex,Sage,Sdept) -- 创建表： CREATE TABLE Student(Sno CHAR(6) Primary KEY, -- 学号 主键 Sname VARCHAR(20), -- 名字 Ssex CHAR(2), -- 性别 Sage INT, -- 年龄 Sdept VARCHAR(20) -- 系部 )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据： INSERT INTO Student VALUES('202101','李勇','男',20,'计算机系'); INSERT INTO Student VALUES('202102','刘晨','女',19,'计算机系'); INSERT INTO Student VALUES('202103','王敏','女',18,'数学系'); INSERT INTO Student VALUES('202104','张立','男',18,'信息系'); {/tabs-pane} {tabs-pane label="课程表"} Course(Cno,Cname,Cpno,Ccredit) -- 创建表： CREATE TABLE Course(Cno CHAR(1) PRIMARY KEY, -- 课程号 主键 Cname VARCHAR(20), -- 课程名 Cpno CHAR(1), -- 前置学科课程号 Ccredit INT -- 学分 )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据： INSERT INTO Course VALUES('1','数据库','5',4); INSERT INTO Course VALUES('2','数学','null',2); INSERT INTO Course VALUES('3','信息系统','1',4); INSERT INTO Course VALUES('4','操作系统','6',3); INSERT INTO Course VALUES('5','数据结构','7',4); INSERT INTO Course VALUES('6','数据处理','',2); INSERT INTO Course VALUES('7','C语言','6',4); {/tabs-pane} {tabs-pane label="学生选课表"} SC(Sno,Cno,Grade) -- 创建表： CREATE TABLE SC(Sno CHAR(6), -- 学号 主键 Cno CHAR(1), -- 课程号 主键 Grade INT, -- 成绩 PRIMARY key(Sno,Cno) -- 设置表级约束条件 )ENGINE=INNODB DEFAULT CHARSET=utf8; -- 插入数据： IN…

SQL系列总结（一）：DDL（数据定义语言）
type: item
date: 2021-07-24T16:43:00+00:00
description: 前排提示： 本篇博客篇幅较长，建议结合目录进行阅读！ 目录 前言 SQL简介 数据字典 定义： 0x01.模式 创建模式——CREATE SCHEMA 删除模式——DROP SCHEMA 0x02.基本表 数据类型 创建表 删除表 修改表 0x03.索引 索引类型 建立索引 修改索引名称 删除索引 0x04.视图 定义 特征 几个概念 创建视图 查询视图 更新视图 删除视图 总结 环境说明： 数据库：Mysql 5.5 连接软件：Navicat 前言 SQL总结系列目录： SQL系列总结（一）：DDL（数据定义语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（二）：DQL（数据查询语言）- Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（三）：DML（数据操纵语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（四）：DCL（数据控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL系列总结（五）：TCL（事务控制语言） - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) SQL简介 SQL（Structured Query Language），称为结构化查询语言，是关系数据库的标准语言。其功能不仅仅是查询，而是包括数据库模式创建、数据库数据的插入与修改、数据库安全性完整性控制等一系列功能。 目前没有一个关系数据库系统（RDBMS）能够支持SQL标准的所有概念和特性。大部分数据库系统能支持SQL/92标准的大部分功能以及SQL99、SQL2003中的部分新概念。同时许多软件厂商对SQL基本命令集还进行了不同程度的扩充和修改，又可以支持标准以外的一项功能特性。因此，使用具体数据库系统时还需要参考相应的官方文档。 SQL总共由以下几部分组成： 数据查询语言（DQL: Data Query Language）：其语句也称为“数据检索语句”，用以从表中获得数据，确定数据怎样在应用程序给出。 数据操纵语言（DML：Data Manipulation Language）：用于添加、修改和删除。 数据控制语言（DCL：Data Control Language）：实现权限控制，确定单个用户和用户组对数据库对象的访问。 数据定义语言（DDL：Data Definition Language）：在数据库中创建新表或修改、删除表（CREATE TABLE 或 DROP TABLE）；为表加入索引等。 数据字典 定义： 数据字典是关系型数据库内部的一组系统表，他记录数据库中所有的定义信息，包括关系模式定义、视图定义、索引定义、完整约束定义、各类用户对数据库的操作权限、统计信息等。 关系型数据库在执行SQL的数据定义语句时，实际上就是更新数据库字典表中的相应信息。 进行查询优化和查询处理时，数据字典中的信息是其重要依据。 本篇只涉及到DDL，即数据定义语言。如无特别说明，本篇博客中方括号内容表示可选内容。 SQL中的数据定义功能包括模式定义、表定义、视图和索引定义。 0x01.模式 创建模式——CREATE SCHEMA CREATE SCHEMA <模式名> AUTHORIZATION <用户名>; 若不指定模式名，则默认为用户名 用户需要有数据库管理员权限或者获得了管理员授予的CREATE SCHEMA权限才能创建模式 定义模式实际上定义了一个命名空间，用户在创建模式的同时可以在这个模式中创建基本表、视图、定义授权等。即： CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>]; 删除模式——DROP SCHEMA DROP SCHEMA <模式名> <CASCADE|RESRICT>; # CASCADE（级联）和 RESTICT（限制）两者必选其一 0x02.基本表 数据类型 数据类型 含义 CHAR(n)，CHARACTER(n) 长度为n的定长字符串 VARCHAT(n)，CHARACTERVARYING(n) 最大长度为n的变长字符串 CLOB 字符串大对象 BLOB 二进制大对象 INT，INTEGER 长整数（4字节） SMALLINT 短整数（2字节） BIGINT 大整数（8字节） NUMERIC(p,d) 定点数，由p位数字（不包括小数点、符号）组成，小数点后面有d位数字 DECIMAL(p,d)，DEC(p,d) 同NUMERIC REAL 取决于机器精度的单精度浮点数 DOUBLE PRECISION 取决于机器精度的双…

Java总结：JDBC连接操作数据库(一)
type: item
date: 2021-05-24T14:06:00+00:00
description: 目录： 前言 一、JDBC结构 1.Java程序 2.JDBC管理器 3.驱动程序 4.数据库 二、JDBC编程的步骤 1、导入包 2、加载驱动程序 3、设置JDBC的连接地址信息 4、创建数据库连接 5、使用SQL语句操作数据库 5.1.Statement接口方法创建表： 5.2.PreparedStatement接口： 6、关闭连接 三、相关的类与方法 1、DriverManager类 ——管理驱动 2、Connection接口 ——建立连接 3、Statement接口 ——执行SQL语句 4、PreparedStatement接口 ——执行SQL语句 5、ResultSet接口 ——存放查询之后返回的结果 前言 Java Database Connectivity简称JDBC，属于Java核心API的一部分，是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口。支持ANSI SQL-92标准，通过调用这些类和接口提供的成员方法，我们可以方便地连接各种不同的数据库，进而使用标准的SQL命令对数据库进行查询、插入、删除、更新等操作。 一、JDBC结构 1.Java程序 主要功能是根据JDBC方法实现对数据库的访问和操作。 主要任务有：请求与数据库建立连接，向数据库发送SQL请求，为结果集定义存储应用和数据类型，查询结果，处理错误，控制传输、提交及关闭连接等。 2.JDBC管理器 即驱动程序管理器，动态地管理和维护数据库查询查询所需要的所有驱动程序对象，实现Java程序与特定驱动程序的连接。 主要任务有：为特定数据库选择驱动程序，处理JDBC初始化调用，为每个驱动程序提供JDBC功能的入口，为JDBC调用执行参数等 3.驱动程序 主要任务：建立与数据库的连接，向数据库发送请求，用户程序请求是执行编译，将错误代码格式化成标准的JDBC错误代码。 编程所使用的数据库系统不同，所需要的驱动程序也有所不同。 4.数据库 按数据结构来存储和管理数据的计算机软件。 常见的数据库比如mysql、Oracle、SqlServer等。 二、JDBC编程的步骤 一次完整的JDBC实现过程分为以下几步： 1、导入包 在程序首部将相关的包导入程序 import java.sql.*; 2、加载驱动程序 使用Class.forName()方法来加载相应的驱动程序。不同数据库所需要加载的驱动程序也不同： // 加载mysql的驱动程序 Class.forName("com.mysql.jdbc.Driver"); //加载oracle的驱动程序 Class.forName("oracle.jdbc.driver.oracleDriver"); 3、设置JDBC的连接地址信息 指定JDBC要连接的地址、端口、数据库、用户名、密码等信息 String username = "root"; String password = "root"; String url = "jdbc:mysql://localhost:3306/test"; // 如果要往表中插入中文，还需要设置编码为utf-8 String url = "jdbc:mysql://localhost:3306/test?seUnicode=true&characterEncoding=utf8"; 其中，"jdbc:mysql"是连接协议，“localhost”是连接地址，“3306”是mysql的连接端口（mysql的默认连接端口是3306），“test”是要连接操作的数据库。 4、创建数据库连接 DriverManager 类中的getConnection() 方法用上一步设置好的url作为参数来创建一个连接对象，并返回这个连接对象给Connection的实例。 //url是上一步创建的连接地址 Connection conn = DriverManager.getConnection(url,username,password); 5、使用SQL语句操作数据库 JDBC中执行SQL语句可以使用Statement接口以及其子接口PreparedStatement接口，下面分别使用不同接口来举例简单说明其用法： 5.1.Statement接口方法创建表： /** * 例子：Statement接口执行创建表，并且插入一组数据 */ // 在当前数据库下创建一个学生表，表中包含主键字段id、姓名name、以及更新时间updatetime String sql1 = "create table student(id int NOT NULL AUTO_INCREMENT primary key,name char(10),updateTime Datetime)"; // 向创建的stu…

【踩坑实录】win10下在控制台中无法使用 mysql 命令：mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件
type: item
date: 2021-02-03T02:39:00+00:00
description: 环境说明： 系统：win10专业版 mysql 5.7 问题 win10 在使用 mysql 命令登录数据库时，出现报错信息： 解决办法 系统中如果正常安装了 MySQL 的话，没有添加 MySQL 的环境变量的话，在 MySQL 安装目录 bin 文件夹以外的路径下执行 mysql 命令的时候就会报这个错误。解决办法就是添加环境变量： 右键 “开始菜单” -> “系统” -> “高级系统设置” -> “环境变量”，向 Path 中添加环境变量，值为 MySQL 安装目录下的 bin 文件夹： D:\Program\Environment\MySQL\MySQL Server 5.7\bin 配置完之后再使用 mysql 命令时就不报错了