Mysql学习

概念:

按照一定的数据结构来存储和管理数据的仓库

Mysql的客户端工具:

字符界面
mysql
图形界面
MySQL Workbench
第三方工具(Windows)
SQLyog
navicat

各文件的安装位置:

数据库相关文件(datadir目录)
/var/lib/mysql
可执行文件
/usr/bin
服务器-mysqld
/usr/sbin

启动/关闭Mysql服务器:

使用操作系统工具systemctl管理mysql服务
systemctl status mysqld
systemctl start mysqld
systemctl stop mysqld
systemctl restart mysqld

连接至Mysql服务器:

mysql -uroot -p
Enter password:(密码)

忘记root密码后的重置

设置mysql启动参数
[root@jayss bin]# systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”
重启mysqld
[root@jayss etc]# systemctl restart mysqld
登录mysql,不输入用户和密码直接回车
[root@jayss etc]# mysql
修改密码
mysql> flush privileges
mysql> alter user root@localhost identified by ‘Root@1995’;
还原启动参数
[root@jayss ~]# systemctl unset-environment MYSQLD_OPTS=”–skip-grant-tables”

简单信息查询

查看MySQL版本
mysql> select version();
查看当前用户
mysql> select user();
查看当前数据库
mysql> select database();
查看当前连接的状态
mysql> status
查看当前时间
mysql> select now();
查看表结构
mysql> desc t;

执行SQL脚本文件:

[root@jayss ~]# mysql -u root -p jayss < t.sql

库级操作语句:

显示所有的库:show databases;
创建库:create databases db_name;
删除库:drop database db_name;
进入数据库:use db_name;

表级操作语句:

显示所有表:show tables;
创建表:create tble table_name;
显示创建表的信息:show create table table_name;
删除表:drop table table_name;

字段类型

数值类型:
数值类型特性
tinyint用一个字节存放整数(0,255)
smallint两个字节(0,65535)
mediumint三个字节(0,16777215)
int四个字节(0,4294967295)
bigint八个字节
float(m,n)单精度浮点型(四个字节)
double(m,n)双精度浮点型,m总个数,d小数位(八字节)
字符类型:
字符类型特性
char(size)定长字符串(0-255字节)
varchar(size)变长字符串(0-65535字节)
tinyblolb不超过255个字符串的二进制字符串(0-255字节)
tinytext短文本字符串(0-255字节)
bolob二进制形式的长文本数据( 0-65 535字节)
text长文本数据(0-65 535字节)
mediumblob二进制形式的中等长度文本数据(0-16 777 215字节)
mediumtext中等长度文本数据( 0-16 777 215字节)
longbolob二进制形式的极大文本数据(0-4 294 967 295字节)
longext极大文本数据( 0-4 294 967 295字节)
时间日期类型:
时间日期类型特性
date日期,格式:2019-01-27
time时间,格式:12::12:30
datetime时间日期,格式:2019-01-27 12:12:30
timestamp自动存储记录修改的时间
year存放年

约束条件:

约束是一种限制
通过对表中的数据做出限制来确保表中数据的完整性和唯一性

约束类型关键字特点
默认default插入数据时,若无明确为字段赋值则自动赋予默认值
非空not null限制一个字段的值不能为空,insert的时候必须为该字段赋值
唯一unique key限制一个字段的值不重复,该字段的数据不能出现重复的
自增长auto_increment自动编号,和主键组合使用,一个表里面只能有一个自增长
主键primary key通常每张表都需要一个主键来体现唯一性,每张表里面只能有一个主键
外键foreign key保持数据的一致性,我有的你一定有, 你没有的, 我绝对没有

查询

select语基本结构:

select … 指定要查询的列名
from … 指定要查询的表名
where … 指定查询条件
group by … 指定要分组列
having … 指定过滤分组的条件
order by … 指定排序列

模糊查询:

1.任意多个字符:%
2.任意一个字符:_

