这几天出差去了,没有更新。在客户那里,做的是安装、集群、存储方面的工作。如果你们感兴趣,过段时间我们来讨论一下这个。
吃饭的时候我就在想,之前讨论MySQL软件的编译和存储引擎是不是太早了?
有很多人也许对MySQL还不是特别了解,那我们今天的内容就是全面了解MySQL。
这篇文章你将学会
MySQL的七大特点?
MySQL最全的SQL语句?
这篇文章,面向应用型数据库,你也可以把它当做参考手册。
MySQL七大特点
简单
MySQL源码入门门槛很高,很多人不能深入其中。
但是mysql的使用还是非常简单的,任何稍微有点IT背景的技术人员都可以无师自通。
开源
开源意味着更加安全,代码就摆在那里,无数的技术爱好者一起审核程序,一起修补问题,让使用者非常放心。
开源也带来免费(从上世纪90年代一直持续到现在)。
免费,让规模化部署的需求成为可能,使互联网交互式服务更有质量。
复制
MySQL从3.23.15版本开始,支持replication,能够支持MySQL使用者搭建master-slave架构。请注意,这个功能是在2000年实现的。
对数据库使用者来说,不管是在线备份还是读写分离,或者负载均衡到多个读库,意义都是无法估量的。
引擎
MySQL的强大之一,不同于其它多数数据库,它是插件式存储引擎。
这是一个“兼容并包,海纳百川”的开放式设计。
MySQL有许多的存储引擎,mylsam、innodb、ndb、tokudb等。而最常用的innodb是这些的国王。
插件式存储的设计,让innodb及其他存储引擎轻松接入到MySQL server,集百家之长。
支持
MySQL之父monty在MySQL刚刚推出的时候,亲自写了30000封邮件来帮助人们使用MySQL。
这样的持之以恒、不辞劳苦、不厌其烦。我给他一句niubi。
合作
PHP和Perl的开发者在MySQL早期的时候,传播了许多MySQL的技术和新闻,让Linux版本都会预装MySQL。
LAMP(Linux、Apache、MySQL、PHP)-------->>这是一个集群,我们叫农场,这个我也会说的。
社区
MySQL流行的一个重要原因,除了开发者的努力。
社区也是功不可没。他为MySQL贡献了架构方案、运维工具、技术文档、宣传普及,乃至专业人才。
不管是国外的Google、Facebook,还是国内的BAT(百度、阿里、腾讯),都在使用MySQL的过程中不断给MySQL贡献新的功能和工具。
公司有竞争,技术无国界。
MySQL最全的SQL语句
SQL语句中的大小写问题:
1)关键字、函数名、列名和索引名不区分大小写
2)数据库名、表名、别名及视图名区分大小写的(因为linux区分大小写的)
增,删,改,查
库操作:
show databases; //列出所有的库
create database db1; //创建数据库
use db1; //切换库
drop database db1; //删除库
表操作:
show tables; //列出所有的表
create table t1(id int(10),name char(10)); //创建表
desc t1; //查看表结构
show create table t1\G //查看表属性
alter table t1 rename to t2; //修改表名
drop table t2; //删除表
字段操作:
alter table t1 add sex char(10); //添加字段
alter table 表名 add 字段名 数据类型(长度);
alter table t1 add addr char(10) after name; //在指定字段的后面添加字段
alter table 表名 add 添加字段名 数据类型(长度) after 指定字段名;
alter table t1 add num int(10) first; //添加字段到首位
alter table 表名 add 添加字段名 数据类型(长度) first;
alter table t1 change addr address char(11); //修改字段名称及属性
alter table 表名 change 原字段名 修改字段名 数据类型(长度);
alter table t1 modify address int(11); //修改字段属性
alter table 表名 modify 字段名 数据类型(数据长度);
alter table t1 drop num; //删除字段
alter table 表名 drop 字段名;
记录操作:
insert into t1 set id=1; //新增记录
insert into t1 set id=1,name='haha'; //新增记录
insert into t1(id,name) values(2,'hehe'); //新增记录
insert into t1(id,name) values(3,'hehe'),(4,'heihei'); //新增多条
insert into t1 values(5,'xixi','male'); //新增记录,不能有字段遗漏
insert into 表名 values(值1,值2,....); 顺序按照表头的顺序(字符需要加引号)
查询
select * from t1; //查看所有的记录
select * from 表名;
select name,sex from t1; //显示指定字段的记录
select name,chi from t2 order by chi; //按照chi升序的顺序排列
select name,chi from t2 order by chi desc; //逆序
select name,chi from t2 order by chi desc limit 2; //只显示前2条记录
select * from t2 where name like '%an'; // % 匹配任意
select * from t2 where name like 'q_an'; // _ 匹配单个字符
select * from t2 where name regexp 'an$'; //匹配正则
select name,math from t2 where math=(select max(math) from t2);//子
update t1 set sex='female' where id=3; //修改记录,一定要有定位
update 表名 set 修改字段=值 where 条件字段=值;
update t1 set sex='male' where id=1 and name='huang'; //多条件定位
and = && or = ||
delete from t1 where name='haha'; //删除记录,一定要有定位
delete from t1 where sex is null; //删除sex字段没有值的记录
delete from t1; //删除所有记录
=====================================================
函数:
max() 最大值 > select max(math) from t2;
min() 最小值 > select min(math) from t2;
sum() 求和 > select sum(math) from t2;
avg() 平均值 > select avg(math) from t2;
count() 计数 > select sex,count(sex) from t1 group by sex; //统计不同性别的数量
database() > select database(); //查看当前所在的库
user() > select user(); //查看当前所登录的用户
password() > update user set password=password('456') where host='localhost' and user='root'; //修改root密码
算术运算:
-
-
- / %
-
select 6+5;
别名 as
select name,(chi+math+eng)/3 as avg from t2;
模糊匹配 like
% %匹配任意字符,相当于shell中的*
_ 下划线匹配单个字符,相当于shell中的?
select * from t2 where name like '%an';
select * from t2 where name like 'q_an';
正则匹配 regexp
select * from t2 where name regexp 'an$';
这上面没有写的还有约束、索引、用户和权限管理、触发器备份与恢复、读写分离,如果你们想看,后续会慢慢出来。
我会结合工作中遇到的问题还有新人需要学习的知识进行解读和结合。
希望以上所述,对你有用。