MySQL
单机程序(自己DB)
单机程序(共用DB)
MySQL:用于管理文件的一个软件
-服务端软件
-socket服务端
-本地文件操作
-解析指令【SQL语句】
-客户端软件(各种各样)
-socket客户端
-发送指令
-解析指令【SQL语句】
-DBMS:数据管理系统
技能:
- 安装服务端和客户端
- 连接
- 学习SQL语句规则;指示服务端做任意操作
其他类型软件:
关系型数据库:sqllite,db2,oracle,access,MySQL,sqlserver
非关系型数据库:MongoDB,redis
windows:可执行文件
压缩包
下载
http://dev.mysql.com/downloads/mysql/
进入目录bin
C:Userszh>cd D:Pythonmysqlmysql-8.0.15-winx64in
初始化:D:Pythonmysqlmysql-8.0.15-winx64in>mysqld --initialize-insecure
启动MySQL服务: D:Pythonmysqlmysql-8.0.15-winx64in>mysqld
启动客户端:D:>D:Pythonmysqlmysql-8.0.15-winx64inmysql -u root -p
用户名是root 密码空
添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
D:Pythonmysqlmysql-8.0.15-winx64in;
%SystemRoot%system32;D:Tools
map-7.40-win32
map-7.40;%SystemRoot%;%SystemRoot%system32wbem;D:PythonpythonScripts;D:Pythonmysqlmysql-8.0.15-winx64in;
windows服务
windows启动mysql自制服务
C:Userszh>"D:Pythonmysqlmysql-8.0.15-winx64inmysqld" --install
C:Userszh>"D:Pythonmysqlmysql-8.0.15-winx64inmysqld" --remove
Service successfully installed.
D:>net start MySQL
D:>net stop MySQL
请求的服务已经启动。
# 文件夹【数据库】
# 文件【表】
# 数据行【行】
# 数据行
# 数据行
默认用户:root
mysql> use mysql;
Database changed
mysql>
mysql> show tables;
mysql> select user from user;
+------------------+
| user |
+------------------+
| mysql.infoschema |
| mysql.session |
| mysql.sys |
| root |
+------------------+
创建用户:
mysql> create user 'tim'@'192.168.1.%' identified by '123123';
mysql> create user 'tim'@'192.168.%' identified by '123123';
mysql> create user 'tim'@'%' identified by '123123';
授权用户:grant 权限
mysql>grant select,insert,update on db1.t1 to 'tim'@'%';
mysql>grant all privileges on db1.t1 to 'tim'@'%';
mysql> grant all privileges on db1.* to 'tim'@'%';
C:Userszh>mysql -u tim -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| db1 |
| information_schema |
+--------------------+
创建用户
create user '用户名'@'IP地址' identified by '密码';
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
修改密码
set password for '用户名'@'IP地址' = Password('新密码')
PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)
5、授权管理
show grants for '用户'@'IP地址' -- 查看权限
grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权
revoke 权限 on 数据库.表 from '用户'@'IP地址' -- 取消权限
操作文件夹
create database db2;
create database db2 default charset utf8; #推荐使用*******
drop database db2;
操作文件
create table t1(id int,name char(10));
create table t1(id int,name char(10)) default charset=utf8;
create table t2(id int,name char(10))engine=innodb default charset=utf8; #推荐使用
innodb 支持事务,原子性操作
create table t1(
列名 类型 null,
列名 类型 not null,
列名 类型 not null auto_increment primary key, #自增
auto_increment #表示自增
primary key #表示约束(不能重复且不能为空),加速查找
not null 是否为空
mysql> create table t3(id int auto_increment primary key,name char(10))engine=innodb default charset=utf8;
mysql> insert into t3(name) values('root');
mysql> insert into t3(name) values('pipi');
mysql> insert into t3(name) values('bibi');
mysql> select * from t3;
+----+------+
| id | name |
+----+------+
| 1 | root |
| 2 | pipi |
| 3 | bibi |
+----+------+
id int,
name char(10)
)engine=innodb default charset=utf8; #推荐使用*******
mysql> insert into t2(name) values('tt');
mysql> select * from t2;
+------+------+
| id | name |
+------+------+
| 1 | tim |
| NULL | tt |
create table t1(
id int not null auto_increment primary key, #自增
name char(10)
)engine=innodb default charset=utf8; #推荐使用*******
清空表
mysql> delete from t3; #会在自增
mysql>truncate table t3; #不会在自增
删除表
mysql> drop tables t3;
操作文件中内容:
查看数据:
mysql> select * from t1;
插入数据:
mysql> insert into t1(id,name) values(1,'tim');
Query OK, 1 row affected (0.09 sec)
mysql> insert into t1(id,name) values(1,'pim');
Query OK, 1 row affected (0.13 sec)
mysql> select * from t1;
+------+------+
| id | name |
+------+------+
| 1 | tim |
| 1 | pim |
+------+------+
数据类型:
char
数字:
tinyint
int
bigint
floot
0.00000100000123000123001230123
double
0.00000000000000000000100000123000123001230123
0.00000100000123000000000000000
decimal 精准 0.1 #推荐使用
字符串:
char(10) 速度快
root 占4位没有占满就会填充
vchar(10) 只占4位 节省空间
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;
查看数据:
mysql> select * from t1;
插入数据:
mysql> insert into t1(id,name) values(1,'tim');
删除:
delete from t1 where id<6;
修改:
update t1 set age=18
update t1 set age=18 where age=17
#外键:
create table userinfo(
uid int auto_increment primary key,
name varchar(32),
department_id int
constraint fk_user_depar foreign key(department_id) references department(id), #外键约束
constraint fk_xx_depar foreign key(xx_id) references xx(id) #多个外键约束,多个外键最后一个不加逗号
)engine=innodb default charset=utf8;
create table department(
id int auto_increment primary key,
title char(15)
)engine=innodb default charset=utf8;