Mysql必知必会
1.了解SQL
数据库 :保存有组织的数据的容器(文件柜)
表 :某种特定类型数据的结构化清单(文件)
列 :表中的一个字段
数据类型:所容许的数据的类型
行 :表中的一个记录
主键 :一列(或一组列),其值能够唯一区分表中的每个行
SQL :结构化查询语言
2.MySQL简介
DBMS 开源,执行很快,可信赖,简单
3.使用MySQL
USE 数据库名;
SHOW DATABASES;SHOW TABLES;SHOW STATUS;
SHOW CREATE ...;
4.检索数据
检索单个列:SELECT 列 FROM 表;
检索多个列:SELECT 列1,列2 FROM 表;
检索不同行:SELECT DISTINCT 列 FROM 表;
限制结果 :SELECT 列 FROM 表 LIMIT 5,5;
5.排序检索数据
按单列排序:SELECT 列 FROM 表 ORDER BY 列;
按多列排序:SELECT 列1,列2 FROM 表 ORDER BY 列1,列2;
按排序方向:DESC降序 ASC升序(默认)
ORDER BY 后面 LIMIT
6.过滤数据
SELECT 列 FROM 表 WHERE 列条件;
WHERE 后面 ORDER BY;
范围值检查:WHERE 列 BETWEEN 5 AND 10;
空值检查:IS NULL
7.数据过滤
组合WHERE子句 AND OR(优先处理AND)
IN操作符 与OR相同功能
8.用通配符进行过滤
LIKE操作符
% 任何字符任意次数
_ 匹配单个字符
不要过度使用通配符
9.用正则表达式进行搜索
REGEXP关键字
. 匹配任意一个字符
| 进行OR匹配
10.创建计算字段
拼接字段 Concat()函数
算术计算
11.使用数据处理函数
12.汇总数据
聚集函数 AVG COUNT行数 SUM列和
13.分组数据
数据分组 GROUP BY(不能使用别名)
WHERE GROUP BY ORDER BY
过滤分组 HAVING
14.使用子查询
子查询进行过滤 得到数据
子查询作为字段
15.联结表
select vend_name,prod_name,prod_price from vendors,products where vendors.vend_id = products.vend_id order by vend_name,prod_name;
在没有where字句的情况下,默认为笛卡儿积。
select vend_name,prod_name,prod_price from vendors inner join products on vendors.vend_id = products.vend_id;内部联结
联结影响性能,联结越多表,性能降低的越厉害。
16.创建高级联结
select p1.prod_id,p1.prod_name from products as p1,products as p2 where p1.vend_id = p2.vend_id and p2.prod_id = 'dtntr';自联结
select c.*,.......;自然联结,不存在重复的列
select customers.cust_id,orders.order_num from customers left outer join orders on customers.cust_id=orders.cust_id;左外部联结,左边所有的行
17.组合查询
union组合查询的结果,union all
18.全文本搜索
fullext实行全文搜索
19.插入数据
insert与select一起用,插入取出来的数据
20.更新和删除数据
update 表 set .....;
delete from 表 where.....;
21.创建和操纵表
alter table 表.....;修改表结构
22.使用视图
视图,不需要了解表的结构,虚拟表,数据他人已经select获取好。
重用sql语句;简化复杂sql,不必知道细节;给予用户部分数据而不是全部(权限);
create view 视图 as 查询语句;
23.使用存储过程
简单,安全,高性能;联想到封装好的函数
24.使用游标
25.使用触发器
事件发生时自动执行(DELETE INSERT UPDATE)
26.管理事务处理
一种机制,SET TRANSACTION;
27.全球化和本地化
SHOW CHARACTER SET;SHOW COLLATION;
28.安全管理
权限的合理分配
SHOW GRANT FOR 用户;REVOKE
GRANT 权限 ON 数据库.表 TO 用户;
29.数据库维护
备份数据 mysqldump mysqlhotcopy...
进行数据库维护 ANALYZE TABLE 表;OPTIMISE TABLE;
诊断启动问题 手动启动服务器
查看日志文件
错误日志【hostname.err】
查询日志【hostname.log】
二进制日志【hostname.bin】
慢查询日志【slow.log】
FLUSH LOGS刷新日志
30.改善性能
专用服务器 SHOW VARIABLES;SHOW STATUS;
多用户多进程 SHOW PROCESSLIST;KILL命令
试验联结,并,子查询,找出最佳的方法
EXPLAIN语句
存储过程比一条一条快
正确的数据类型
按需取数据(SELECT *)LIKE很慢,使用FULLTEXT
时间在变化,优化也在变
索引 检索性能+ 插入,删除,更新性能—
复杂的条件,考虑使用UNION语句