mysql(版本5.7)(操作数据库 操作表结构 操作表记录)

数据库中以表为基本单位,进⾏存储数据。那么使⽤我们熟悉的java类 与 数据表对⽐,就会发现以下对应关系。

表记录与java类的对应关系:

Java 数据库
定义的成员变量 字段(列)
对象 记录(行)

参考MySQL安装图解.pdf
安装后,MySQL会以windows服务的⽅式为我们提供数据存储功能。开启和关闭服务的操作:右键点击我的电脑→管理→服务→可以找到MySQL服务开启或停⽌。

也可以在DOS窗⼝,通过命令完成MySQL服务的启动和停⽌(必须以管理员身份运⾏cmd命令窗⼝或C:\Windows\System32\cmd.exe 右键,管理员身份运行)

连接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⽂件。

MySQL图形化开发⼯具

链接:https://pan.baidu.com/s/1cLn7x9FOpzB9rauqhWHXBw 
提取码:72y6

安装:
提供的navicat软件为安装版,需要安装后使⽤
使⽤:
输⼊⽤户名、密码,点击连接按钮,进⾏访问MySQL数据库进⾏操作

下图为 连接mysql以后, 选择了名为"mysql"的数据库, 展示了这个数据库中所有的表。

SQL 语句

数据库是不认识JAVA语⾔的,但是我们同样要与数据库交互,这时需要使⽤到数据库认识的语⾔【SQL语句】,它是数据库的代码。结构化查询语⾔(Structured Query Language)简称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;

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之间的整数

数据库操作: 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;

表操作: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; -- 修改表的字符编码

表中记录操作

/*
插⼊表记录
⽅式⼀, 对指定的字段插⼊值, 格式: 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命令⾏数据乱码解决(了解)

我们在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⽂件,重启服务所有地⽅⽣效。

MySQL数据库密码重置(扩展)

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 
 

猜你喜欢

转载自blog.csdn.net/weixin_40959890/article/details/107636261