第一节:数据库简介
1.数据库概述
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数 据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系 统都在各个方面得到了广泛的应用。 在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理 信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手 段。 发展历程:从数据管理角度分析 人工管理阶段 20世纪50年代中期之前 文件系统阶段 20世纪50年代中期到60年代中期 数据库系统阶段 20世纪60年代后期
2.数据库分类
按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网络式数据库、关系型数据库(前 两者已经基本消失)。 而当今的互联网中,最常用的数据库模型主要是两种即 关系型数据库 和 非关系型数据库。
关系模型 1970年由E.F.Codd提出的,是用二维表的形式表示实体和实体间的联系的模型。是现今数据库领域中应 用最广泛的数据模型,简单、清晰。 类:由属性和方法。 对象:根据类创建的,
3.数据库跟程序的联系 数据库的基本概念
1、实体 :表,对象,实例。
2、属性:实体中的基本的特征,比如学生对象中的,姓名,年龄
3、记录和字段 数据表:二维表格的形式存储数据;
像:集合 [{name:"张三",age:15,address:"新乡"},{},{},{}] List< Map< Object,Object>> 行:记录,一条数据,实体对象 列:字段,属性 关系型数据库:关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组 成了数据库。关系:有关联的。 关系 一词源于数学。关系型数据库是 用表的形式进行存储数据,一张表分成 行与列,列是固定的 行可以动态添 加,这种形式称之为关系。 在关系型数据库中:对应的就是**记录和字段——列** 数据库就是 数据表、数据库关系和数据库关系对象的集合。
常见的关系型数据库 : MySQL、 Oracle、 SqlServer(服务器) sql语言(structed query language 结构化查询语言)
非关系型数据库:非关系型数据库也被称为NoSQL数据库,大Map key:value 索引 NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句?),因此, NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NoSQL数据库在特 定的场景下可以发挥出难以想象的高效率和高性能。
常见非关系型数据库(NOSQL not only sql) Redis MongoDB hbase redis 缓存
非关系型数据库 经常作为关系型数据库的缓存数据库使用或者当成特殊业务处理应用 面向对象关系模型:
面向对象数据模型把实体表示为类,一个类描述了对象属性和实体行为
名词解释:
数据库管理系统 :DBMS:DataBase Management System(数据库+管理数据库的软件): MySQL,Oracle,SqlServer
数据库系统 :DBS;基于数据库进行读写的软件系统
数据库管理员:DBA : 要求:高;保证数据库系统的正常运行,安全,备份,恢复,日常问题的解决。 数据 库运维人员:要求低。测试,产品
java开发方向---》java开发攻城狮。 运维攻城狮。
测试攻城狮。产品经理。数据库管理员。。。。
第二节:MySql
1.MySql简介
MySql 服务器。写的是 SQL语言
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语 言--结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其 进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下, MySQL是管理内容最好的选择。
MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有 10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了 MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB 的创始人从用户在“海豚命名”的竞赛中建议的大量的名字 表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说, Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的 名字。
Mysql优点 开源:MySQL源代码免费下载 简单:体积小,便于安装 性能优越:性能足够与商业数据库媲美
2.MySql的连接
2.1 基于Navicat进行连接:
2.2 设置访问数据库
//启动mysql win + R : 输入 net start mysql; //关闭服务: 输入:net stop mysql;
登录服务: mysql -u 用户名 -p回车 输入密码 u:root p:
创建用户和授权(赋予一定的权限,例如只能读不能写) 增删改查。
insert delete update select
创建用户:
localhost 代表本地ip 127.0.0.1 create user '用户名'@'主机' identified by '密码';
授权:
权限种类:select, update, insert, delete ,alter(修改数据库的结构信息的) , drop ,all(所有权限)
show databases; 显示当前连接下的所有数据库;
use 数据库名;使用数据库
show tables; 显示该数据库下的所有表
root用户下的操作:
teacher用户下的操作:
新用户登录
mysql -u tiger -p Enter password: ******
赋权命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION
flush privileges; 修改后执行此句命令,刷新权限。 GRANT:赋权命令 ALL PRIVILEGES:当前用户的所有权限 ON:介词 .:当前用户对所有数据库和表的相应操作权 限 TO:介词 ‘root’@’%’:权限赋给root用户,所有ip都能连接 IDENTIFIED BY ‘123456’:连接时输入密码,密码为 123456 WITH GRANT OPTION:允许级联赋权
设置让别人可以访问自己的数据库:
登录进入mysql之后;
1.先执行
use mysql;
2.在执行
update user set host = '%' where user = 'root' and host='localhsot';//执行此句命令
3.执行刷新语句 刷新权限
flush privileges;
//此句命令查看user用户表 权限 select host,user from user;
3.使用
创建数据库 CREATE DATABASE 数据库名 [default charset 编码格式 COLLATE 排序规则(utf8mb4_general_ci)];
create database 数据库名; create database 数据库名 default character set utf8mb4 collate utf8mb4_general_ci
删除数据库 drop database 数据库名;
- 切换数据库(使用数据库) use 数据库名;
- 创建表
create table 表名(
-- 列名 类型, id int(5) 约束,
name varchar(200) 约束,
sex varchar(20) 约束,
birthday datetime 约束(最后一个不用添加逗号)
);
//查询表中的所有数据
select * from 表名
创建student学生表 (studentid name sex age )
插入数据
直接插入一整条数据,并且要一一对应。
//方法一:
//代表 直接插入一整条数据
insert into student values(列值1,列值2,。。。);
//方法二:
根据列名插入数据
insert into student (列名1,列名2,。。。) values (列值1,列值2,。。。);
//方法三:一次插入多条数据
insert into student values (列值1,列值2,。。。),(列值1,列值2,。。。),...;
//查询语句 select * from 表名
显示当前数据库下的所有表 show tables;
显示表的数据结构 desc 表名;
显示表中的所有数据 select * from 表名;
删除表 drop table 表名;
删除表中的数据 truncate table 表名称;
//把表中的数据全部删除,并在保留原来结构的基础上对这个表进行乐重建!
修改密码 update user set password=password (' root ') where user='root'; 更改新密码为:root
刷新权限 flush privileges; 刷新MySQL的系统权限相关表。修改密码后需要执行此语句
第三:数据类型
1、整型 原则:就小不就大
常用:int ,默认4 个字节的大小,无需指定大小
MySQL数据类型 含义(有符号)
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 用它 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方
2、浮点型(float 和 double):
MySQL数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位
3、定点数
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。
4、字符串(char,varchar,text)
MySQL数据类型 含义
char(n) 固定长度,最多255个字符
varchar(n) 使用 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
char 和 varchar:
1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串 末尾不能有空格,varchar 不限于此。
2.char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节,varchar 是存入的实际字符数 +1 个字节(n255),所以 varchar(4),存入 3 个字符将占用 4 个字节。
3.char 类型的字符串检索速度要比 varchar 类型的快。
varchar 和 text:
1.varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 +1 个字节(n255),text 是实际字符数 +2 个字节。
2.text 类型不能有默认值。
3.varchar 可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于 text, 在都创建索 引的情况下,text 的索引似乎不起作用。
5、日期时间类型
MySQL数据 类型 范围 含义
date 1000-01-01/9999-12-31 日期 '2008- 12-2'
time '-838:59:59'/'838:59:59' 时间 '12:25:36'
datetime 1000-01-01 00:00:00/9999-12-31 23:59:59 日期时间 '2008-12-2 22:06:44' timestamp 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 时间戳
6、二进制类型:binary ... (文件,图片)
文件上传,图片——转换成流——存到数据库中
一般:文件存到文件服务器。数据库中存储文件的地址路径