美文网首页
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必知必会

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