数据库中以表为基本单位,进⾏存储数据。那么使⽤我们熟悉的java类 与 数据表对⽐,就会发现以下对应关系。
表记录与java类的对应关系:
Java | 数据库 |
类 | 表 |
定义的成员变量 | 字段(列) |
对象 | 记录(行) |
参考MySQL安装图解.pdf
安装后,MySQL会以windows服务的⽅式为我们提供数据存储功能。开启和关闭服务的操作:右键点击我的电脑→管理→服务→可以找到MySQL服务开启或停⽌。
也可以在DOS窗⼝,通过命令完成MySQL服务的启动和停⽌(必须以管理员身份运⾏cmd命令窗⼝或C:\Windows\System32\cmd.exe 右键,管理员身份运行)
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⽂件。
链接:https://pan.baidu.com/s/1cLn7x9FOpzB9rauqhWHXBw
提取码:72y6
安装:
提供的navicat软件为安装版,需要安装后使⽤
使⽤:
输⼊⽤户名、密码,点击连接按钮,进⾏访问MySQL数据库进⾏操作
下图为 连接mysql以后, 选择了名为"mysql"的数据库, 展示了这个数据库中所有的表。
数据库是不认识JAVA语⾔的,但是我们同样要与数据库交互,这时需要使⽤到数据库认识的语⾔【SQL语句】,它是数据库的代码。结构化查询语⾔(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范。不同的数据库⽣产⼚商都⽀持SQL语句,但都有特有内容。
SELECT * FROM USER;
/*
多⾏注释
*/
-- 单⾏注释
# 单⾏注释
SELECT * FROM user;
SQL中的我们常用使用的数据类型如下:
类型名称 | 说明 |
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之间的整数 |
/*创建数据库*/
-- ⽅式⼀: 使⽤指定的字符编码表,创建数据库. 格式: 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;
/*
创建表, 格式:
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; -- 修改表的字符编码
/*
插⼊表记录
⽅式⼀, 对指定的字段插⼊值, 格式: 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);
注意:
1. 值与字段必须对应, 个数相同, 类型相同
2. 值的数据⼤⼩必须在字段的指定⻓度范围内
3. 除了整数\⼩数类型外, 其他字段类型的值必须使⽤引号引起来 (建议单引号)
4. 如果要插⼊空值, 可以不写字段, 或者插⼊null
-- 更新表记录, 格式: update 表名 set 字段1=值, 字段2=值... where 条件;
UPDATE student SET NAME='lili', age=21 WHERE id=1;
UPDATE student SET age=25 WHERE age=27;
注意:
1. 列名的类型与修改的值要⼀致
2. 修改值时不能超过字段的⻓度范围
3. 除了整数\⼩数类型外, 其他字段类型的值必须使⽤引号扩起来
-- 删除表记录, 格式: delete from 表名 where 条件;
DELETE FROM student WHERE id=1;
DELETE FROM student WHERE age IS NULL;
我们在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
1. 查看MySQL内部设置的编码
show variables like 'character%';查看所有mysql的编码
2. 需要修改client、connection、results的编码⼀致(改为GBK编码)
解决⽅案1:在cmd命令窗⼝中输⼊命令,此操作当前窗⼝有效,为临时⽅案。
set names gbk;
解决⽅案2:安装⽬录下修改my.ini⽂件,重启服务所有地⽅⽣效。
1. 停⽌mysql服务器运⾏输⼊services.msc 停⽌mysql服务
2. 在cmd下,输⼊mysqld --console --skip-grant-tables 启动服务器,出现以下⻚⾯,不要关闭该窗⼝
3. 新打开cmd,输⼊mysql -uroot 不需要密码, 然后输⼊以下SQL语句, 完成密码的修改
use mysql;
update user set password=password('root') WHERE user='root';
或者(password 新版本没有这个关键字段,换成了authentication):
use mysql;
update user set authentication_string='' where user='root';
4.关闭两个cmd
Mysql:链接:https://pan.baidu.com/s/1vqNkEvVw6wjmHntOVA4ekw 提取码:pamf
navicat:链接:https://pan.baidu.com/s/17Fv7Ee0JXCYFjw455h9WqQ 提取码:peed
SQLyog:链接:https://pan.baidu.com/s/10bRCKUp_JUC-HqUQXTDzDg 提取码:gqrx