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......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 花了3天时间学习MySql,考了个二级MySql 书籍参考:高等教育出版社《全国计算机等级考试二级教程-MySQL...
    如果仲有听日阅读 1,263评论 4 4
  • 这一篇最主要是记录下命令,方便以后查找 使用Mysql 创建数据库 create database mysql_t...
    Treehl阅读 571评论 0 0
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,028评论 0 19
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,766评论 5 116
  • 之前一篇文章《为什么我明知道要努力却总是一再拖延?》里已经说明了精力管理的重要性,是精力,而非时间,是高效表现的基...
    健健大侠阅读 1,099评论 3 52