mysql
中小型的关系型数据库
名词解释
数据库
存储数据的仓库,数据是有组织的进行存储,英文:database,简称db
数据库管理系统
管理数据库的大型软件,database management system,检查dbms
sql
structured query language,简称sql,结构化查询语言
一门操作关系数据库的编程语言
定义操作所有关系数据库的统一标准
关系型数据库
建立在关系模型基础上的数据库,简单说,关系数据库是有多张能互相连接的二维表组成的数据库
- 使用表结构,格式一致,易于维护
- 使用通用的sql语言操作,使用方便,可用于复杂查询
- 数据存储在磁盘中,安全
安装与卸载
https://blog.csdn.net/qq_42611074/article/details/118177678?spm=1001.2014.3001.5502
官网下载
https://dev.mysql.com/downloads/mysql
配置环境变量
下载ZIP压缩包,解压
- 打开 我的电脑->高级系统设置,打开环境变量
- 在path下新建一条数据,根据自己的mysql安装目录来设置,目录地址一直到bin,目的是让系统运行bin目录下的exe文件
- 在解压目录中新建data文件夹和mysql.ini文件
mysql.ini
sh
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=E:\tools\mysql-8.0.25-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\tools\mysql-8.0.25-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=E:\tools\mysql-8.0.25-winx64
# 设置mysql数据库的数据的存放目录
datadir=E:\tools\mysql-8.0.25-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
下载配置
使用管理员权限打开cmd
sh
mysqld install
mysqld install
启动服务
使用管理员权限打开cmd
sh
net start mysql
net start mysql
关闭服务
sh
net stop mysql
net stop mysql
登录
mysql -u 用户名 -p 密码 -h 要连接的mysql服务器的ip地址(默认127.0.0.1)-p 端口号(默认3306)
sh
mysql -uroot -p123456
mysql -uroot -p123456
退出
sh
exit
quit
\q
exit
quit
\q
卸载
sh
net stop mysql
mysqld -remove mysql
net stop mysql
mysqld -remove mysql
删除mysql安装目录的文件与环境变量
清除id列
id列有数据行被删除后会导致id不再连续,可以重新生成id列解决这一问题
sql
alter table tableName drop id;
alter table tableName add id int not null primary key auto_increment first;
alter table tableName drop id;
alter table tableName add id int not null primary key auto_increment first;
sql
sql语句可以单行或多行书写,以分号结尾
mysql数据库的sql语句不区分大小写,关键词建议使用大写
注释,多行注释/* 注释 */,单行注释,-- 注释内容 #注释内容(mysql特有)
sql分类
- ddl,数据定义语言,用来定义数据库对象:数据库,表,列等
- dml,数据操作语言,用来对数据库中表的数据进行增删改
- dql,数据查询语言,用来查询数据库中表的记录
- dcl,数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
DDL语法
查询所有数据库
sql
show databases;
show databases;
创建数据库
sql
create databases;
create databases;
或
sql
create databases if exists 数据库名称;
create databases if exists 数据库名称;
删除数据库
sql
drop database;
drop database;
或
sql
drop database if exists 数据库名称;
drop database if exists 数据库名称;
查看当前使用的数据库
sql
select database();
select database();
使用数据库
sql
use 数据库名称;
use 数据库名称;
操作表
dql
查询语法
select 字段列表
from 表名列表
where 条件列表
group by 分组字段
having 分组后条件
limit 分页限定
基础查询
删除stu表
sql
drop table if exists stu;
drop table if exists stu;
创建stu表
sql
CREATE TABLE stu (
-- 编号
id int,
-- 姓名
name varchar (20),
-- 年龄
age int,
-- 性别
sex varchar (5),
-- 地址
address varchar (100),
-- 数学成绩
math double (5, 2),
-- 英语成绩
english double (5, 2),
-- 入学事件
hire_date date
);
CREATE TABLE stu (
-- 编号
id int,
-- 姓名
name varchar (20),
-- 年龄
age int,
-- 性别
sex varchar (5),
-- 地址
address varchar (100),
-- 数学成绩
math double (5, 2),
-- 英语成绩
english double (5, 2),
-- 入学事件
hire_date date
);
添加数据
drop TABLE
IF EXISTS stu;
CREATE TABLE stu (
-- 编号
id INT,
-- 姓名
name VARCHAR (20),
-- 年龄
age INT,
-- 性别
sex VARCHAR (5),
-- 地址
address VARCHAR (100),
-- 数学成绩
math DOUBLE (5, 2),
-- 英语成绩
english DOUBLE (5, 2),
-- 入学事件
hire_date date
);
INSERT INTO stu(id,name,age,sex,address,math,english,hire_date)
VALUES (
2,
'马云',
55,
'男',
'死吗玩意',
66,
78,
'1995-09-01'
)
drop TABLE
IF EXISTS stu;
CREATE TABLE stu (
-- 编号
id INT,
-- 姓名
name VARCHAR (20),
-- 年龄
age INT,
-- 性别
sex VARCHAR (5),
-- 地址
address VARCHAR (100),
-- 数学成绩
math DOUBLE (5, 2),
-- 英语成绩
english DOUBLE (5, 2),
-- 入学事件
hire_date date
);
INSERT INTO stu(id,name,age,sex,address,math,english,hire_date)
VALUES (
2,
'马云',
55,
'男',
'死吗玩意',
66,
78,
'1995-09-01'
)
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
查sql_mode
sql
SELECT @@global.sql_mode;
SELECT @@global.sql_mode;
查出来的结果就是:only_full_group_by
需要将only_full_group_by给去掉,在Navicat里面执行
sql
set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';