一、数据库和数据库管理系统
引言:
- 传统txt文件存储后,查询不方便,所以引入了数据库。
- 数据库快是由其数据结构决定。
1,数据库(DataBase:DB)按照一定数据结构存储和管理数据的仓库;
根据数据之间的关系,数据模型结构分为:
- (1)层次模型(只能简单表示关系层次)
- (2)网状模型(关系复杂,但是看起来乱)
- (3)关系模型(常用)
关系模型(重点)
==将复杂的关系,以简单的二元形式进行表示(即表格)。行叫记录,列叫字段。==
2.数据分类
(1)结构化数据:(09年之前)
可以通过相同的结构来进行统一管理。
(2)非结构化数据:
不能通过相同的结构来进行统一管理。
(3)半结构化数据:
介于上述两者之间(html/xml)
3.数据库分类
(1)关系型数据库:操作结构化数据
(2)非关系型数据库:非结构化
4.数据库管理系统(DataBase Management System:DBMS)管理和操作数据库的软件。
(A)关系型数据库管理系统(R:relationship RDBS)
(a)Oracle:分布式关系型数据库管理系统
- (Sun公司的,后被Oracle公司收购,很多大公司都会用,收费价格不菲,按CPU核数收费,每核十几万美元。):
- 国企一般用Oracle数据库。
(b) Mysql:开源免费的数据库。
小。支持GPL(开源软件许可证),即修改后,还必须开源。支持千万级别的数据。
(c)Sql server:中型的关系型数据管理系统(微软)
(d)DB2:IBM的:针对中小型企业的数据库管理系统。
(B)非关系型数据库管理系统(Nosql :not only sql)
Redis Hbase mengdb neo4j
二、Mysql
- Mysql是一个关系型的收据库管理系统,Mysql由Mysql ab公司创立,后被sun公司收购,后又被Oracle公司收购。
- Mysql内部通过分库分表形式管理数据。一个数据库管理系统可以管理多个数据库,一个数据库中可以存放多张表。
(一)下载安装 :
(A)下载:Oracle官网(B)Mysql官网
(B)安装(服务器)
(安装过程中需要查看服务的话: window_R调出命令提示符,然后输入 services.msc查看服务)
安装目录下的重要文件
C:\Program Files\MySQL\MySQL Server 5.7
Mysql:
Data:存放数据信息,一个目录对应一个数据库
frm文件:存放数据信息
MYD文件:存放数据信息
my.ini :mysql的配置文件
(C)客户端工具
Navicat for Mysql软件:图形化界面软件。
(二)通过cmd建立连接:
(1)切换到mysql的dbms安装目录下的bin目录下:
打开cmd,执行命令:cd C:\Program Files\MySQL\MySQL Server 5.7\bin
(2)登陆:命令:mysql -uroot -p
(3)使用:
(A)数据库database:
- (a)查看数据库
mysql>show databases; (注意s和分号)
- (B)表table
- (a)进入mysql数据库/切换数据库 mysql>use mysql
- (b)查看数据库中的表 mysql> show tables;
- (c))查看表中所有的数据 mysql>select * from user;
三、SQL(structured qurery language:结构化查询语言)
- 数据库的标准化语言:实现数据库的访问和操作。
- 对大小写不敏感
- 使用分号作为结束标志
(一)分类
(A)DDL(Data defination language)数据定义语言。
对数据库对象(数据库,表,试图,索引等)结构操作。
创建creat/修改alter/销毁drop
(B)DML(Data Management Language)数据操纵语言
insert/delete/updata/select
(C)DCL(Data Control language)数据控制语言
授权(Grant)/取消授权(revoke)
(D)TCL(Transform Control language):事务控制语言
提交(Commit)/回滚(rollback)
(二)DDL:数据定义语言
例1创建数据库
--创建数据库bd1804
create database if not exists bd1804;
--销毁数据库(很少用,尽量不用)
drop database if exists bd1804;
- 创建表
--创建表
--创建表结构时需要描述字段信息
create table student (
sid int,
sname varchar(20),
age int
);
- 增加属性
- 表的销毁
- 表的清除
(A)数据类型
(a)整型数据
(b)浮点数
- Float(m,n)m,总长度,n,小数位数
- Double(m,n)
- Decimal 16字节:精度最高,一般银行用。
(c)字符串
- Char(n):定常字符串
- Varchar(n):可变字符串,最长n,n以内根据内容定长度
- Test:长文本
(d)日期类型
- Date :年月日
- Time :时分秒
- Datatime:年月日时分秒(1000年到9999年)
- Timestamp:时间戳1970年1月1日0时0分0秒到2037年
- Year
(e)其他类型
- Blob:二进制数据(图片,视频,一般不会用。一般存图片等的路径)
- Enume(‘male’.’femal’):枚举
- Set(‘1’,’2’,’3’):集合
- Json:jason类型
例3:
碰到与关键字重合的字时,颜色会变,用反单引号引起。只是颜色变了,名字还是不变。
create table `user` (
uid int,
uname varchar(20),
`password` varchar(20),
birthday Date
);
对表结构操作的全部例子
create table student (
sid int;
sname varchar(20);
age int
);
create table `user` (
uid int,
uname varchar(20),
`password` varchar(20),
birthday Date
);
#-----修改表结构---alter----
#--在Student表中追加性别属性
alter table student add sex varchar(20);
-- 在Student表中添加班级,添加到首位
alter table student add cid int first;
-- 添加到指定字段后面
alter table student add birthday date after cid;
-- 查看表结构
desc student;
-- 修改字段(名称,类型,长度,位置)
-- 修改名称
alter table student change age sage int ;
-- 修改类型
alter table student change sname sname varchar(50);
//change 必须前面是原字段,后面是新字段。modify可以只修改要改的部分。
alter table student modify sname varchar(20);
alter table student change sname sname varchar(20) after cid;
alter table student modify sname varchar (20) after cid;
-- 删除---
alter table student drop sid;
#修改表的名称
rename table student to stu;
#清空表:把表的内容清空
truncate table stu;
desc stu;
(B)对表内容的完整性约束
(a)完整性:数据的准确性
(b)完整性约束分类
- 实体完整性(实体:记录(记录之间不能重复))
-
- 主键约束:primary key 设置为主键的字段必须唯一且不能为空
-
- 唯一约束:unique
-
- 主键自增:
- 域完整性
- 引用完整性
- 自定义完整性
(1)添加主键约束例子
-- 主键约束的添加(唯一不为空,一张表只能有一个主键,但是可以有联合主键)
-- 主键选择:无意义字段(主键一般不修改,经常变化的字段和业务的字段不适合作为主键)
-- 1、创建表的同时添加主键约束
-- 1)字段声明添加primary key
create table student(
sid int primary key,
sname varchar(20),
age int
);
-- 2)声明时不指定,声明完字段后,添加主键
drop table student;
create table student(
sid int ,
sname varchar(20),
age int,
primary key(sid)
);
-- 2.2)联合主键
drop table student;
create table student(
sid int ,
sname varchar(20),
age int,
primary key(sid,sname)
);
-- 2、已经有表了,添加约束(用的少,一般创建时就要设计好)
drop table student;
create table student(
sid int ,
sname varchar(20),
age int
);
-- 约束 约束名称
alter table student add CONSTRAINT pk_sid primary key(sid);
(2)添加唯一性约束的例子
alter table student add CONSTRAINT uq_card unique(card);
(3)主键自增例子
alter table student modify sid int primary key auto_increment;
其他
(一)几个概念
- A 数据库管理系统软件安装目录
- B 数据库连接目录:其他编程语言连接数据库jar包信息 connectorJ
- C 客户端的工具的目录 Workbench
- D 数据存放的目录 ProgramData
(二)一般命令语法
\ | 命令 | 选项 | 参数 |
---|---|---|---|
举例1 | mysql |
| |
举例2 | java |
|