数据库
关系性数据库
-
oracle
-
mysql
-
Postgresql (加州伯克利分校的)
-
SQL server
非关系数据库
- redis s
- memcache
mysql 的最大的特点
- �支持插件式扩展
- 网易公司的inno sql
- 结构化查询语句
1 .Mac 下安装mysql
去官网下 Mysql
![](/Users/eternal/Desktop/屏幕快照 2017-06-07 14.40.59.png)
选择5.6 版本
5.7 版本默认开启
only_full_group_by 模块,此模块会导致 sql语句执行严格的group by 的模式,下面的例子会报错
例
select id ,name from user group by province ;//这样的语句报错;
解决方法是在字段前面加 any_value();
第二种方法是
用命令行登录mySQL 执行以下命令
select @@sql_mode;
//查到的结果
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
然后找到 my.conf 文件
mysqld 这行要开启
粘贴上去
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
进行重启服务;
选择 5.6版本
![](/Users/eternal/Desktop/屏幕快照 2017-06-07 14.41.12.png)
执行安装
点击运行就行
执行更改密码命令
mysqladmin -uroot password '新密码'
图形化界面去下载phpmyadmin 放到目录下面 就可以使用
2.mysql的sql 语句
Mysql -u 用户名 -p | 进入 | |
---|---|---|
quit | 退出 | |
\g | 写完了执行 | |
\h | 获得帮助 | |
\c | 清除已输入命令 | |
? | ||
Create database | 创建数据库 | |
Use database | 使用数据库 | |
Show databases | 查看所有的库 | |
Drop database | 删掉数据库 | |
desc 表名 | 查看表结构 | |
show create table 表名 | 查看创建表的语句 | |
alter table user add column sex int(3) after age; | 给表增加字段 | |
alter table user drop column sex int(3) after age; | 删除表字段 | |
alter table user change column sex int(3) after age; | ||
alter table yinhangka rename bankcard; |
-
增
insert insto 表名(username,字段2 ,字段n)value('值1','值2','值3');
-
删
delete from 表名 where 条件
delete from 表名 where id in(''); //in里面写值
```
-
改
update 表名 set 字段1 =值1,字段2 =值2 ,字段n值n where [限制条件]
-
查
select * from table; where 字段 between and 区间选择
笛卡尔乘积(对两个表进行 的操作都叫做笛卡尔成绩)
(将表1 的所有字段1 对1 与表2 的所有字段都进行匹配)
select name from shop where price > 600 limit 2;
-
Order by 字段 asc ()
-
-
desc(能获取最新数据的id)
Order by id asc 升序 从小到大 order by id desc,sid asc 降序从大到小 > < = != >= <= 表达式 Or and Where 字段 in值( select name price from shop where sid in (2,3); in值里面传递什么就去执行什么
置顶的实现本质上是 先按置顶顺序排序,在按时间顺序排列
update tieze set zhidng =1 where
-
Limit ();这个是分页的重点
一页显示多少条数据
-
distinct
select distinct price from shopping // 去掉重复值
�聚合函数
在MySQL 里面基本不用 concat 与md5 函数
前面是负载均衡服务器,下面有很多服务器,数据库是瓶颈,每用一次函数
就会消耗很多资源
Max 最大值 select * from shop where price = min(price) Count 统计 Avg s平均值 Min 最小 Sum 总和 Select sum(price) from shop Concat mysql 里面的拼接字符串 MD5 mysql 里面的函数 -
GROUP 分组
hvaing 与where 的区别,having 是在结果集中继续取数据
Group by 字段 With roll up 会进行统计 HAVING having 是在已找到的数据里面进行操作 用法示例子 select count(shengfen) as total ,shengfen from user group by shengfen having total >3;
多表联合查询
内连接 | Select 表字段 as 别名 from 表1,表2 where 条件 | select user.uid,user.name,shopping.name,shopping.price from user,shopping where shopping.sid= user.sid; | |
---|---|---|---|
内连接 | Select 表.字段as 别from 表inner join 表2 on条件 | select u.uid as uid,u.name as uname ,s.name as sname,s.price as price from user as u inner join shopping as s on u.sid =s.sid; | |
左关联 | select 字段 from left join表2 on 条件 | select u.uid as uid,u.name as uname ,s.name as sname,s.price as price from user as u inner join shopping as s on u.sid =s.sid; | 以左边为主没匹配到的显示为空 |
右关联 | select 字段 from left join表2 on 条件 | select * from user right join shopping on user.sid =shopping.sid; | 以右边为主,左表没匹配到的显示为空 |
Union | 将结构相同的两次查询数据组合到一起 | 两个语句用union 连接起来 | |
Union all | 不会干掉重复数据 |
内连接
select user.uid,user.name,shopping.name,shopping.price from user,shopping where shopping.sid= user.sid;
//内连接
select u.uid as uid,u.name as uname ,s.name as sname,s.price as price from user as u inner join shopping as s on u.sid =s.sid;
`
select u.uid as uid ,u.name as uname,s.name sname,s.price from user as u, shopping as s where s.sid =u.uid;
+-----+---------+-----------+---------+
| uid | uname | sname | price |
+-----+---------+-----------+---------+
| 1 | xiaobao | iphone7 | 1222222 |
| 2 | xiaohua | 汽车 | 131313 |
| 3 | xiaobao | 化妆品 | 31313 |
| 4 | xiaohua | 汽车 | 131313 |
+-----+---------+-----------+---------+
4 rows in set (0.00 sec)
了解的命令
命令 | 作用 |
---|---|
FLush tables | 刷新表 |
Grant all on 库.表 Grant . to'root'@ '%' identified by 'liwenkai'; | %代表用户可以对任意电脑的ip进行登录,我们不这样写是不安全的 |
Show variables | 查看用户服务器的状态 |
这些我们都可以通过phpMyAdmin 的创建用户账户界面来查看 | 只是了解 |
分库分表分机器
一张表拆成不同的表
User 1 处理效率提高
user 2
User 3
User 4
可以分成不同的机器
北京放到北京服务器
河南放到河南服务器
-
数据库中间件
自动化的处理数据库相关的多服务器与单服务器的一种特殊的服务器
网友评论