MySQL学习笔记
1、数据库服务器
数据库服务器:运行数据库管理软件的计算机
2、数据库管理软件
MySQL、Oracle、db2、sqlserver
3、库
库:文件夹
4、表
表:文件
5、记录
记录:事物一系列典型的特征:zhangsan,male,18,Shanxi
6、数据
数据:描述事物特征的符号;
MySQL各种增删改查
- 各种增删改查语句
- 分组统计、跨表查询
- 存储过程、视图、触发器的使用
- 事务操作
设计合理的表结构
- 如何构建合理的、可扩展的表结构
- 真实项目表结构设计实战
数据库的性能优化与安全
- 如何加快表的查询速度
- 如何确保数据安全不丢失
- 数据库集群 & 读写分离
- 访问权限
MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于 oracle 旗下公司。MySQL是最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
-
mysql是一个基于socket编写的C/S架构的软件
客户端软件
mysql自带:如mysql命令,mysqldump命令等;
python模块:如pymysql
-
数据库管理软件分类
分两大类:
关系型:如sqllite,db2,oracle,access,SQL server,MySQL,注意:SQL语句通用;
非关系型:MongoDB,redis,memcache
可以简单的理解为:
关系型数据库需要有表结构
非关系型数据库是key-value存储的,没有表结构
-
MySQL安装
-
Windows安装
解压压缩包,即安装完成,将bin目录添加到系统变量环境即可;
mysqld启动套接字服务端,mysql启动套接字客户端;
**注意:**关闭现在已启动mysql服务:tasklist |findstr mysql
taskkill /F /PID [进程ID]
以管理员运行CMD:
mysqld --install 添加系统服务
mysqld --remove 解除系统服务
查看系统服务CMD命令:service
-
Linux安装
- centos7:yum -y install mariadb-server mariadb
- centos6:yum -y install mysql-server mysql
- systemctl start mariadb 启动mysql服务
- systemctl status mariadb mysql服务状态
-
mac系统
-
MySQL官网下载dmg安装;
-
系统偏好设置---->mysql---->启动mysql服务
-
vim /etc/profile
PATH=/usr/local/mysql/bin:$PATH
export PATH
立即生效:source /etc/profile
-
-
-
select user(); 当前登录账号,默认为ODBC@localhost
mysql -uroot -p 没有密码可直接登录
-
MySQL中root用户密码的更改:
-
mysqladmin -uroot -p[“如果有原密码”] password “新的密码”
-
跳过账号密码表:
-
查看mysql版本:mysql --version
mysql Ver 14.14 Distrib 5.7.24, for Win64 (x86_64)
-
重启mysql服务:net stop MySQL57 (net start MySQL57)
-
mysqld --skip-grant-tables 跳过认证表
-
如果您有MySQL 5.7.6及更高版本或MariaDB 10.1.20及更高版本,请运行以下命令:
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘MY_NEW_PASSWORD’;
FLUSH PRIVILEGES;如果您有MySQL 5.7.5及更早版本或MariaDB 10.1.20及更早版本,请运行以下命令:
SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘MY_NEW_PASSWORD’);
FLUSH PRIVILEGES;如果ALTER USER语句不适用于您,请尝试直接修改用户表:
UPDATE mysql.user SET authentication_string = PASSWORD(‘MY_NEW_PASSWORD’)
WHERE User = ‘root’ AND Host = ‘localhost’;
FLUSH PRIVILEGES;在这两种情况下,如果一切顺利,您应该看到以下输出:
Query OK, 0 rows affected (0.00 sec)
-
update mysql.user set password=password(“新密码”) where user=“root” and host=“localhost”;
设置新的root密码
flush privileges;
-
重启mysql服务
-
-
mysql 连接指定IP与端口:
mysql -uroot -p密码 -h 127.0.0.1 -P 3306
-
-
统一字符编码:
-
windows:
my.ini文件
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
-
linux:
vim /etc/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
重启mysql服务:systemctl restart mariadb
-
mac
vim /etc/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
重启服务:系统偏好设置---->stop mysql server
-
-
初识SQL语句
-
操作文件夹(库)
-
增
create database db1 charset utf8;
-
查
show create database db1;
show databases;
-
改
alter database db1 charset gbk;
-
删
drop database db1;
-
-
操作文件(表)
切换文件夹:use db1;
查看当前所在文件夹:select database();
-
增
create table t1(id int,name char);
-
查
show create table t1;
show tables;
desc t1;
-
改
alter table t1 modify name char(6);
alter table t1 change name NAME char(7);
-
删
drop table t1;
-
-
操作文件内容(记录)
-
增
insert t1(id,name) values(1, ‘Alex1’),(2,‘Alex2’),(3,‘Alex3’);
-
查
select id,name from db1.t1;
select * from db1.t1;
-
改
update db1.t1 set name=‘Halo’;
update db1.t1 set name=‘ALEX’ where id=2;
-
删
delete from t1;
delete from t1 where id=2;
-
-
-
SQL语句分类
- DDL语句:数据库定义语言:数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
- DML语句:数据库操纵语言:插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
- DCL语句:数据库控制语言:例如控制用户的访问权限GRANT、REVOKE
-
系统数据库
information_schema:虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等;
performance_schema:MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象;
mysql:授权库,主要存储系统用户的权限信息;
test:MySQL数据库系统自动创建的测试数据库
-
创建数据库
-
语法(help create database):
CREATE DATABASE 数据库名 charset utf8;
-
数据库命名规则:
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
-
-
存储引擎
-
什么是存储引擎
存储引擎就是表的类型
-
查看MySQL支持的存储引擎
show engines;
-
指定表类型/存储引擎
create table t1(id int)engine=innodb;
create table t2(id int)engine=memory;
create table t3(id int)engine=blackhole;
create table t4(id int)engine=myisam;
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);
-
-
表介绍
表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段。
-
语法
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
#注意:
- 在同一张表中,字段名是不能相同
- 宽度和约束条件可选
- 字段名和类型是必须的
-
查看表
desc t4;
show create table t4\G;
-
修改表结构
-
修改表名
ALTER TABLE 表名 RENAME 新表名;
-
增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性的约束条件…];
ADD 字段名 数据类型 [完整性的约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
-
删除字段
ALTER TABLE 表名
DROP 字段名;
-
修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
-
复制表
表结构和数据:
create table t1 select host,user from mysql.user;
只要表结构:
create table t2 select host,user from mysql.user where 1>5;
create table t3 like mysql.user;
-
删除表
DROP TABLE 表名;
-
-
来源:CSDN
作者:学无止境,好好学习,天天向上!
链接:https://blog.csdn.net/qq_42269354/article/details/98118278