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

文章资讯 2020-08-02 23:37:01

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

表记录与java类的对应关系:
Java 数据库
类 表
定义的成员变量 字段(列)
对象 记录(行)

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

也可以在DOS窗?,通过命令完成MySQL服务的启动和停?(必须以管理员身份运?cmd命令窗?或C:WindowsSystem32cmd.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: 'xB3xACxC8xCB' 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