1. 概述
- 数据存储
- 人工管理 储存量有限,共享麻烦,操作混乱
- 文件管理 优点:可长期保存,存储大量数据,使用简单缺点: 一致性差,查找不便,冗余比较大
- 数据库管理 优点:降低冗余度,提高增删改查效率,易扩展,便调用缺点: sql或特定语句,相对比较专业
- 基本概念数据库: 按照数据一定结构,存储管理数据的仓库。数据库是在数据库管理系统管理和控制下,在一定介质上的数据集合。
- 数据库管理系统: 管理数据库的软件,用于建立和维护数据库。
- 关系型: 采用关系模型(二维表)来组织数据结构的数据库,如Oracle、SQL_Server、MySQL非关系型: 不采用关系模型组织数据结构的数据库,如:MongoDB、Redis
2. MySQL
TcX --> Sun -- > Oracle
- 特点
- 是开源数据库,使用C和C++编写
- 能够工作在众多不同的平台上
- 提供了用于C、C++、Python、Java、Perl、PHP、Ruby众多语言的API
- 存储结构优良,运行速度快
- 功能全面丰富
- 是开源数据库,使用C和C++编写
- 安装
- Linux安装MySQL服务
- 终端执行:sudo apt install mysql-server
- 配置文件:/etc/mysql
- 数据库存储目录:/var/lib/mysql
- windows
- Linux安装MySQL服务
- 启动和连接MySQL服务
- 服务端启动
- 查看MySQL状态 sudo service mysql status
- 启动/停止/重启sudo service mysql / start / restart
- 连接数据库
mysql -h 主机地址 -u 用户名 -P
注意回车后输入数据库密码如果链接自己主机数据库可省略-h选项- 关闭连接ctrl + DexitMySQL 数据库结构数据元素---> 记录 ---> 数据表 --->数据库基本概念解析
- 数据表(table): 存放数据的表格
- 字段(column): 每个列,用来不表示该列数据的含义
- 记录(row) : 每行,表示一组完整的数据3. SQL语言
- 什么是SQL结构化查询语言(Structured Query Language),一种特殊目的的编程语言,是一种数据查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
- SQL语言特点
- SQL语言基本上独立于数据库本身
- 各种不同的数据库对SQL语言的支持与标准存在着细微的不同
- 每条命令以;结尾
- SQL命令(除了数据库名和表名)关键字和字符串可以不区分字母大小写4. 数据库管理
- 默认库:
- information_schema :用户信息数据库,提供访问数据库元数据的方式。保存服务器维护的所有其它数据库的信息
- mysql :核心数据库,主要负责存储数据库用户、权限设置、关键字等mysql控制和管理信息sys 所有数据来源于performance_schema:目标是把performance_schema复杂度降低performace_schema 收集数据服务器性能参数。
- hive 自建数据库
- 创建库
create database 库名 [character set utf8]
# 创建stu数据库,编码为utf8
create database stu character set utf8;
create database stu character=utf8;注意:库名的命令- 数字、字母、下划线,但不能使用纯数字
- 库名区分字母大小写
- 不要使用特殊字符和mysql关键字
- 切换库
- use 库名;# 使用 stu 数据库
use stu;
- use 库名;# 使用 stu 数据库
- 查看当前所在库
- select database();
- 删除库
- drop database 库名;# 删除 seasiloDB数据库
drop database seasiloDB5. 数据表管理
- drop database 库名;# 删除 seasiloDB数据库
- 基本思考过程
- 确定存储内容
- 明确字段构成
- 确定字段数据类型
- 基础数据类型
- 数字类型
- 整数类型:INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT
- 浮点类型: FLOAT, DOUBLE, DECIMAL
- 比特值类型:BIT
- 字符串类型
- 普通字符:CHAR, VARCHAR
- 存储文本:TEXT
- 存储二进制数据:BLOB
- 存储选项型数据:ENUM, SET
- 注意:
- char: 定长,即指定存储字节数后,无论实际存储了多少字节数据,最终都占指定的字节大小 。默认只能存1字节数据。存取效率高。
- varchar:不定长,效率偏低,但是节省空间,实际占用空间根据实际存储数据大小而定。必须要指定存储大小varchar(50)
- enum用来存储给出的多个值中的一个值,即单选,enum(“A”,“B","C")
- set用来存储给出的多个值中一个或多个值,即多选,set(‘A’,'B','C')
- 数字类型
- 服务端启动
3. 表的基本操作
- 创建表create table 表名(字段名 数据类型 约束,字段名 数据类型 约束,...字段名 数据类型 约束 )
- 字段约束设置数字为无符号则加上UNSIGNED字段不为NULL可设置字段属性为NOT NULL
- DEFAULT 设置字段默认值
- COMMENT 增加字段说明
- AUTO_INCREMENT 定义列为自增的属性,一般用于主键,数值会自动加1.
- PRIMARY KEY 关键字用于定义列为主键。 主键的值不能重复,且不能为空。
- # 创建班级表
- create table class (id int primary key auto_increment,name varchar(32) not null,age tinyint unsigned not null,sex enum('w','m'),score float default 0.0);
- # 创建兴趣班表
- create table hobby (id int primary key auto_increment,name varchar(32) not null,hobby set('sing','dance','draw'),level char not null,price decimal(6,2),remark text);
- 字段约束
- show tables;
- 查看表结构
- desc 表名;
- 查看数据表创建信息
- show create table 表名;
- 删除表
- drop table 表名;
- 6. 表数据基本操作
- 插入(insert)
- 以记录为单位,一次插入一行记录;字符串须引起来;
- insert into 表名 values(值1,值2....),(值1,值2),...;
- insert into 表名 (字段1,....) values (值1,值2),...;
- insert into class values (2,'Toby',19,'m',99),(1,'Sam',12,'m',90);
- insert into class (name,age,sex,score) values ('Toby',28,'m',99);
- 查询(select)
- select * from 表名 [where 条件]; select 字段1,字段2 from 表名 [where 条件];
- select * from class; select name,age from class;
- where 子句 where子句在sql语句中扮演了重要角色,主要通过一定的运算条件进行数据的筛选,在查询、删除、修改中使用。
- 算数运算符
- 运算符作用+ - * / %加 减 * / 余# 示例 select * from class_1 where age % 2 = 0;
- 比较运算符
- 符号描述= != > < <= >=等,不等,大小于
- BETWEEN 在两值之间
- NOT BETWEEN不在两值之间
- NOT IN不在集合中
- IS NULL为空
- IS NOT NULL不为空
- #示例:
- select * from class where age > 88;
- select * from class where age between 18 and 30;
- select * from class where age in (10,30);
- 逻辑运算符
- 运算符号作用
- NOT AND OR逻辑非、与 、或
- #示例 select * from class where sex="m" and age > 9;
- 运算优先级 可借用括号改变默认优先级运算符优先级
- 更新表记录(update)
- update 表名 set 字段1=值1,字段2=值2,.... where 条件;
- 注意:
- update 语句后如果不加where条件,所有记录全部更新
- # 示例
- update class set age=18,sex=o where name="tony"; update class set age=18,sex=o where name = "tony"; update class set age=age-1;# 批量更新
- 删除表记录(delete)
- delete from 表名 where 条件;
- 注意:delete 语句后后果不如where 条件,所有记录全部清空
- # 示例
- delete from class where name='sby';
- 插入(insert)
暂无评论...