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

基础数据库学习

作者: 抬头挺胸才算活着 | 来源:发表于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