《Head First SQL》学习笔记
captxb
这个作者很懒,什么都没留下…
展开
-
chapter02_SELECT语句
不要使用双引号,双引号只在编程语言中使用,不要在SQL中使用 使用SELECT语句,应该__只选择需要的列__,而不是SELECT * 之后交给编程语言处理,因为这样可以__加快查询速度__ 等于运算符: = (单个等号) 不等于运算符: <> 对INT、DEC类型的列使用__比较运算符__的时候,结果就是大于某个值或者小于某个值的行; 对CHAR, VARCHAR使用...原创 2019-02-26 18:45:49 · 705 阅读 · 0 评论 -
chapter12_安全性
添加新用户 CREATE USER 'bochen'@'localhost' IDENTIFIED BY '123456'; 删除用户 DROP USER 'bochen'@'localhost'; 设置用户的权限GRANT (1) 简单的GRANT语句 GRANT SELECT ON clown_info TO bochen; 给bochen用户授予在clown_i...原创 2019-02-27 09:06:36 · 137 阅读 · 0 评论 -
chapter11_约束、视图与事务
检查约束 CHECK (1) 限定填充进某一列数据的取值范围 (2) 示例 CREATE TABLE piggy_bank ( id INT(4) AUTO_INCREMENT NOT NULL PRIMARY KEY, coin CHAR(1) CHECK(coin IN ('P','N','D','Q')) ); 或 ALTER TABLE piggy...原创 2019-02-27 09:05:31 · 112 阅读 · 0 评论 -
chapter10_外联接、自联接与联合
左外连接 LEFT OUTER JOIN 左外联接接收左表的所有行,并用这些行与右表中的行进行匹配。 如果没有相符的结果就在右表中的列中填入NULL 示例 SELECT g.girl, t.toy FROM girls AS g LEFT OUTER JOIN toys AS t ON g.toy_id = t.toy_id; 当左表和右表具有一对多的关系时,左外联接特别有用 右外连...原创 2019-02-27 08:54:52 · 110 阅读 · 0 评论 -
chapter09_子查询
(NOT) IN 可以表示在集合中取值 示例 SELECT mc.name, jc.title FROM job_current AS jc NATURAL JOIN my_contacts AS mc WHERE jc.title IN ('Cook', 'Waiter', 'Writer', 'Web Developers'); 可以用__子查询__的方式代替上个示例中 (NOT...原创 2019-02-27 08:50:30 · 88 阅读 · 0 评论 -
chapter07_多张表的数据库设计
模式schema:对数据库内的数据描述(列和表),任何相关对象,各种连接方式的描述的统称 解决不具有原子性的单表的问题 – 拆分成多个具有原子性的表 主键:标识当前这个表的一个或一组属性 外键:对当前这个表来说未必是key,但是它是另一个表的主键。另一个表此时叫做__父表(主表),父表中对应外键的主键叫做__父键 外键 (1) 语句示例 CREATE TABLE table1 ...原创 2019-02-26 18:46:27 · 110 阅读 · 0 评论 -
chapter06_SELECT进阶
ORDER BY (1) 可以使用多个关键字 示例 SELECT * FROM my_contact ORDER BY name, number; (2) 默认 升序ASC SQL排序规则 NULL > 数字 > 大写字母 > 小写字母 升序ASC和降序DESC可以同时用在一条语句中 示例 SELECT * FROM movie_table ORDER BY...原创 2019-02-26 18:46:20 · 332 阅读 · 0 评论 -
chapter05_ALTER和字符串函数
FIRST关键字可以把新添加的列放在表的最前面,主键一般作为表的第一列 ALTER的几种操作 第二行:添加新列,并把这列置为表的第一列 第三行:添加主键 第四行:添加新列,并把这列放在contact_id列的后面(默认是放在最后一列) 第五行:修改表名 第六行:改变列的属性 第七行:改变列的属性和名称 第八行:卸除主键 第九行:卸除某一列(同时删除改列的数据) 示例 ALTER TAB...原创 2019-02-26 18:46:12 · 133 阅读 · 0 评论 -
chapter04_聪明的表设计
简短的查询优于较长的查询 __原子性__数据: (1) 定义:它已经被分割至最小块,__不能或不应该__再被分割 对于同样的信息,不同的表对于原子性数据的需求不同 示例 地址包括街道 + 门牌号,对于外卖来说,它们应该合在一列存储;对于房地产中介来说,应该分成两列存储 (2) 规则一 具有原子性数据的列不会有多个类型相同的值 示例 food_name | ingredi...原创 2019-02-26 18:46:04 · 169 阅读 · 0 评论 -
chapter03_DELECT和UPDATE
DELETE FROM xxx WHERE …… WHERE 后面接着的内容可以用所有SELECT语句用到的内容 谨慎使用DELETE,除非已经确认加入了精确的WHERE子句 一个__技巧__是先用 SELECT替换DELETE,看看到底要删除哪些记录 UPDATE 可以一次更新很多列的内容,中间用逗号,连接 示例 UPDATE my_contacts SET id = 2, n...原创 2019-02-26 18:45:56 · 100 阅读 · 0 评论 -
chapter01_数据和表
数据库:保存表和其他SQL结构的容器 SQL不区分大小写,但是命令应该用__大写__,数据库名、表名等应该用__小写__ 基本数据类型 BOOLEAN CHAR(SIGNED/UNSIGNED) TINYINT(SIGNED/UNSIGNED):8 SMALLINT(SIGNED/UNSIGNED):16 MEDIUMINT(SIGNED/UNSIGNED):24 INT(SIGNED...原创 2019-02-26 18:45:37 · 183 阅读 · 0 评论 -
chapter13_附录
临时表 (1) 只存在于内存中,数据库断开连接后消失,一般用于测试 (2) 用法:加上TEMPORARY CREATE TEMPORARY TABLE temp_table ( .... ); 转换数据类型 使用 CAST()函数 获取当前用户、日期、时间等系统内置信息 SELECT CURRENT_USER; 获取当前用户(会得到例如root@localhos...原创 2019-02-27 09:07:40 · 86 阅读 · 0 评论