mysql入门

《MySQL必知必会》读书笔记(二) 8~14章

≯℡__Kan透↙ 提交于 2019-12-10 05:06:38
1、like 搜索模式:由字面值,通配符或两者组合构成的搜索条件。 like指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。 %表示任何字符出现任意次数: select prod_id,prod_name from products where prod_name like 'jet%'; 表示搜素prod_name以jet起头的词。 通配符可在搜索模式中任意位置使用,并且可以使用多次: select prod_id,prod_name from products where prod_name like '%anvil%'; 虽然%似乎可以匹配任何东西,但无法匹配NULL。即使是where prod_name like '%'也不能匹配用NULL作为产品名的行。 通配符“_”用法“%”相同,但只匹配单个字符: SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '_ ton avil'; 2、使用通配符的技巧 通配符搜索的处理时间一般比较长,所以有一些技巧: 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符; 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。 3、使用正则表达式 SELECT

《MySQL必知必会》读书笔记(三) 15~21章

梦想的初衷 提交于 2019-12-09 22:44:50
1、外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。通过外键查找: SELECT vend_name, prod_name, prid_price FROM vendors, products WHERE vendors.vend_id = products.vend_id ORDER BY vend_name, prod_name; 在引用的列可能出现二义性,必须使用完全限定列名。 如果没有用WHERE子句进行条件过滤则返回的结果是笛卡尔积,即两个表行的乘积。 2、上条的语句所用的联结是等值联结,它基于两个表之间的相等测试,这种联结也成为内部联结。对于这种联结可以使用不同的语法: SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id; ANSI SQL规范首先INNER JOIN语法。 3、SQL对一条SELECT语句中可以联结的表的数目没有限制,创建联结规则基本相同。 但MySQL在运行时关联指定的每个表以处理联结,这种处理可能很耗费资源,因此不要联结不必要的表,联结的表越多性能下降越厉害。 4、自联结 加入想查询ID为DTNTR的物品相同生产厂家的其他物品,可以采用子查询的方式:

《MySQL必知必会》读书笔记(四) 22~30章 完结篇

牧云@^-^@ 提交于 2019-11-29 06:11:38
1、视图 视图不包含表中应该有的任何列或数据,它包含的是一个SQL查询。在视图创建之后,可以用于表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据。 视图仅仅是用来查看存储在别处的数据的一种设施。视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过的数据。 因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。如果用多个联结和过滤创建了复杂的视图或者嵌套了视图,性能可能下降得很厉害。 创建和使用视图的一下常见的规则和限制: 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字); 可以创建的视图数目没有限制; 创建视图需要有足够的权限; 视图可以嵌套; ORDER BY可以用在视图中,但如果从该视图检索数据的SELECT语句中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖; 视图不能索引,也不能有关联的触发器或默认值; 视图可以和表一起使用。 创建视图: CREATE VIEW productcustomers AS SELECT cust_name, cust_contact, prod_id FROM customers, orders, orderitems WHERE customers.cust