加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL呼吁,一篇文章替你所有搞定

发布时间:2019-03-01 15:32:57 所属栏目:编程 来源:Java高级技术
导读:MySQL的根基操纵可以包罗两个方面:MySQL常用语句如高频率行使的增编削查(CRUD)语句和MySQL高级成果,如存储进程,触发器,事宜处理赏罚等。而这两个方面又可以细分如下: MySQL常用语句 表(可能数据库)的CRUD 表数据的CRUD,个中表数据查询行使最多,也更

GROUP BY的行使留意事项: (1)GROUP BY子句中可以嵌套分组(即通过多个罗列办分组GROUP BY cust_id, cust_name),可是举办数据汇总时,是在最后划定的分组长举办;(2)GROUP BY子句中列出的每个列都必需是检索列可能是有用的表达式。(3)假若有NULL值,将值NULL作为一个分组举办返回,假若有多行NULL值,它们将分为一组

嵌套其他查询中的查询,称之为子查询。执行进程由里向外,里层查询功效作为外层查询的前提:SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'happy')。虽然,多表的查询可所以用联络查询。

联络查询

内联络用又称之为内部联络,是基于两个表 之间的的相称测试。假如不加过滤前提,会造成“笛卡尔积”。SELECT vend_name,prod_name,prod_price FROM vendors INNER JOIN products ON vendors.vend_id=products.vend_id;同样可以行使WHERE举办多表联络查询,可是更保举行使INNER JOIN等联络方法;

外部联络包罗左外联络LEFT JOIN和右外联络RIGHT JOIN和全毗连FULL JOIN。譬喻查询每个客户的订单数:SELECT customers.cust_id,orders.orders_num FROM customers LEFT JOIN orders ON orders.cust_id =customers.cust_id;LEFT JOIN 会所有返回左表数据,RIGHT JOIN会所有返回右表数据,FULL JOIN会将阁下两个表的数据所有返回;

联络查询与聚积函数一路行使。如查询每个客户的订单数:SELECT customers.cust_name,customers.cust_id,COUNT(orders.order_num) AS num_ord FROM customers INNER JOIN orders ON customers.cust_id=orders.cust_id GROUP BY customers.cust_id;

组合查询

多个查询(SELECT)可以行使UNION将多个查询功效举办归并成一个功效集返回,UNION必需包括两个及两个以上的SELECT查询,而且每个传必需包括沟通的列、表达式或聚积函数,数据范例不必完全沟通,MySQL会举办隐式的范例转换。SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price>5 UINON SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002);

UNION返回的是去重后的功效,,假如不必要去重则可以行使UNION ALL;

可以多组合查询行使ORDER BY举办排序,可是是针对的最终的功效集举办排序,而不是个中单个SELECT查询举办排序,因此对付组合查询来说ORDER BY子句只有一个。SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price>5 UINON SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002) ORDER BY vend_id

行使函数对数据举办处理赏罚

拼接列名:SELECT Concat (vendName,'(',vendCountry,')') FROM vendors ORDER BY vendName;

执行算术表达式计较:SELECT prodId, quantity,price, quantity*price AS expandedPrice FROM orderItems;

文本处理赏罚函数如Upper(),LTrim(),RTrim()等函数。好比行使Upper函数将文本转换成大写:SELECT vendName, Upper(vendName) FROM vendors ORDER BY vendName;

时刻和日期处理赏罚函数,如Date(),Day()等。SELECT custId, orderNum FROM orders WHERE Date(orderDate)='2015-09-01';

数值处理赏罚函数,如Abs(),Cos()等;

常用的聚积函数。如AVG(),COUNT(),MAX(),MIN()以及SUM()。SELECT COUNT(*) AS numbers, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max,AVG(prod_price) AS price_avg FROM products;

2.2 插入表数据

向表中插入行数据可以行使INSERT INTO子句,更安详的方法是指定列名。INSERT INTO customers (cust_name, cust_email) VALUES('happy','happy@gmail.com');在INSERT INTO子句中可以或许省略列名的条件前提是:该列可以应承界说为NULL值可能在界说该列时给出去了默认值;

假如插入多行数据可以将多组值用逗号举办脱离即可。INSERT INTO customers (cust_name, cust_email) VALUES('happy','happy@gmail.com'),('smart','smart@gmail.com');

将查询出来的数据插入表中,可以行使INSERT SELECT语句。INSERT INTO customers(cust_id,cust_contact) SELECT cust_id, cust_contact FROM customers WHERE cust_id>5;个中SELECT中可以带WHERE过滤前提;INSERT SELECT凡是被用于复制表数据

2.3 更新表数据

假如要更新表数据的话,行使UPDATE子句:UPDATE customers SET cust_name ='happy',cust_email='happy@gmail.com' WHERE cust_id = 1001;

留意:假如不加WHERE前提指定到某一行的话,会更新表中某一列所有的数据。

2.4 删除表数据

假如从表中删除数据的话,可以行使DELETE子句。DELETE FROM customers WHERE cust_id = 10086;删除的数据一定是表中行数据,而不是某一列。因此,与UPDATE子句对比,DELETE子句并不必要指定是哪一列,而仅仅只必要指定详细的表名即可;

留意:假如不添加WHERE指定前提的话,会将整个表中全部行数据所有删除。其它,DELETE只是删除表中的数据,而不会删除表布局信息;

假如想删除表中所有的数据,可以行使TRUNCATE,比DELETE删除服从更高;

3. SQL中要害字执行次序

在SQL语句中每个要害字城市凭证次序往下执行,而每一步操纵,会天生一个假造表,最后发生的假造表会作为执行的最终功效返回。下面的是常用的要害字的执行次序:

MySQL呼吁,一篇文章替你所有搞定

FROM:对FROM左边的表和右边的表计较笛卡尔积,发生虚表VT1;

ON:对假造表VT1举办ON筛选,只有那些切合前提的行才会被记录在假造表VT2中;

JOIN:假如是OUT JOIN,那么将保存表中(如左表可能右表)未匹配的行作为外部行添加到假造表VT2中,从而发生假造表VT3;

WHERE:对假造表VT3举办WHERE前提过滤,只有切合的记录才会被放入到假造表VT4;

GROUP BY:按照GROUP BY子句中的列,对假造表VT4举办分组操纵,发生假造表VT5;

CUBE|ROLLUP:对假造表VT5举办CUBE可能ROLLUP操纵,发生假造表VT6;

HAVING:对假造表VT6举办HAVING前提过滤,只有切合的记录才会被插入到假造表VT7中;

SELECT:执行SELECT操纵,选择指定的列,插入到假造表VT8中;

DISTINCT:对假造表VT8中的记录举办去重,发生假造表VT9;

ORDER BY:将假造表VT9中的记录凭证举办排序操纵,发生假造表VT10;

LIMIT:取出指定行的记录,发生假造表VT11,并将功效返回。

4. 索引

MySQL索引的成立对付MySQL的高效运行是很重要的,索引可以大大进步MySQL的检索速率。索引分单列索引和组合索引。单列索引,即一个索引只包括单个列,而组合索引,即一个索引包括多个列。

4.1 建设索引

建设索引有两种方法,一种是直接操作CREATE INDEX举办建设,其它一种则是通过修改表布局来举办添加,则是操作ALTER TABLE语句。

行使CREATE INDEX

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读