一、版本介绍
社区版:免费,个人使用,不能商业用,出了问题自己解决,没有技术支持
企业版:收费,商业用,偏重于基本服务,cpu个数在1-4之间,费用4万/年;超过4个,7万/年
集群版:收费,商业用,偏重于集群设定,cpu个数在1-4之间,费用7万/年;超过4个,14万/年
二、yum安装
mysql:主要提供管理工具
mysql-server:提供基本模块和功能
三、启动数据库
加载的内容以及数据库下的文件
说明:ibdata1、ib_logfile0、ib_logfile1都是数据库索引文件,用来快速定位数据;mysql.sock套接字文件,绑定了数据库的IP、端口等,想要用户连接访问,就必须要有这个文件
数据库文件解释:
.frm文件:存放数据用的数据表结构
.MYD文件:存放数据表的具体数据
.MYI文件:当前数据表的索引文件
四、登录数据库
-u 用户
-p 密码
-h 登录哪台服务器
-P 指定端口
远程登录数据库
mysql -h192.168.1.100 -uroot -p123456
a. mysqladmin:添加密码的工具
格式:mysqladmin -uroot password '123456'
b. 修改root密码:root登录之后
set password=password("654321")
c. 修改普通用户密码,root登录之后
set password for 'user1'@'localhost' =password("654321")
d. 忘记root用户密码之后,重设密码步骤:
1) 停止数据库 service mysqld stop
2) 修改配置文件my.cnf,加入skip-grant-tables
3) 启动数据库 service mysqld stat,不用密码直接root登录
set password=password('123')
5) 修改配置文件,删除skip-grant-tables
6) 重启数据库service mysqld restart
7) 新密码登录
五、创建数据库用户
格式:create user silen@'192.168.1.0/24' by identified '123456'
六、数据库操作(备份 还原 多机 集群)
【操作1-增】
create
2. create table tb1(字段1 类型1,字段2 类型2......)
域约束
insert into tb1(id,name,info)
insert into命令
insert into
插入部分字段数据
(2,'wangwu','student')...
同时插入多行数据
select id from tb2
复制给tb1的id字段,两条命令合并,id类型需相同
【增操作-延伸】
1. 将原表数据添加到新表
insert into <新表> (列名) select <原表列名> from <原表名>
例:insert into contacts ('姓名','地址','电子邮件')
select name,address,email
from Students
2. 将原表数据创建为一个新表
select <新表列名> into <新表名> from <源表名>
例:select name,address,email into contacts from students
3. 使用union连续插入多行
insert <表名> (列名) select <列值> union select <列值>
例:insert Students (姓名,性别,出生日期)
select '李四','男','1980/6/15' union
select '王五','男','1981/9/20'
说明:union表示下一行的意思
【操作2-删】
drop
2. drop table tb1
删除库和表,用到drop命令
说明:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能删除有外建约束引用的表
delete from tb1 where id=2
删除id=2的这一行数据,最好用主键来标识行,避免删错其他行,用到delete命令
【操作3-改】
update更改数据,alter更改表
where id=5
更改一条数据,用到where来定位
where id between 4 and 10
用范围匹配between and,更改多条数据
rename
更改表名,用到rename命令
modify
更改字段类型,比如name的char长度,其他属性也跟着改,如Default,用到modify命令
change
更改字段名称,用到change命令,其他属性也跟着修改
drop
删除某个字段,用drop命令
add
添加一个字段,用到add命令,date表示类型,first表示放在第一行呈现,没有second选项,不加则默认最后一行
add nian year after
after命令表示插入在某行的后面
【操作4-查】
1. show databases
2. show tables
3. show engines\G
4. desc tb1
5. show create table tb1 查看创建表结构语句
6. select 字段名/* from tb1
7. select host,user from mysql.user 查看数据库用户
Field:字段属性
Null:是否允许数值为空
主键(约束),具有唯一性数值的字段名,能快速定位到某一行,如id
Default:当没有填入值时,默认填一个NULL
Extra:额外参数
6. show global variables like '%log%'
查看跟日志相关的变量
说明:
a. bin开头:二进制日志信息,主从配置mysql,从服务器的日志也会产生在主的错误日志里
b. general开头:一般查询日志信息
c. innodb开头:事务日志信息
d. relay开头:中继日志信息
【查询操作-延伸】
A.【精确(条件)查询】
select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[asc或desc]]
1. 查询所有数据行和列
例:select * from students
2. 查询部分行列
例:select name,address from students where score=90
3. 查询中使用as更改列名
例:select name as name1 from sdudents where gender='男'
注:将列名name 改为name1
4. 查询空行
例:select name from students where email is null
注:is null和is not null判断是否为空行
5. 查询中使用常量
例:select name, '深圳' as address from Student
注:查询name列,并增加新的列address,所有的值都设为深圳
6. 查询返回限制行数(关键字:top percent)
例1:select top 6 name from students
说明:top 6 表示name列的前6行
例2:select top 60 percent name from students
说明:表示name的60%
7. 查询排序(order by , asc , desc)
例:select name
from students
where score>=60
order by desc
说明:desc表示降序,默认asc为升序
B.【模糊(条件)查询】
1. 使用like查询
例:select * from students where name like '赵%'
说明:like运算符只用于字符串,仅与char和varchar数据类型联合使用
2. 使用between进行范围查询
例:select * from students where age between 18 and 20
说明:查询显示表a中nianling在18到20之间的记录
3. 使用in在列举值内查询
例:select name from students where address in ('北京','上海','唐山')
说明:查询表a中address值为北京或者上海或者唐山的记录,显示name字段
C.【分组查询】
1. 使用group by分组查询
例:select gender,count(gender) from students group by
说明:只显示男女性别,并调用函数,计算并显示对应人数
2. 使用having条件表达式查询
例:select gender,count(gender) from students group by gender having count(gender) >= 3
说明:显示性别人数大于3的性别和人数
D.【多表连接查询-内连接】
1. where子句中指定联接条件
例:select tb1.name,tb2.score
from tb1,tb2
where tb1.name=tb2.name
说明:查询表1和表2中name字段相等的记录,并显示表1中的name字段和表2中的score字段;当两个表中具有相同意义的字段值相等时,就查询出该条记录
2. from子句中使用join…on
例:select tb1.name,tb2.score
from tb1 inner join tb2
on (tb1.name=tb2.name)
说明:查询表1和表2中name字段相等的记录,并显示表1中的name字段和表2中的score字段
E.【多表连接查询-左外连接查询】
select 属性名列表 from 表名1 left join 表名2 on 表名1.属性名1=表名2.属性名2
例:select s.name,c.courseID,c.score
from students as s
left outer join score as c
on s.scode=c.strdentID
说明:在strdents表和score表中查询满足on条件的行,条件为score表的strdentID与students表中的sconde相同;进行左连接查询时,可以查出students中所有记录,而score表中,只能查询出匹配的记录
注:左链接是以左边表中数据为参照,显示左边表中所有数据,右边表,只显示与左边表对应的数据,少了补NULl,多了删除;同理,右链接是以右边为参照,左边少了补NULL,多了删除。
F.【多表连接查询-右外连接查询】
select 属性名列表 from 表名1 right join 表名2 on 表名1.属性名1=表名2.属性名2
例:select s.name,c.courseID,c.score
from students as s
right outer join score as c
on s.scode=c.studentID
说明:在students表和score表中查询满足on条件的行,条件为students表中的sconde与score表的strdentID相同;进行右连接查询时,可以查出score中所有记录,而表students中,只能查询出匹配的记录
【操作5-权限】
grant
授权use1r以本地身份登录,并拥有db1库的所有权限
show
查看user1在本地登录,拥有哪些权限
revoke select
移除user1本地登录后的查询权限
七、MySQL数据库客户端图形界面管理工具
1. MyDB Studio
2. phpMyAdmin
3. sqlyog
4. Navicat for MySQL
5. 慢日志查询工具 mysqlsla
转载于:https://blog.51cto.com/huangzp/1895785