美文网首页
基础数据库学习

基础数据库学习

作者: 抬头挺胸才算活着 | 来源:发表于2020-04-04 20:31 被阅读0次

    参考资料:
    [1]. 菜鸟教程-MySQL 教程
    [2]. 正确理解MySQL中的where和having的区别

    DB:数据库,存储数据。
    DBMS:Management System,数据库是通过DBMS创建的。常见DBMS有MYSQL,Oracle,DB2,SqlServer。
    SQL:结构化查询语言。

    语法

    创建数据库:CREATE DATABASE 数据库名;

    删除数据库:DROP DATABASE <数据库名>;

    选择数据库:use DATABASE

    创建数据表:CREATE TABLE table_name (column_name column_type);

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(
       `runoob_id` INT UNSIGNED AUTO_INCREMENT,
       `runoob_title` VARCHAR(100) NOT NULL,
       `runoob_author` VARCHAR(40) NOT NULL,
       `submission_date` DATE,
       PRIMARY KEY ( `runoob_id` )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    删除数据表:DROP TABLE table_name ;(可以跟删除数据库进行对比)

    插入数据:

    INSERT INTO table_name ( field1, field2,...fieldN )
                           VALUES
                           ( value1, value2,...valueN );
    

    查询数据:

    SELECT column_name,column_name
    FROM table_name
    [WHERE Clause]
    [LIMIT N][ OFFSET M]
    

    LIMIT表示返回的条数
    OFFSET表示偏移
    WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。

    更新数据:

    UPDATE table_name SET field1=new-value1, field2=new-value2
    [WHERE Clause]
    

    删除数据:DELETE FROM table_name [WHERE Clause]

    模糊查询:field LIKE '模糊条件'

    %a表示以a结尾
    _a表示两个字符,以a结尾

    合并多个查询:

    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions]
    UNION [ALL | DISTINCT]
    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions];
    

    分组:

    SELECT column_name, function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name;
    

    例子:SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
    一般会搭配聚合函数一起使用,然后返回聚合的列和聚合函数的结果,返回的其他列是聚合后的第一个。

    连接:

    • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
    • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
    • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

    例子:
    SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
    相当于
    SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;

    正则表达式

    以aeiou开头或者以ok结尾

    SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

    ALTER

    当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。

    索引

    虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
    CREATE INDEX indexName ON mytable(username(length));
    ALTER table tableName ADD INDEX indexName(columnName)
    例子:
    create index idx_user_name on user(name);

    HAVING

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
    HAVING 子句可以让我们筛选分组后的各组数据。

    WHERE VS HAVING
    “Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。
    “HAVING”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。
    例子可以参见[2]

    相关文章

      网友评论

          本文标题:基础数据库学习

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