mysql必知必会 数据源_《MySQL必知必会》看这篇就够了

连接mysql

在terminal中连接mysql,输入以下指令:USE crashhouses;SHOW DATABASES:SHOW TABLESSHOW COLUMNS FROM customers;SHOW STATUS

连接数据库USE crashhouses;SHOW DATABASES:SHOW TABLESSHOW COLUMNS FROM customers;SHOW STATUS

SELECT,DISTINCT,LIMIT语句SELECT name FROM products ORDER BY name; --排序SELECT name,id FROM products ORDER BY name,id; --选择多个列排序--DESC关键字只应用与其前面的列名,不能部分使用DESC。SELECT name FROM products ORDER BY name DESC,id; --指定降序--LIMIT 必须位于ORDER BY 之后

ORDER BY语句--ORDER BY 位于 WHERE 之后SELECT name,id FROM products WHERE name = 'lucky' ORDER BY id; -- WHERE 的操作符有>,=,

WHERE语句SELECT id, price FROM productsWHERE id=1003 AND price<=10;SELECT id, price FROM productsWHERE id=1003 OR id=1000;-- 括号改变计算的次序SELECT id, price FROM productsWHERE (id=1003 or id=1000) AND price<=10;SELECT id, price FROM productsWHERE id IN(1003,1006);SELECT id, price FROM productsWHERE id NOT IN(1003,1006);

AND, OR, IN, NOT操作符-- '%'表示任何字符出现任意次数;'_'只匹配单个字符SELECT name FROM productsWHERE name LIKE '_jet%';

LIKE 操作符-- '%'表示任何字符出现任意次数;'_'只匹配单个字符SELECT name FROM productsWHERE name LIKE '_jet%';

REGEXP

LIKE 匹配整个列,REGEXP在列值内匹配

具体规则参考正则式符号SELECT name FROM productsWHERE name REGEXP '^jet.*';SELECT id*2+1 AS new_id,Concat(RTrim(name),'(',LTrim(country),')')AS vend_titleFROM vendersORDER BY name;

文本处理函数

函数直接作用于选中列Upper(), Lower(), Locate(), Length()

Left(), Right(), LTrim(), RTrim()

Soundex(), SubString()

日期时间处理函数

具体的函数到用的时候再查找

数值处理函数Abs(), Cos(), Exp(), Mod()

Pi(), Rand(), Sin(), Sqrt(), Tan()

聚集处理函数AVG(), COUNT(), MAX(), MIN(), SUM()

GROUP BY 语句GROUP BY 的时候,所有列一起计算

GROUP BY 子句包含任意数目的列

GROUP BY 子句列出的每个列必须是检索列或者有效的表达式(不能是聚集函数)。如果SELECT中使用表达式,则必须在GROUP BY 子句中使用相同的表达式,而不是别名

除聚集计算语句外,SELECT中选中的每个列必须在GROUP BY 子句中给出。

NULL 作为一个分组返回

GROUP BY 子句中在 WHERE之后,ORDER BY之前。SELECT id, name, COUNT(*) AS num_prodsFROM productsWHERE id>1001 AND id < 1003GROUP BY id, nameORDER BY id;

HAVING 语句

WHERE 过滤行,HAVING过滤组

HAVING 不使用别名SELECT id, name, COUNT(*) AS num_prodsFROM productsWHERE id>1001 AND id < 1003GROUP BY id, nameHAVING COUNT(*)>= 3ORDER BY id;

SELECT子句顺序

顺序如下:SELECT,FROM, WHERE, GROUP BY, HAVING ,ORDER BY, LIMIT

使用子查询

可以将一个SELECT子句嵌套在另一个SELECT语句中。其中,列必须匹配,即具有相同的列数,可以使用多个列。

使用子查询不总是执行这种类型数据的最有效办法。可以使用连接表。SELECT id FROM ordersWHERE num IN (SELECT num FROM orderitems WHERE id ='TNT2');

使用WHERE连接SELECT vend_name, prod_name, prod_price FROM vendors ,productsWHERE vendors.vend_id = products.vend_id;

内部连接 INNER JOIN …ONSELECT vend_name, prod_name, prod_priceFROM vendors INNER JOIN productsON vendors.vend_id = products.vend_id;

联结多个表

使用表的别名

给使用的表起别名, 应用的时候运用别名。

使用不同类型的联结

自连接SELECT p1.id,p1.name FROM products AS p1, products AS p2WHERE p1.id=p2.id AND p2.id='DTNTR';

外部连接

LEFT INNER…ON, RIGHT INNER… ON

UNION 操作符

两个SELECT 语句间加上UNIONSELECT id FROM products WHERE id>1UNIONSELECT id FROM products WHERE id<1;

包含或者取消重复的行

UNION ALL 返回所有匹配行,包含重复的行;默认UNION,重复的行会被取消

Match() Against() 全文本搜索

在建立TABLE的时候,FULLTEXT()的列就是为了进行全文本搜索;

Match()的值必须与FULLTEXT()定义中的相同;SELECT note_text FROM productnotesWHERE Match(note_text) Against('rabbit');

使用查询扩展 WITH QUERY EXPANSIONSELECT note_text FROM productnotesWHERE Match(note_text) Against('rabbit')WITH QUERY EXPANSION;

布尔文本搜索 IN BOOLEAN MODESELECT note_text FROM productnotesWHERE Match(note_text) Against('rabbit' IN BOOLEAN MODE)

INSERT// 插入多个行INSERT INTO Customers(name,age)VALUES('lucky','18'),('Larry','23');//插入检索出的数据INSERT INTO Customers(name,age)SELECT(name,age) FROM CustomersOld;

UPDATE

可用来更新或清空指定的列UPDATE customersSET name='lucky',age='18'WHERE id=1000;//删除指定的列UPDATE customersSET mail=NULL;

DELETE

可用来删除指定的行或删除所有行DELETE FROM custometsWHERE id=10000;//快速的删除所有行TRUNCATE TABLE cus

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值