《Mysql必知必会》
程序员文章站
2024-01-12 14:23:22
...
《Mysql必知必会》
第10章 创建计算字段
(1)使用Concat拼接串
SELECT Concat(name,'(',address,')')
FROM school
ORDER BY name;
(2)使用RTrim()去掉串右边的空格,使用LTrim()去掉串左边的空格
(3)执行算术计算
SELECT prod_id,quantity,item_price,
quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num = 2005;
第11章 使用数据处理函数
(1)文本处理函数
Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找出串的一个子串
Lower() 将串转换为小写
LTrim() 去掉串左边的空格
Right() 返回串右边的字符
RTrim() 去掉串右边的空格
Soundex() 返回串的SOUNDEX的值
Upper() 将串转换为大写
(2)日期和时间处理函数
(3)数值处理函数
第12章 汇总数据
(1)聚集函数
第13章 分组数据
(1)创建分组
GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前
SELECT vend_id,COUNT(*) AS num_prods
FROM products
GROUP BY vend_id;
(2)过滤分组
HAVING子句非常类似于WHERE子句,目前所学过的所有WHERE子句都可以用HAVING子句来代替,唯一的差别就是WHERE过滤行,而HAVING过滤分组。
(3)SELECT子句的顺序
SELECT 要返回的列或表达式(是必须使用)
FROM 从中检索数据的表(仅在从表中选择数据时使用)
WHERE 行级过滤(不是必须使用)
GROUP BY 分组说明(仅在按组计算聚集时使用)
HAVING 组级过滤(否)
ORDER BY 输出排序顺序(否)
LIMIT 要检索的行数(否)
第14章 子查询
子查询就是嵌套在查询语句中的查询语句
子查询最常见的使用是在WHERE子句的IN操作符中,以及用来填充计算列。
下面是一个子查询的例子:查询定了物品TNT2的客户信息,有客户表、订单客户表、物品表
第15章 联结表
对上述14章中的例子用内连接来实现
SELECT cust_name,cust_contact
FROM customers,orders,orderitems
WHERE customers.cust_id = orders.cust_id
AND order.order_num = orderitems.order_num
AND prod_id = 'TNT2';
第16章 高级联结
除了15章介绍了内连接,这章还学习了左外连接、右外连接,并且可以使用表的别名和聚集函数
SELECT customers.cust_name,
customers.cust_id,
COUNT(order.order_num) AS num_ord
FROM customers LEFT OUTER JOIN orders
ON customers.cust_id = orders.cust_id
GROUP BY customers.cust_id;
第17章 组合查询
UNION中的每个查询必须包含相同的列、表达式或聚集函数
还可以用ORDER BY子句对结果进行排序
第18章 全文本搜索
在使用全文本搜索时有三个优势:性能更好,而通配符和正则表达式要匹配所有行;可以明确控制,如指定一个词必须匹配,一个词不能匹配;智能化的结果,可以搜索出相关结果。
MyISAM引擎支持,InnoDB暂时不支持
(1)启用全文本搜索,使用FULL TEXT子句启用
SELECT note_text
FROM productnotes
WHERE Match(note_text) Against('rabbit');
(3)使用查询扩展
(4)使用布尔文本搜索
Mysql支持全文本搜索的另外一种形式,称为布尔方式。它可以指定要匹配的词,要排斥的词,哪个词等级更高或更低等等.
如下:匹配包含heavy但不包含任意以rope开始的词的行
SELECT note_text
FROM productnotes
WHERE Match(note_text) Against('heavy -rope*' IN BOOLEAN MODE);
布尔操作符有+ - > < () ~ * ""等等第19章 插入数据
INSERT INTO Customers
VALUES(NULL,
...
);
第20章 更新和删除数据
更新数据
UPDATE customers
SET cust_name = 'The Fudds',
cust_email = 'aaa@qq.com'
WHERE cust_id = 10005;
删除数据
DELETE FROM customers
WHERE cust_id = 10006;
第21章 创建和操纵表
创建表
CREATE TABLE customers
(
cust_id INT NOT NULL AUTO_INCREMENT,
cust_name CHAR(50) NOT NULL,
PRIMARY KEY(cust_id)
)ENGINE = InnoDB;
每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通常使它成为主键)。
更新表
给表添加一列
ALTER TABLE customers
ADD cust_address CHAR(50);
删除一列
ALTER TABLE customers
DROP COLUMN ***;
增加外键
ALTER TABLE orderitems
ADD CONSTRAINT fk_orderitems_orders
FOREIGN KEY(order_num) REFERENCES orders(order_num);
删除表
DROP TABLE customers;
重命名表
RENAME TABLE customers TO customer;