MySQL

Posted mr-feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL相关的知识,希望对你有一定的参考价值。

mysql

单机程序(自己DB)

单机程序(公用DB)

MySQL:是用于管理文件的一个软件
- 服务端软件
- socket服务端
- 本地文件操作
- 解析指令【SQL语句】
- 客户端软件(各种各样)
- socket客户端
- 发送指令
- 解析指令【SQL语句】

PS:
- DBMS数据库管理系统
- SQL语句

技能:
- 安装 服务端和客户端
- 连接
- 学习SQL语句规则;指示服务端做任意操作

其他类似软件:
关系型数据库:sqllite,db2,oracle,access,sql server MySQL
非关系型数据库:MongoDB,redis

1. MySQL安装

Windows:
可执行文件
点点点
压缩包
放置任意目录
初始化
服务端:E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --initialize-insecure
# 用户名 root 密码:空
启动服务端:
E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysqld

客户端连接:
E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysql -u root -p

发送指令:
show databases;
create database db1;

环境变量的配置:
E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin
mysqld

windows服务:
E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --install
net start MySQL

E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --remove

net start MySQL
net stop MySQL

2. 关于连接

文件夹【数据库】
文件【表】
数据行【行】
数据行
数据行

连接:

默认:用户root


show databases;

use 数据库名称;

show tables;

select * from 表名;

select name,age,id from 表名;

mysql数据库user表
use mysql;
select user,host from user;

创建用户:
create user ‘alex‘@‘192.168.1.1‘ identified by ‘123123‘;
create user ‘alex‘@‘192.168.1.%‘ identified by ‘123123‘;
create user ‘alex‘@‘%‘ identified by ‘123123‘;        # %代表所有IP地址
授权:
权限 人

grant select,insert,update on db1.t1 to ‘alex‘@‘%‘;
grant all privileges on db1.t1 to ‘alex‘@‘%‘;

revoke all privileges on db1.t1 from ‘alex‘@‘%‘;    # 删除权限

DBA: 用户名密码


3. 学习SQL语句规则

操作文件夹
create database db2;
create database db2 default charset utf8; *****    # 默认编码设置为utf8
show databases;
drop database db2;

操作文件
show tables;
create table t1(id int,name char(10)) default charset=utf8;
create table t1(id int,name char(10))engine=innodb default charset=utf8;  # engine=innodb  原子操作,意外断开会回复初始状态
create table t3(id int auto_increment,name char(10))engine=innodb default charset=utf8; *****

create table t1(
列名 类型 null,
列名 类型 not null,
列名 类型 not null auto_increment primary key,  # auto_increment 自增
id int,
name char(10)
)engine=innodb default charset=utf8;
# innodb 支持事务,原子性操作
# myisam myisam

auto_increment 表示:自增
primary key: 表示 约束(不能重复且不能为空); 加速查找
not null: 是否为空
数据类型:

数字:
tinyint
int
bigint

FLOAT
0.00000100000123000123001230123
DOUBLE
0.00000000000000000000100000123000123001230123
0.00000100000123000000000000000
decimal      # 准确,支持自选精度
0.1

字符串:
char(10) 速度快()
root
root
varchar(10) 节省空间
root
PS: 创建数据表定长列往前放

text

上传文件:
文件存硬盘
db存路径
时间类型
DATETIME

enum
set


create table t1(
id int signed not null auto_increment primary key,
num decimal(10,5),
name char(10)
)engine=innodb default charset=utf8;

清空表:
delete from t1;    # 清空后自增继
truncate table t1;  # 清空后主键ID清零
删除表:
drop table t1;

操作文件中内容
插入数据:
insert into t1(id,name) values(1,‘alex‘);
删除:
delete from t1 where id<6
修改:
update t1 set age=18;
update t1 set age=18 where age=17;
查看数据:
select * from t1;

外键:

create table userinfo(
uid int auto_increment primary key,
name varchar(32),
department_id int,
xx_id int,
constraint fk_user_depar foreign key (department_id) references color(id)
)engine=innodb default charset=utf8;

当外键的表两列组成一个主键,括号里可以使两个列名


create table department(
id bigint auto_increment primary key,
title char(15)
)engine=innodb default charset=utf8;
innodb原子操作

 

对于自增:

desc t10;  查看表的属性

show create table t10 \G;  查看创建表的代码属性等

alter table t10 AUTO_INCREMENT = 20;  设置表的下一次自增从20开始

 

MySQL自增步长:

基于会话级别:登陆期间修改的话有效,退出登录后步长失效

基于会话级别:
show session variables like ‘auto_inc%‘; 查看全局变量
set session auto_increment_increment=2; 设置会话步长
# set session auto_increment_offset=10;
基于全局级别:
show global variables like ‘auto_inc%‘; 查看全局变量
set global auto_increment_increment=2; 设置会话步长
# set global auto_increment_offset=10;

 

以上是关于MySQL的主要内容,如果未能解决你的问题,请参考以下文章

MySQLMySQL 一些 使用 案例

MySQL的常用操作更改root密码连接MySQLMySQL常用的命令

MySQLMysql必会语句

MySQLMysql必会语句

MySQLMysql必会语句

mysqlmysql优化