介绍
使用文件系统存储数据并不是很好的选择:
1. 对数据的管理不方便
任何一个数据的修改,都要保存全部的数据
2. 数量大了以后,读写速度很慢
在企业中使用数据库软件来管理需要存储的数据
数据库:用来组织、存储和管理数据的仓库软件。
常见的数据库软件:MySQL、Oracle 和 SQLServer 等
Oracle(甲骨文):主打产品是数据库,收购了:Java 和 MySQL
MySQL:开源免费,中小企业广泛使用
Oracle:收费的,大中型企业广泛使用
MySQL 是一款关系型数据库管理系统(Relational Database Management System,RDBMS)
关系型:以关系模型组织数据(二维表格形式,excel)
最新版本是 8.0,企业中用的更多的是 5.7
5.7 下载地址:https://dev.mysql.com/downloads/file/?id=478884
下载的压缩包(免安装版本,绿色版本)解压配置后即可使用
基本操作
mysql == 硬盘
database == 文件夹
table == excel
先创建 database 在创建 table 最后向 table 中添加数据
table 由行(row)和列(column)组成
一行对应一条完成的数据,也叫做记录
一列对应一个属性,也叫做字段,每个属性都有名字和类型
作为一行记录的唯一标识的列,称为主键(primay key)
为了提高查询的效率,会创建一种类似书籍目录的结构,叫做索引(index)
SQL(结构化查询语言)是操纵关系型数据库的通用计算机语言
各个数据库都对 SQL 做出了扩展,增加了自己独有的语法,这部分内容是不通用的
CREATE,ALTER,DROP
创建,修改,删除 database 和 table
SELECT,INSERT,UPDATE,DELETE
查询,添加,修改,删除 table 中的数据
每条 SQL 语句都以 ; 结尾
windows 版本的 MySQL 不区分大小写,良好的习惯是关键字都大写
列出 MySQL 中的所有 database
SHOW DATABASES;
创建 database
CREATE DATABASE IF NOT EXISTS `数据库名字`;
数据库名字:全部小写,多个单词之间以 _ 分隔
zhiyou_107_test
使用 database
USE `数据库名字`;
创建 table
CREATE TABLE IF NOT EXISTS `表名` (
`列名1` 数据类型,
`列名2` 数据类型,
...
`列名n` 数据类型
);
CREATE TABLE IF NOT EXISTS `student`(
`number` int,
`name` varchar(10),
`age` int
);
整数:
TINYINT 1 字节
INT 4 字节
BIGINT 8 字节
小数:
double 双精度浮点数
decimal 精确小数
日期:
date yyyy-MM-dd
datetime yyyy-MM-dd HH:mm:ss
timestamp 时间戳
字符串:
char(10) 定长 #######aaa,读写效率高
varchar(10) 变长 aaa,节省存储空间
使用 alter 为 table 增加一列
ALTER TABLE `表名` ADD COLUMN `列名` 数据类型;
ALTER TABLE `student` ADD COLUMN `gender` char(1);
ALTER TABLE `student` ADD COLUMN `birthday` date;
列出 database 中所有的 table
SHOW TABLES;
查询 table 中的所有数据
SELECT 列名1, 列名2,... FROM `表名`;
SELECT name, gender FROM student;
使用 * 表示所有列
SELECT * FROM `student`;
使用 as 为列名起一个别名
SELECT name as 姓名, gender as 性别 FROM student;
向 table 中插入数据
INSERT INTO `表名` VALUES(值1, 值2,...);
INSERT INTO `student` VALUES(1001, '蝙蝠侠', 35);
修改 table 中的数据
UPDATE `表名` SET `列名1`=值1, `列名2`=值2;
UPDATE `student` SET `age`=40 WHERE name='蝙蝠侠';
删除 table 中的数据
DELETE FROM `表名`
DELETE FROM `student`;
SELECT,UPDATE 和 DELETE 默认都是对表中的每一行数据进行操作
如果需要把操作限制到某一区域,需要使用 WHERE 子句
WHERE 过滤操作的数据
WHERE 列名 操作符 值
操作符:> < = != >= <=
多条件使用 and 或者 or 进行连接
SELECT * FROM student WHERE number > 1001 and age < 30;
SELECT * FROM student WHERE age < 30 or number > 1002;
字符串也使用 = 进行等值比较
SELECT * FROM student WHERE gender='男';
字符串使用 _ 和 % 通过 LKIE 进行模糊查询
_ 表示任意一个字符
_侠 == X侠
% 表示任意个字符
%侠 == 以 '侠' 结尾的字符串
SELECT * FROM student WHERE name LIKE '%侠'