Skip to content
索引

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压缩包,解压

  1. 打开 我的电脑->高级系统设置,打开环境变量
  2. 在path下新建一条数据,根据自己的mysql安装目录来设置,目录地址一直到bin,目的是让系统运行bin目录下的exe文件
  3. 在解压目录中新建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';

Released under the MIT License.