数据库基础知识梳理

数据库基础

数据库(DataBase)-- 存储数据的仓库

1. 优点

存于数据库中的数据(优点)

  1. 可存储大量数据;
  2. 方便查询;
  3. 保持数据的一致性、完整性;
  4. 安全,可共享;
  5. 通过组合分析,可产生新数据。

关系数据库: 数据的逻辑组织是

2.发展历程

数据库发展历程:

  1. 没有数据库,使用磁盘文件存储数据;
  2. 层次结构模型数据库;
  3. 网状结构模型数据库;
  4. 关系结构模型数据库:使用二维表格来存储数据;
  5. 关系-对象模型数据库;
    MySQL就是关系型数据库!
    Java—面向对象;数据库—面向关系;二者之间有一个映射。

3.体系结构

数据库体系结构
数据库 – 硬盘
MySQL数据库管理系统(DBMS) – 运行在内存

DBMS : DataBaseManagerSystem 数据库管理系统
 所有对数据都要通过DBMS来进行, DBMS会将要操作的数据拷贝到内存中操作,只有在提交事务之后,在内存中所做的操作才会写入硬盘,真正变成永久保存。

SQL语言:结构化查询语言,是关系型数据库统一的操作语言

4.语句分类

SQL语句分类

  1. DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
  2. DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
  3. DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
  4. DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

语法汇总

1.数据库操作

  1. 查看所有数据库:SHOW DATABASES;
  2. 切换(选择要操作的)数据库:USE 数据库名;
  3. 创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1
  4. 修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8;

2.DDL 表操作

  1. 创建表(雇工表):CREATE TABLE emp( eid CHAR(6),ename VARCHAR(50));
  2. 查看当前数据库中所有表名称:SHOW TABLES;
  3. 查看表结构:DESC 表名;
  4. 删除表:DROP TABLE 表名;
  5. 修改表:前缀:ALTER TABLE 表名
    ADD(增加列) MODIFY(修改类型 ) DROP (删除列) 等

3.DML 数据操作(增、删、改)

  1. 插入数据: INTERT INTO 表名(列名1,列名2,...) VALUES(列值1, 列值2,...)
  2. 修改数据:UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ... [WHERE 条件]
  3. 删除数据:DELETE FROM 表名 [WHERE 条件];

4.DCL 数据控制

使用root登录(此时权限最大),而后进行权限操作

  1. 创建用户:

(1)CREATE USER 用户名@IP地址 IDENTIFIED BY ‘密码’;
用户只能在指定的IP地址上登录
(2)CREATE USER 用户名@’%’ IDENTIFIED BY ‘密码’;
用户可以在任意IP地址上登录

2.给用户授权

(1)GRANT 权限1, … , 权限n ON 数据库.* TO 用户名@IP地址
权限、用户、数据库
给用户分派在指定的数据库上的指定的权限
例如:GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;

  1. 撤销授权

REVOKE delete ON mydb1.* FROM user1@localhost;
验证方法:使用user1登录,而后切换到mydb1数据库,执行delete操作将错误。具体如下:
(1)mysql -uuser1 -p123
(2) use mydb1;
(3)delete from stu;

  1. 查看权限

SHOW GRANTS FOR 用户名@IP地址
查看指定用户的权限
如:SHOW GRANTS FOR user1@localhost;

  1. 删除用户

DROP USER 用户名@IP地址
如:DROP USER user1@localhost;
此时再用user1登录将出错。

5.DQL 数据查询 *

  1. 查询所有列
 SELECT * FROM 表名;
  1. 查询指定列
SELECT1 [,2, ... 列N] FROM 表名;
  1. 去重查询
SELECT DISTINCT * |1 [,2, ... 列N] FROM 表名;
  1. 字符串类型做连续运算(拼接)
Java中字符串连接符号为+;
Oracle中字符串连接符号为||;
MySQL中字符串连接符号为CONCAT ;
 例如:SELECT CONCAT('$', sal) FROM emp;
 又如:select concat(ename,job) from emp;
      select concat('my name is ',ename, ' my job is ',job) from emp;
  1. 条件控制
与前面介绍的UPDATEDELETE语句一样,SELECT语句也可以使用WHERE子句来控制记录。
说明:条件必须是一个boolean类型的值或表达式;
运算符:=!=<>><>=<=BETWEEN...ANDIN(...)IS NULLNOTORAND
  1. 模糊查询
SELECT * FROM emp WHERE ename LIKE '%';
注意:这个条件等同于不存在(该条件有无均可,既可以去掉),但如果姓名为NULL的查询不出来!
查询姓名中第二个字符为“h”的所有员工。
SELECT * FROM emp WHERE ename LIKE '_h%';
  1. 排序
 1 SELECT * FROM  emp ORDER BY sal ASC;
 按sal排序,升序!
 ASC升序   可以省略
 DESC降序  不能省略
 2 使用多列作为排序条件
SELECT * FROM emp ORDER BY sal ASC, comm DESC;
 --> 使用sal升序排,如果sal相同时,使用comm的降序排。
SELECT * FROM emp ORDER BY sal ASC, comm DESC,empno ASC;
 --> 使用sal升序排,如果sal相同时,使用comm的降序排,如果sal和comm都相同时,使用empno升序排列。
  1. 聚合函数
    聚合函数用来做某列的纵向运算。
    COUNT-- SELECT COUNT(comm), COUNT(mgr) FROM emp;
    功能:统计指定列不为NULL的记录行数;
    SUM-- SELECT SUM(sal) FROM emp;
    功能:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
    AVG -- SELECT AVG(sal) FROM emp;
    功能:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0。
    MAX-- SELECT MAX(sal) FROM emp;
    功能:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算
    MIN-- SELECT MIN(sal) FROM emp;
    功能:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算。

  2. 分组查询
    分组查询是把记录使用某一列进行分组, 然后查询组信息。
    SELECT job, COUNT(*) FROM emp GROUP BY job;
    分组后条件: HAVING后的条件部分必须使用聚合函数作为条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值