head first
1, insert 单引号时,使用/转义
2, 不要用NULL, 查找时使用isNull 来判断。
3, 用and / or 连接两个not 时,要写两个NOT
4,delete from table //删除全部表内容
5, 改变N个列
ALTER TABLE project
CHANGE COLUMN description new_desc VARCHAR(100),
CHANGE COLUMN contents new_contents VARCHAR(30);
修改类型
ALTER TABLE project
MODIFY COLUMN contents VARCHAR(120);
ALTER TABLE project
ADD COLUMN start_date DEC(7,2);//记得这是什么类型了吗
DROP COLUMN …
6,MODIFY 无法重新排列列的顺序,只有添加列才是调整序的好时机。
7,超大型的
UPDATE my_table
SET new_col=
CASE
WHEN col1 = value1 THEN newva1
WHEN col2 = value2 THEN newva2
ELSE newval3
END;
8, ORDER BY 根据某个列(某几个)列返回结果
DESC 有时叫做description 有时又叫descending
SELECT *
FROM T
ORDER BY t1 ASC, p1 DESC;
9, SUM 把括号内出现的列值加总
SELECT name, SUM(salary)
FROM sales
GROUP BY name //分组
ORDER BY SUM(salary) DESC;// 必须根据求和所用的列排序
10, AVG 配GROUP BY
SELECT name, AVG(salary)
FROM sales
GROUP BY name; //AVG 先把组内所有值求和,再求平均。
11, MIN / MAX
SELECT name, MAX(salary)
FROM sales
GROUP BY name; // 返回每个人拿过的最高工资
12,DISTINCT 是个关键字不是函数,所以不用括号
SELECT DISTINCT sdate
FROM sales
ORDER BY sdate;// 没有重复的日期
SELECT COUNT(DISTINCT sdate)
FROM sales; // 因为COUNT 只返回一个值,不需要ORDER DY,
13,LIMIT 1,1; //SQL 从0开始计数, 所以取第二条
14, 模式SCHEMA 用于表达数据库内的结构,表和列,他们之间相互连接方式。
15, 外键使用的主键也称父键。主键所在的表称为父表。
外键用于确认一张表中的行与另张表中的行相对应。外键值可为NULL即使主键不可为NULL.外键不需要唯一性。
可以通过约束来保证外键有意义,
插入外键列的值必须已经存在于父表的来源列中,这是引用完整性。
16,1NF 数据列只包含原子性的值 没有重复的数据组
17, T.x -> T.y // 从右到左读作,在关系表T中,y列依赖于x列,
18,2NF 没有部分依赖的1NF 或,符合1NF的表只有一列主键就是2NF。
19,3NF 没有传递依赖的2NF
20,内联
交叉连接CROSS JOIN 默认不写就是交叉,返回两张表的每一行相乘结果
相等连接INNER JOIN equijoin 不等连接..ON T.a <> S.a
自然连接NATURAL JOIN 没有ON,利用同列名的连接,
21, IN , NOT IN … NOT EXISTS 比比效率吧
22,外连接
LEFT OUTER JOIN 接收左表中所有行,用这些行与右表匹配。当左与右有一对多关系时有用。结果集中的NULL行表示右表中没有相符记录行。
RIGHT OUTER JOIN
一个表可同时作外连接左右表
23, UNION 规则
每个SELECT 列的数量一致,表达式与统计函数相同,
SQL 会默认清除重复值 如果不想清除使用UNION ALL
列的数据类型相同或可转
如果想对结果排序,请在最后一条SELECT 加入ORDER BY 能排列整个结果集
INTERSECT A&B
EXCEPT A-B
24,视图
CREATE VIEW name AS
...
25,再背一遍ACID
atomicity
consistency
isolation
durability
26,事务管理
START TRANSACTION;//追踪后续所有SQL
COMMIT;//提交之前数据库不会有任何行为
ROLLBACK;//回滚到事务开始前。
27,密码
SET PASSWORD FOR 'root' @ 'localhost' PASSOWRD('XXXX');
ALTER USER ROOT IDENTIFIED BY new-password;
GRANT SELECT ON
table1
TO user1;
REVOKE SELECT ON
table1
FROM user1;
REVOKE DELETE ON
table1
FROM user1 CASCADE;
i am sorry i have not appreciated the strong point of this bookl.
随机推荐
- python3--json序列化
# Auther: Aaron Fan # 把数据存入到一个文件中 # json格式的数据几乎可以通用语任何编程语言,但是仅仅只是简单的格式转换# 比如:字典.列表.元组.字符串这些,像函数.类就不可 ...
- ant+proguard签名打包 .jar
ant+proguard签名打包 .jar 摘自: https://blog.csdn.net/a_ycmbc/article/details/53432812 2016年12月02日 14:52:3 ...
- Docker 实现的 redis 主从
计划用 Docker 实现 Redis 的主从,简单主从而已.主的名称叫 redis-master 一步步来. 先新建个Dockerfile ,从alpine 开始,比较简单. FROM alpine ...
- bootstrap导入JavaScript插件
Bootstrap的JavaScript插件可以单独导入到页面中,也可以一次性导入到页面中.因为在Bootstrap中的JavaScript插件都是依赖于jQuery库,所以不论是单独导入还一次性导入 ...
- Linux Basic学习笔记01
介绍课程: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.Shell脚本: 高级: MySQL数据库: cache & storage 集群: Cluster lb: 4laye ...
- mysql - 查看表字段和字段描述
1.mysql查看表字段和字段描述 SELECT column_name, column_comment FROM information_schema.columns WHERE table_sch ...
- 关于提交表单时添加自定义值的方式:data中值可绑定function
表单提交时新增自定义值: $.ajaxForm(){ data:{aaa:"12"} } 但是这个是在初始化的时候就绑定进去的,所以值是固定的初始化时候的值,若想添加动态值,可以这 ...
- scrapy爬虫框架入门实战
博客 https://www.jianshu.com/p/61911e00abd0 项目源码 https://github.com/ppy2790/jianshu/blob/master/jiansh ...
- MFC学习(二):消息映射
1. 消息映射表的组成 宏DECLARE_MESSAGE_MAP,用在类的声明中,用来声明消息映射表. 宏BEGIN_MESSAGE_MAP,在使用类声明外,用来定义链接节点和填写链表节点中的数据,其 ...
- 魅力 .NET:从 Mono、.NET Core[转]
前段时间,被问了这样一个问题:.NET 应用程序是怎么运行的? 当时大概愣了好久,好像也没说出个所以然,得到的回复是:这是 .NET 程序员最基本的...呵呵! 微软开源,其实不只是对 .NET 本身 ...