
C_数据库阶段
少年西西
这个作者很懒,什么都没留下…
展开
-
打开Navicat for MySql 连接数据库报Can‘t connect to MySQL server on ‘localhost‘ 10038错误
这里建议优先:使用mysqld --console 启动 查看启动的报错信息,再根据报错信息查找解决方法报错如下:在打开Navicat for MySql时报:Can’t connect to mysql server on ‘localhost’ (10038)错误,遇到这种错误,很大程度上忘记开Mysql的服务,这样我们将服务开启就可以。如果开启了还错,那么考虑防火墙的阻止解决方式:点击启动,最好将其设置为自启动发现无法启动并报错:本地计算机上的mysql服务启动停止后,某些服务在未原创 2021-01-29 12:06:50 · 17681 阅读 · 7 评论 -
登录mysql报错mysql: [Warning] Using a password on the command line interface can be insecure.
登录mysql报错:mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)解决方法:其它解决方式参考:https://piaoyun.cc/944.htmlhttps://blog.youkuaiyun.com/zxssoft/artic原创 2021-01-09 23:10:47 · 29263 阅读 · 4 评论 -
IDEA连接mysql又报错设置时区!Server returns invalid timezone.
IDEA连接mysql又报错!Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezone’ prope解决:https://blog.youkuaiyun.com/liuqiker/article/details/102455077转载 2021-01-01 10:09:52 · 133 阅读 · 1 评论 -
jdbc中的行级锁(悲观锁)和乐观锁
1.行级锁(悲观锁)select ename, job, sal from emp where job = ‘Manager’ for update;在后面加了for update就产生了行级锁作用:将查询结果集在表中的对应的记录,开始锁住,在当前事务结束前,别的事务根本修改不了锁住的数据。2.乐观锁乐观锁会在数据后面添加一个隐藏的版本号,假设为version。只要事务读取到的版本号没有改变,事务就能对数据进行修改参考:https://blog.youkuaiyun.com/pipizhen_/art.转载 2020-12-20 21:37:13 · 362 阅读 · 0 评论 -
jdbc中考虑事务的通用增删改查
1.考虑到事务以后,实现的通用的增删改操作 // 通用的增删改操作---version 2.0 (考虑上事务) public int update(Connection conn,String sql, Object... args) {// sql中占位符的个数与可变形参的长度相同! PreparedStatement ps = null; try { // 1.预编译sql语句,返回PreparedStatement的实例原创 2020-12-20 17:50:13 · 167 阅读 · 0 评论 -
jdbc中PreparedStatment实现高效的批量插入
方式一:使用Statement实现 Connection conn = DBCUtils.getConnection(); Statement st = conn.createStatement(); for(int i = 1;i <= 20000;i++){ String sql = "insert into goods(name)values('name_" + i + "')"; st.execute(sql);}方式二:使用PreparedStatement/*原创 2020-12-20 16:41:00 · 518 阅读 · 0 评论 -
jdbc中PreparedStatment通用增删改查
1.DBUtilpackage loey.DBUtil;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.sql.*;import java.util.Properties;/** * JDBC工具类,简化JDBC编程 */public class DBUtil { /** * 工具类中的构造方法是私有的 * 因为工具类中的方法原创 2020-12-20 16:29:05 · 185 阅读 · 0 评论 -
jdbc中DBUtils提供的jar包(QueryRunner)实现CRUD操作
导入jar包:使用现成的jar中的QueryRunner测试增、删、改的操作://测试插入@Testpublic void testInsert() {Connection conn = null;try {QueryRunner runner = new QueryRunner();conn = JDBCUtils.getConnection3();String sql = “insert into customers(name,email,birth)values(?,?,?)”;i原创 2020-12-20 20:48:20 · 2176 阅读 · 2 评论 -
jdbc中的数据库连接池
1.传统连接的问题:2.如何解决传统开发中的数据库连接问题:使用数据库连接池3.使用数据库连接池的好处:或自己组织语言:1.提高程序的响应速度(减少了创建连接相应的时间)2.降低资源的消耗(可以重复使用已经提供好的连接)3.便于连接的管理4.实现的方式:...原创 2020-12-19 23:56:54 · 150 阅读 · 1 评论 -
jdbc中首次了解DAO及其子类
/*DAO: data(base) access object封装了针对于数据表的通用的操作*/public abstract class BaseDAO {private Class clazz = null;// public BaseDAO(){// // }{ //获取当前BaseDAO的子类继承的父类中的泛型 Type genericSuperclass = this.getClass().getGenericSuperclass(); Parameteri原创 2020-12-19 23:56:26 · 163 阅读 · 1 评论 -
JDBC中数据库的事务
1.事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 > 一组逻辑操作单元:一个或多个DML操作。2.事务处理的原则:保证所事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。说明:1.数据一旦提交,就不可回滚*2.哪些操作会导致数据的自动提交? >DD原创 2020-12-19 23:55:44 · 142 阅读 · 1 评论 -
jdbc中PreparedStatement替换Statement实现CRUD与Blob类型的操作
1.PreparedStatement的理解:① PreparedStatement 是Statement的子接口② An object that represents a precompiled SQL statement.③ 可以解决Statement的sql注入问题,拼串问题package loey.java1;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatemen原创 2020-12-19 23:54:39 · 598 阅读 · 1 评论 -
jdbc中Statement接口实现CRUD操作(了解)
package loey.java1;import java.sql.*;import java.util.HashMap;import java.util.Map;import java.util.Scanner;/**实现功能:1、需求 模拟用户登录功能的实现2、业务描述 程序运行的时候,提供一个输入的入口,可以让用户输入用户名和密码 用户输入用户名和密码之后,提交信息,java程序收集用户信息 java程序连接数据库验证用户名和密码是否效原创 2020-12-19 23:53:17 · 214 阅读 · 1 评论 -
jdbc执行DQL(select)编程及遍历举例
遍历结果集:【总结】两种思想:面向接口编程的思想ORM编程思想:(object relational mapping)一个数据表对应一个java类表中的一条记录对应java类的一个对象表中的一个字段对应java类的一个属性两种技术:1.使用结果集的元数据:ResultSetMetaDatagetColumnCount():获取列数getColumnLabel():获取列的别名说明:如果sql中没给字段其别名,getColumnLabel()获取的就是列名反射的使用(①创建原创 2020-12-19 23:51:43 · 262 阅读 · 1 评论 -
jdbc执行DML(insert、update、delete)编程举例
aaa原创 2020-12-19 23:50:50 · 533 阅读 · 1 评论 -
jdbc的概念
1、JDBC是什么?Java DataBase Connectivity(Java语言连接数据库)2、JDBC的本质是什么JDBC是SUN公司制定的一套接口(interface)java.sql.*; (这个软件包下有很多接口。)接口都有调用者和实现者。面向接口调用、面向接口写实现类,这都属于面向接口编程。为什么要面向接口编程?解耦合:降低程序的耦合度,提高程序的扩展力。多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)建议:Animal a = new Cat();Ani原创 2020-12-19 23:49:56 · 456 阅读 · 1 评论 -
MySql数据库设计三范式
第一范式任何一张表都应该有主键,并且每一个字段原子性不可再分。第二范式建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。如果一个表是单一主键,那么它就复合第二范式,部分依赖和主键有关系多对多?三张表,关系表两个外键。一个学生有多个老师,一个老师也有多个学生。t_student学生表sno(pk) sname-------------------1 张三2 李四3 王五t_teacher 讲师表tno(pk) tname------原创 2020-12-18 16:33:03 · 227 阅读 · 1 评论 -
MySql的视图和DBA的命令
一、MySql视图1、什么是视图?视图是一种根据查询(也就是SELECT表达式定义的数据库对象,用于获取想要看到和使用的局部数据。视图时也被成为“虚拟表”。视图可以被用来从常规表(称为“基表”或其他视图中查询数据。相对于从基表中直接获取数据,视图以下好处: 访问数据变得简单 可被用来对不同用户显示不同的表的内容用来协助适配表的结构以适应前端现的应用程序视图作用:提高检索效率隐藏表的实现细节【面向视图检索】2、怎么创建视图?怎么删除视图?创建:creat原创 2020-12-18 16:21:28 · 276 阅读 · 1 评论 -
MySql中的索引
1、什么是索引?有什么用?索引就相当于一本书的目录,通过目录可以快速的找到对应的资源。在数据库方面,查询一张表的时候有两种检索方式:第一种方式:全表扫描第二种方式:根据索引检索(效率很高)索引为什么可以提高检索效率呢?其实最根本的原理是缩小了扫描的范围。索引虽然可以提高检索效率,但是不能随意的添加索引,因为索引也是数据库当中的对象,也需要数据库不断的维护。是有维护成本的。比如,表中的数据经常被修改这样就不适合添加索引,因为数据一旦修改,索引需要重新排序,进行维护。添加索引是给某一个字段,原创 2020-12-18 16:14:16 · 124 阅读 · 1 评论 -
MySql的事务(Transaction)
1、概述一个事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的,一个事务是一个完整的业务逻辑单元,不可再分。比如:银行账户转账,从A账户向B账户转账10000.需要执行两条update语句:update t_act set balance = balance - 10000 where actno = 'act-001';update t_act set balance = balance + 10000 where actno = 'act-002';以上原创 2020-12-18 16:02:50 · 383 阅读 · 3 评论 -
MySql的存储引擎
1、完整的建表语句CREATE TABLE `t_x` ( `id` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;注意:在MySQL当中,凡是标识符是可以使用飘号括起来的。最好别用,不通用。建表的时候可以指定存储引擎,也可以指定字符集。mysql默认使用的存储引擎是InnoDB方式。默认采用的字符集是UTF8在创建表时,可使用ENGINE项为CREATE TABLE语句显式指定存储引擎。CREATE TABLE T原创 2020-12-18 15:48:30 · 112 阅读 · 1 评论 -
MySql的约束
1、什么是约束?常见的约束有哪些呢?在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。2、常见的约束有哪些呢?非空约束(not null):约束的字段不能为NULL唯一约束(unique):约束的字段不能重复主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)外键约束(foreign key):...(简称FK)检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysq原创 2020-12-18 15:35:02 · 374 阅读 · 0 评论 -
数据定义语言(DDL):创建表create、修改表alter、删除表drop
一、create1、创建表建表语句的语法格式:create table 表名(字段名1 数据类型,字段名2 数据类型,字段名3 数据类型,…);2、关于MySQL当中字段的数据类型?以下只说常见的int 整数型(java中的int)bigint 长整型(java中的long)float 浮点型(java中的float double)char 定长字符串(String)varchar 可变长字符串(StringBuffer/StringBuilder)d原创 2020-12-18 10:09:24 · 1537 阅读 · 0 评论 -
数据操作语言(DML)二:常见函数
一、概述功能:类似于java中的方法好处:提高重用性和隐藏实现细节调用:select 函数名(实参列表);二、单行函数1、字符函数concat: 连接substr: 截取子串upper: 变大写lower: 变小写replace:替换length:获取字节长度trim:去前后空格lpad:左填充rpad: 右填充instr: 获取子串第一次出现的索引2、数学函数ceil: 向上取整round:四舍五入mod:取模floor:向下取整truncate:截断rand:原创 2020-12-18 10:09:07 · 167 阅读 · 0 评论 -
数据操作语言(DML)一:插入数据insert、修改数据update、删除delete
一、插入数据(insert)1、insert语句插入数据语法格式:insert into 表名(字段名1,字段名2,字段名3,…) values(值1,值2,值3,…)举例:insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosan1ban');//ERROR 1136 (21S01): Column count doesn't match value count at row 1要求:字段原创 2020-12-17 23:27:57 · 2534 阅读 · 0 评论 -
MySql中的数据查询语言(DQL)五:union和limit
1、union (可以将查询结果集相加)合并结果集的时候,需要查询字段对应个数相同。在Oracle中更严格,不但要求个数相同,而且还要求类型对应相同。举例:案例:找出工作岗位是SALESMAN和MANAGER的员工?第一种:orselect ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';第二种:inselect ename,job from emp where job in('MANAGER','SALESMAN')原创 2020-12-17 23:18:41 · 168 阅读 · 0 评论 -
MySql中的数据查询语言(DQL)四:子查询
1、什么是子查询?子查询都可以出现在哪里?子查询就是嵌套的select语句,可以理解为子查询是一张表,select语句当中嵌套select语句,被嵌套的select语句是子查询。子查询可以出现在哪里? select ..(select). from ..(select). where ..(select).2、where子句中使用子查询举例1:找出高于平均薪资的员工信息。第一步:找出平均薪资select avg(sal) from emp;第二步:原创 2020-12-17 23:11:17 · 447 阅读 · 1 评论 -
MySql中的数据查询语言(DQL)三:连接查询
一、概念1、什么是连接查询?连接查询:也可以叫跨表查询,需要关联多个表进行查询在实际开发中,大部分的情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终的结果。在实际开发中,一般一个业务都会对应多张表,比如:学生和班级,起码两张表。学生和班级信息存储到一张表中,结果就像上面一样,数据会存在大量的重复,导致数据的冗余。2、连接查询的分类?根据语法出现的年代来划分的话,包括:SQL92(一些老的DBA可能还在使用这种语法。DBA:DataBase Administrator,数据库管理原创 2020-12-17 22:50:49 · 336 阅读 · 0 评论 -
MySql中的数据查询语言(DQL)二:分组函数/聚合函数/多行处理函数和分组查询
一、分组函数/聚合函数/多行处理函数1、概念分组函数一共5个。分组函数自动忽略NULL分组函数还有另一个名字:多行处理函数。多行处理函数的特点: 输入多行,最终输出的结果是1行记住:所有的分组函数都是对“某一组”数据进行操作的。2、说明注意:分组函数自动忽略空值,不需要手动的加where条件排除空值。select count(*) from emp where xxx;符合条件的所记录总数。select count(comm) from emp; comm这个字段中不为空的元素总原创 2020-12-17 22:39:08 · 274 阅读 · 0 评论 -
MySql中的数据查询语言(DQL)一:简单查询、条件查询、排序数据
一、简单查询语法格式: Select语句后面跟的是字段名称,select是关键字,select和字段名称之间采用空格隔开,from表示将要查询的表,它和字段之间采用空格隔开select 字段名1,字段名2,字段名3,… from 表名;提示:1、任何一条sql语句以“;”结尾。2、sql语句不区分大小写。 举例:1、查询员工的姓名和月薪mysql> select ename,sal from emp;±-------±--------+| ename | sal |±-原创 2020-12-17 10:13:34 · 567 阅读 · 1 评论 -
MySql的常用命令
1、查看MySQL版本未登录前: MySQL程序项具以下两种通用形式:长项,由单词之前加两个减号组成短项,由单个字母之前加一个减号组成C:\Users\It.me>mysql --versionmysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)C:\Users\It.me>mysql -Vmysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)登录MySQL后:mysql> selec原创 2020-12-17 09:44:58 · 147 阅读 · 0 评论 -
MySql数据库概述及数据准备
1、sql、DB、DBMS分别是什么,他们之间的关系?DB: DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)DBMS: DataBase Management System(数据库管理系统,常见的有:MySQL Oracle DB2 Sybase SqlServer…)SQL:结构化查询语言,是一门标准通用的语言。标准的sql适合于所有的数据库产品。SQL属于高级语言。只要能看懂英语单词的,写出来的sql语句,可以读懂什么意思。SQL语句在执行的时候,实际上内部也会原创 2020-12-17 09:35:32 · 241 阅读 · 0 评论