美文网首页
MySQL必知必会

MySQL必知必会

作者: upup果 | 来源:发表于2020-11-16 08:53 被阅读0次

数据库基础

  • 数据库:保存有组织的数据的容器
  • 表:某种特定类型数据的结构化清单
  • 模式:关于数据库和表的布局和特征的信息
  • 行:表中的一个记录
  • 列:表中的一个字段,所有表都是由一个或多个列组成的。
  • 主键:一列(或一组列),其值能够唯一标识表中每一行。
  • SQL:结构化查询语言,专门与数据库沟通、标准SQL由ANSI标准委员会管理,从而称为ANSISQ。

检索数据

SELECT 语句

检索单个列

SELECT column_name FROM table_name;

检索多个列

多个列之间用逗号隔开,最后一个列不加:
SELECT col1,col2,col3 FROM table_name;

检索所有列

使用通配符 * :SELECT * FROM table_name;

检索不同值

使用DISTINCT关键字,放在列名的前面:
SELECT DISTINCT column_name FROM table_name;

限制检索

使用LIMIT和OFFSET关键字:
限制结果不超过5行:SELECT col_name FROM table_name LIMIT 5;
第五行起的5行:SELECT c_name FROM t_name LIMIT 5 OFFSET 5;

注释

--行注释
/* */多行注释

使用ORDER BY排序检索数据

在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。

排序单列数据

SELECT col_name FROM tab_name ORDER BY col_name;

多列排序

多列之间用逗号隔开:
SELECT col1,col2,col3 FROM table_name ORDER BY col1,col2;

降序排序

默认排序是升序方式,可以使用DESC关键字对列进行降序排序:
SELECT col1,col2 FROM table_name ORDER BY col1 DESC;

过滤数据

使用WHERE过滤数据

在SELECT语句中,根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出:
SELECT col1 FROM tab_name WHERE col=xxx;

WHERE字句操作符

where.png

高级过滤查询

组合WHERE字句

AND操作符:可以增加多个过滤条件,每个条件间都要使用AND关键字
OR操作符:用来表示检索匹配任一给定条件的行
具有AND和OR操作符的WHERE子句,应该用圆括号明确地分组操作符
IN操作符:指定条件范围,每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。功能与OR相当

用通配符过滤

LIKE操作符

%通配符

%表示任何字符出现任意次数:WHERE prod_name LIKE 'Fish%'表示,将检索任意以Fish起头的词。%告诉DBMS接受Fish之后的任意字符,不管它有多少。
搜索模式'%bean bag%'表示匹配任何位置上包含文本bean bag的值,不论它之前或之后出现什么字符。

_通配符

下划线的用途与%一样,但它只匹配单个字符,而不是多个字符
配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。这里给出一些使用通配符时要记住的技巧。

  • 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
  • 在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
  • 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

创建计算字段

计算字段并不实际存在于数据库表中。计算字段是运行时在SELECT语句内创建的
拼接字段:||
去掉空格: TRIM,LTRIM,RTRIM
起别名: AS

函数使用

常用函数

常用函数.png

汇总数据

聚集函数

聚集函数.png

分组数据

创建分组:分组是使用SELECT语句的GROUP BY子句建立的
过滤分组:HAVING,WHERE过滤行,而HAVING过滤分组。
WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤
SELECT子句顺序

select字句顺序.png

使用子查询

嵌套where:WHERE子句中使用子查询能够编写出功能很强且很灵活的SQL语句。对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询

联结表

创建联结

指定要联结的所有表以及关联它们的方式即可
SELECT vend_name, prod_name, prod_price
FROM Vendors, Products
WHERE Vendors.vend_id = Products.vend_id;

内联结

SELECT vend_name, prod_name, prod_price
FROM Vendors INNER JOIN Products ON Vendors.vend_id = Products.vend_id;
以上两个表之间的关系是以INNER JOIN指定的部分FROM子句。在使用这种语法时,联结条件用特定的ON子句而不是WHERE子句给出。传递给ON的实际条件与传递给WHERE的相同。

SQL不限制一条SELECT语句中可以联结的表的数目。创建联结的基本规则也相同。首先列出所有表,然后定义表之间的关系。

高级联结

表起别名:FROM Customers AS C, Orders AS O, OrderItems AS OI
WHERE C.cust_id = O.cust_id

自然联结:自然联结要求你只能选择那些唯一的列,一般通过对一个表使用通配符(SELECT *),而对其他表的列使用明确的子集来完成。
外联结:使用OUTER JOIN语法时,使用LEFT OUTER JOIN从FROM子句左边的表中选择所有行。为了从右边的表中选择所有行,需要使用RIGHT OUTER JOIN。

组合查询

UNION:可用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将它们的结果组合成一个结果集,如下所示:
SELECT cust_name, cust_contact, cust_email
FROM Customers WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers WHERE cust_name = 'Fun4All';

插入数据

INSERT INTO Customers(cust_id, cust_name,
cust_address, cust_city,
cust_state, cust_zip,
cust_country, cust_contact, cust_email)
VALUES('1000000006', 'Toy Land',
'123 Any Street', 'New York',
'NY', '11111', 'USA',
NULL, NULL);

更新和删除数据

更新
UPDATE Customers
SET cust_contact = 'Sam Roberts',
cust_email = 'sam@toyland.com'
WHERE cust_id = '1000000006';
删除
DELETE FROM Customers
WHERE cust_id = '1000000006';

创建和操纵表

创建表
CREATE TABLE OrderItems ( order_num INTEGER NOT NULL,
order_item INTEGER NOT NULL,
prod_id CHAR(10) NOT NULL,
quantity INTEGER NOT NULL DEFAULT 1, item_price DECIMAL(8,2) NOT NULL
);

更新表
ALTER TABLE Vendors
DROP/ADD COLUMN vend_phone;
删除表
DROP TABLE CustCopy;
重命名表:使用RENAME语句
未完待续...

相关文章

  • MySql 创建和操纵表

    创建表 更新表 参考书籍: MySQL必知必会

  • mysql必知必会

    2018年7月13日笔记 1.数据库的介绍 1.1 什么是数据库 数据库是按照数据结构来组织、存储和管理数据的仓库...

  • Mysql必知必会

    1.表中的任何列都可以作为主键, 只要它满足以下条件:任意两行都不具有相同的主键值;每一行都必须具有一个主键值( ...

  • MySQL必知必会

    分页 方式1:select * from table order by id limit m, n;该语句的意思为...

  • 《Mysql必知必会》

    厚道的人运气都不会太差,我们永远相信会有美好的事情发生

  • 必知必会 - Mysql

    存储引擎InnoDB InnoDB 底层存储结构为B+树, B树的每个节点对应innodb的一个page,page...

  • Mysql必知必会!

    数据库 1. 数据库概述 1.1 数据库概述 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按...

  • MYSQL必知必会

    第一章:了解SQL 数据库概念、表、列和数据类型、行、主键 第二章:MYSQL简介 1、mysql是一种DBMS(...

  • mysql必知必会

    title: mysql必知必会date: 2019-11-21tags: 笔记categories: sql ...

  • MySQL 必知必会

    使用MySQL ​ use 和 show 的基本使用 返回可用数据库的一个列表show database...

网友评论

      本文标题:MySQL必知必会

      本文链接:https://www.haomeiwen.com/subject/hvcvbktx.html