常用聚合函数:

统计个数:count(column)
列出字段全部值:group_conact(column)
求和:sum(column)
平均值:avg(column)
最大值:max(column)
最小值:min(column)

简单查询:

只指定表名:select * from table_name;
指定列名:select ename,sal from table_name;
使用列别名:select ename as emp_name from table_name;
附加条件:select ename from table_name where sal>2000;
排序:select ename from table_name order by sal;

连接查询:

内连接:
1.无条件内连接:
Mysql> select * from tb1 [inner] join tb2
2.有条件内连接
Mysql> select * from tb1 inner join tb2
-> on tb1_id =tb2_id;
外连接:
1.左外连接:(以左表为基准)
mysql> select * from tb1 left join tb2
-> on tb1_id= tb2_id;
2.右外连接:(以右表为基准)
mysql> select * from tb1 right join tb2
-> on tb1_id= tb2_id;

操作:

插入数据:

指定字段插入:
insert into tb_name(字段) values(值);
全字段插入:
insert into tb_name values(值);
多行插入:
insert into tb_name(字段) values(值1),(值2)…;

修改数据:

修改所有数据:
update tb_name set value_1=value_2;
修改多个:
update tb_name set value1_=value_2,value_3=value_4;
修改满足条件的数据:
update tb_name set value_1=value_2 where id=1

删除数据:

删除表中所有的数据:
delete from tb_name;
删除表中满足条件的数据:
delete from tb_name where id1;

修改表结构:

修改表名:
alter table tb_name rename to new_name;
修改字段名:
alter table tb_name change name new_name 字段类型;
修改字段类型:
alter table tb_name modify 字段名 字段类型;
添加字段:
alter table tb_name add 字段名 类型;
删除字段:
alter table tb_name drop 字段名;

表关系:

一对一
一对多
多对多

用户管理

密码:

1.密码策略相关参数:
mysql> show variables like ‘validate%’;
2.查看密码策略制定参数:
mysql> show variables like ‘validate_password_policy’;
3.修改密码策略参数:(修改密码策略级别为0)
mysql> set global validate_password.policy=0;
mysql> select @@validate_password.policy;

用户:

1.内置用户:
‘root’@’localhost’
‘mysql.sys’@’localhost’
‘mysql.session’@’localhost’
‘mysql.infoschema’@’localhost’
2.创建用户
mysql> create user law identified by ‘jayss’; #默认为jayss@’%’
mysql> create user tian@’%’ identified by ‘tian’;
mysql> create user law@192.168.244.255 identified by ‘jayss’;
3.删除用户
mysql> drop user jayss;
4.锁住/解锁用户
mysql> alter user jayss account lock;
mysql> alter user jayss account unlock;
5.修改口令:
mysql> alter user jayss@’%’ identified by ‘jayssjayss’;

权限层次:
关键字权限层次
global服务器全局生效的权限
database数据库生效的权限
table指定表生效的权限
column指定列生效的权限
routine存储过程、函数生效的权限
查询权限信息:

查询自己的权限:
mysql> show grants;
root帐号查询其他帐号:
mysql> show grants for user1@localhost;
mysql> show grants for jayss;

优化

index种类:B-Tree、R-Tree、hash

创建索引:

指定主键或附带not null的唯一约束
自动创建clustered index
创建普通索引
1.mysql> create table t(a int, b char(10), c char(10), index idx_b(b));
2.mysql> alter table t add index idx_a(a);
3.mysql> create index idx_c on t(c);
多列复合索引
mysql> create index idx_com on emp(empno, ename, sal);

删除索引:

1.mysql> drop index idx_a on t;
2.mysql> alter table t drop index idx_abc;

查看索引信息:

mysql> show index from t\G

欢迎技术交流

WeChat……

    原文作者:Jayss_987
    原文地址: https://www.jianshu.com/p/4296b3505af3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