文章目录
第⼀章 数据库介绍
1.1 数据库概述
- 什么是数据库
数据库就是存储数据的仓库,其本质是⼀个⽂件系统,数据按照特定的格式将数据存储起来。⽤户可以对数据库中的数据进⾏增加,修改,删除及查询操作。
集合、⽂件、数据库,三者进⾏存储数据的对⽐:
- 集合:数据存储在内存中;问题是,⼀旦程序执⾏完毕了,数据消失了,数据不能永久性的储存
- ⽂件:数据储存在磁盘中,可以永久性储存;问题是,当⽂件储存数据量达到⼏个G时,⽂件的打开都成⽂件,数据的操作就更成问题了
- 数据库:数据储存的磁盘中,可以永久性储存;当数据量很⼤时,数据操作起来也很流畅;合适数据的频繁的增删改查的操作
1.2 数据库管理系统
数据库管理系统(DataBase Management System,DBMS):指⼀种操作数据库、管理数据库的⼤型软件。
作⽤:⽤于数据库的建⽴、使⽤和维护数据库。
注意:
- ⽤户必须通过数据库管理系统才能访问到数据库中表的数据
- 数据库中的表,是存储数据的基本单位
数据库管理系统的功能:实现了对多个数据库进⾏统⼀管理和控制,以保证数据库的安全性和完整性
- 数据库与数据库管理系统的内部结构
1.3 Java类和数据表的对应关系
数据库中以表为基本单位,进⾏存储数据。那么使⽤我们熟悉的java类 与 数据表对⽐,就会发现以下对应关系。
- 表记录与java类的对应关系
1.4 常⻅数据库
- 常⻅的数据库
MYSQL:开源免费的数据库,⼩型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
Oracle:收费的⼤型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
DB2 :IBM公司的数据库产品,收费的。常应⽤在银⾏系统中.
SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语⾔常使⽤。
SyBase:已经淡出历史舞台。提供了⼀个⾮常专业数据建模的⼯具PowerDesigner。
SQLite:嵌⼊式的⼩型数据库,应⽤在⼿机端。
常⽤数据库:MYSQL
我们学习的是MySQL数据库。为了追求⾼性能,开发中多个Mysql,搭建MySQL⾼可⽤负载均衡集群
第2章 MySql数据库
2.1 MySql安装
- 安装
参考MySQL安装图解.pdf
安装后,MySQL会以windows服务的⽅式为我们提供数据存储功能。开启和关闭服务的操作:右键点击我的电脑→管理→服务→可以找到MySQL服务开启或停⽌。
也可以在DOS窗⼝,通过命令完成MySQL服务的启动和停⽌(必须以管理员身份运⾏cmd命令窗⼝)
2.2 连接Mysql数据库
MySql是一个需要账户名密码进⾏连接的数据库,连接后才能使⽤,它提供了⼀个默认的root账号,使⽤安装时设置的密码即可登录。
-- 格式1,本地连接:cmd> mysql –u⽤户名 –p密码
mysql -uroot –proot
-- 格式2,远程连接:cmd> mysql --host=ip地址 --user=⽤户名 --password=密码
mysql --host=127.0.0.1 --user=root --password=root
默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf⽂件。这⾥不做讲解
2.3 MySQL图形化开发⼯具
- 安装:
提供的navicat软件为安装版,需要安装后使⽤ - 使⽤:
输⼊⽤户名、密码,点击连接按钮,进⾏访问MySQL数据库进⾏操作
下图为 连接mysql以后, 选择了名为"mysql"的数据库, 展示了这个数据库中所有的表。
第3章 SQL语句
3.1 SQL概述
SQL语句介绍
数据库是不认识JAVA语⾔的,但是我们同样要与数据库交互,这时需要使⽤到数据库认识的语⾔【SQL语句】,它是数据库的代码。
结构化查询语⾔(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范。
不同的数据库⽣产⼚商都⽀持SQL语句,但都有特有内容。
SQL语句分类
- SQL分类:
- 数据定义语⾔:简称DDL(Data Definition Language),⽤来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
- 数据控制语⾔:简称DCL(Data Control Language),⽤来定义数据库的访问权限和安全级别,及创建⽤户。
- 数据操作语⾔:简称DML(Data Manipulation Language),⽤来对数据库中表的记录进⾏更新。关键字:insert,delete,update等
- 数据查询语⾔:简称DQL(Data Query Language),⽤来查询数据库中表的记录。关键字:select,from,where等
SQL语句的书写语法
- MySQL数据库的SQL语句不区分⼤⼩写,关键字建议使⽤⼤写,以分号结尾。例如:
select * from user;
- 使⽤/**/、–、#的方式完成注释
SELECT * FROM user; 1
/*
多⾏注释
*/
-- 单⾏注释
# 单⾏注释
SELECT * FROM user;
SQL中数据的常用数据类型
- MySQL中的我们常使用的数据类型如下
类型名称 说明
int 整数类型
double ⼩数类型
decimal(m,d) 指定整数位与⼩数位⻓度的⼩数类型
date ⽇期类型,格式为yyyy-MM-dd,包含年⽉⽇,不包含时分秒
datetime ⽇期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年⽉⽇时分秒
timestamp ⽇期类型,时间戳
varchar(M) 可变长度⽂本类型, M为0~65535之间的整数
char(M) 固定长度⽂本类型, M为0~65535之间的整数
text:字符串类型,比如小说信息;
blob:字节类型,保存文件信息(视频,音频,图片);
3.2 数据库操作: database
创建数据库
/*创建数据库*/
-- ⽅式⼀: 使⽤指定的字符编码表,创建数据库. 格式: create database 数据库名
character set 字符编码;
-- ⽅式⼆: 使⽤默认的字符编码表,创建数据库. 格式: create database 数据库名;
CREATE DATABASE mydb CHARACTER SET utf8; -- ⽅式⼀
CREATE DATABASE mydb2; -- ⽅式⼆
查看数据库
/*查看数据库*/
-- 查看所有的数据库. 格式: show databases;
SHOW DATABASES;
-- 查看指定数据库的字符编码. 格式: show create database 数据库名;
SHOW CREATE DATABASE mydb;
SHOW CREATE DATABASE mydb2;
删除数据库
/*删除数据库*/
-- 删除数据库. 格式: drop database 数据库名;
DROP DATABASE mydb2;
使⽤数据库
/*使⽤数据库*/
-- 查看当前使⽤的数据库. 格式: select database();
SELECT DATABASE();
-- 设置当前使⽤的数据库. 格式: use 数据库名;
USE mydb;
3.3 表操作:table
创建表
/*
创建表, 格式:
create table 表名 (
字段名 数据类型[⻓度] [约束],
字段名 数据类型[⻓度] [约束],
...
);
注:[]中的内容是可选项
*/
-- 创建表student, 字段包括 编号id\ 姓名name\ 年龄age
CREATE TABLE student (
id INT,
NAME VARCHAR(100),
age INT
);
-- 创建表users, 字段包括 编号id\ ⽤户名username \ 密码password
CREATE TABLE users (
id INT,
username VARCHAR(100),
PASSWORD VARCHAR(100)
);
查看表
-- 查看所有表, 格式: show tables
SHOW TABLES;
-- 查看指定表的建表结构, 格式: show create table 表名;
SHOW CREATE TABLE users;
删除表
-- 删除表, 格式: drop table 表名;
DROP TABLE users;
修改表结构格式
/*
对表中的列进⾏修改
1. 添加新的列, 格式: alter table 表名 add 新列名 数据类型(⻓度);
2. 修改列的数据类型(⻓度), 格式: alter table 表名 modify 列名 修改后的数据类型(⻓ 度);
3. 修改列的名称, 格式: alter table 表名 change 列名 新列名 新列名的数据类型(⻓度);
4. 删除指定列, 格式: alter table 表名 drop 列名;
*/
ALTER TABLE student ADD `desc` VARCHAR(100); -- 添加新的列
ALTER TABLE student MODIFY `desc` VARCHAR(50);-- 修改列的数据类型(⻓度)
ALTER TABLE student CHANGE `desc` description VARCHAR(100);-- 修改列的名称
ALTER TABLE student DROP description;-- 删除指定列
/*
对表进⾏修改
1. 修改表的名称, 格式: rename table 表名 to 新表名;
2. 修改表的字符编码, 格式: alter table 表名 character set 字符编码;
*/
RENAME TABLE student TO stu; -- 修改表的名称
ALTER TABLE stu CHARACTER SET gbk; -- 修改表的字符编码
3.4 表中记录操作
插⼊表记录
/*
插⼊表记录
⽅式⼀, 对指定的字段插⼊值, 格式: insert into 表名(字段1, 字段2, ...) values (值
1, 值2, ...);
⽅式⼆, 对所有字段插⼊值, 格式: insert into 表名 values(值1, 值2, ...);
*/
INSERT INTO student(id, NAME, age) VALUES(1, 'tom', 24);
INSERT INTO student(NAME, age) VALUES('lili', 22);
INSERT INTO student(id, NAME, age) VALUES(3, 'jim', NULL);
INSERT INTO student VALUES(4, 'jack', 26);
INSERT INTO student VALUES(5, 'zhangsan', 26),
(6,'lisi',27);
- 注意
- 值与字段必须对应, 个数相同, 类型相同
- 值的数据⼤⼩必须在字段的指定⻓度范围内
- 除了整数\⼩数类型外, 其他字段类型的值必须使⽤引号引起来 (建议单引号)
- 如果要插⼊空值, 可以不写字段, 或者插⼊null
更新表记录
-- 更新表记录, 格式: update 表名 set 字段1=值, 字段2=值... where 条件;
UPDATE student SET NAME='lili', age=21 WHERE id=1;
UPDATE student SET age=25 WHERE age=27;
- 注意
- 列名的类型与修改的值要⼀致
- 修改值时不能超过字段的⻓度范围
- 除了整数\⼩数类型外, 其他字段类型的值必须使⽤引号扩起来
删除表记录
-- 删除表记录, 格式: delete from 表名 where 条件;
DELETE FROM student WHERE id=1;
DELETE FROM student WHERE age IS NULL;
3.5 DOS命令⾏数据乱码解决(了解)
我们在dos命令⾏操作中⽂时,会报错
insert into student(id,name,age) values(99,'超⼈',25);
ERROR 1366 (HY000): Incorrect string value: '\xB3\xAC\xC8\xCB' for column'name'at row 1
错误原因:因为mysql的客户端设置编码是utf8,⽽windows系统的cmd窗⼝编码是gbk
- 查看MySQL内部设置的编码
- 需要修改client、connection、results的编码⼀致(改为GBK编码)
解决⽅案1:在cmd命令窗⼝中输⼊命令,此操作当前窗⼝有效,为临时⽅案。
set names gbk;
解决⽅案2:安装⽬录下修改my.ini⽂件,重启服务所有地⽅⽣效