MySQL数据库基础

数据库管理系统概述
数据库(DB)是一种专门存储信息和维护信息的容器,严格地说数据库是“按照数据结构来组织、存储和管理信息的仓库”。
数据库管理系统(Database Management System-DBMS)管理数据库的软件。具有对数据存储、安全、一致性、并发操作、恢复和访问等功能。关系型数据库管理系统(RDBMS)是应用最广泛的一种数据库管理系统,关系型数据库管理系统以表、字段和记录等结构来组织数据。表用来保存数据,每个表由一组字段来定义其结构,记录则是表中的一条数据。
关系数据库是指一些相关的表和其他数据库对象的集合。对于关系数据库来说,关系就是表的同义词。
表是由行和列组成(类似二维数组的结构)。
列包含一组命名的属性(也称字段)。
行包含一组记录,每行包含一条记录。
行和列的交集称为数据项,指出了某列对应的属性在某行上的值,也称为字段值。
列需定义数据类型,比如整数或者字符型的数据。
存储引擎
存储引擎就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎简而言之就是指表的类型。数据库的存储引擎决定了表在计算机中的存储方式。
在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySQL数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎,MySQL的核心就是存储引擎。

InnoDB存储引擎
InnoDB存储引擎的特点:
支持外键(Foreign Key)
支持事务(Transaction):如果某张表主要提供OLTP支持,需要执行大量的增、删、改操作(insert、delete、update语句),出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。
最新版本的MySQL已经开始支持全文检索。

MyISAM存储引擎
MyISAM存储引擎的特点:
MyISAM具有检查和修复表的大多数工具。
MyISAM表可以被压缩
MyISAM表最早支持全文索引
但MyISAM表不支持事务
但MyISAM表不支持外键(Foreign Key)。
如果需要执行大量的select语句,出于性能方面的考虑,MyISAM存储引擎是更好的选择。

MEMORY存储引擎
MEMORY存储引擎的特点:
MEMORY存储引擎是MySQL中一类特殊的存储引擎。该存储引擎使用存在于内存中的内容来创建表,每个表实际对应一个磁盘文件,格式为.frm。这类表因为数据在内存中,且默认使用HASH索引,所以访问速度非常快;但一旦服务关闭,表中的数据会丢失。
每个MEMORY表可以放置数据量的大小受max_heap_table_size系统变量的约束,初始值为16MB,可按需求增大。此外,在定义MEMORY表时可通过MAX_ROWS子句定义表的最大行数。
该存储引擎主要用于那些内容稳定的表,或者作为统计操作的中间表。对于该类表需要注意的是,因为数据并没有实际写入磁盘,一旦重启,则会丢失。
MySQL5.7默认的默认的存储引擎是InnoDB。

存储引擎的选择
不同存储引擎都有各自的特点,以适应不同的需求
MySQL存储引擎功能对比
功 能 InnoDB MyISAM Memory
存储限制 64TB 256TB RAM
支持事务 支持 无 无
空间使用 高 低 低
内存使用 高 低 高
支持数据缓存 支持 无 无
插入数据速度 低 高 高
支持外键 支持 无 无

**

下面是一些查询语句的练习

**
1.查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的员工姓名、入职时间、职位。
2.查询员工姓名的第三个字母是a的员工姓名。
3.查询除了10、20号部门以外的员工姓名、部门编号。
4.查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。
5.查询没有上级的员工(经理号为空)的员工姓名。
6.查询工资大于等于4500并且部门为10或者20的员工的姓名\工资、部门编号。
7.查询部门编号是20的员工信息。
8.查询工作为CLERK的员工号、员工名和部门号。
9. 查询奖金COMM高于工资SAL的员工信息。
10. 查询奖金高于工资20%的员工信息。
11. 查询部门编号是10并且工作为MANAGER的员工和部门编号是20并且工作是CLERK的员工信息。
12. 查询工作不是MANAGER和CLERK,并且工资大于或等于2000的员工信息。
13. 查询有奖金的员工信息。
14. 查询没有奖金或奖金低于100的员工信息。
15. 查询员工名正好为6个字母的员工信息。
16. 查询员工名字中不包含字母S的员工。
17. 查询员工姓名的第二个字母为M的员工信息

SELECT ename,hiredate,job FROM emp WHERE hiredate>'1982-07-09' AND job != 'salesman'
SELECT ename FROM emp WHERE ename LIKE '__a%'
SELECT ename,deptno FROM emp WHERE deptno NOT IN (10,20)
(SELECT * FROM emp WHERE deptno = 30 ORDER BY sal DESC) ORDER BY ename
SELECT ename FROM emp WHERE mgr IS NULL
SELECT ename,sal,deptno FROM emp WHERE sal>4500 AND deptno IN (10,20)



SELECT * FROM emp WHERE deptno = 20
SELECT empno,ename,deptno FROM emp WHERE job = 'clerk'
SELECT * FROM emp WHERE comm>sal
SELECT * FROM emp WHERE comm>sal*0.2
SELECT * FROM emp WHERE (deptno=10 AND job='manager') OR (deptno=20 AND job='clerk')
SELECT * FROM emp WHERE job NOT IN ('manager','clerk') AND sal>=2000
SELECT * FROM emp WHERE comm IS NOT NULL
SELECT * FROM emp WHERE comm IS NULL OR comm<100
SELECT * FROM emp WHERE ename LIKE '______'
SELECT * FROM emp WHERE ename NOT LIKE '%s%'
SELECT * FROM emp WHERE ename LIKE '_M%'

概念都是从网上和书上找的,算不算原创,我很方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看到代码就头秃的秃头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值