数据库和数据库管理系统数据库介绍 1数据库(Database:DB):按照一定的数据结构存储和管理数据的仓库 2.数据模型结构:层次模型、网状模型、关系模型 3.关系模型:将复杂的关系以简单的二元形式表示。以行和列的形式进行表示(表格)。行叫记录,列叫字段 4.数据分类: 结构化数据:可以通过统一的结构来进行描述的管理。 非结构化数据:通过同一的方式进行描述 半结构化数据:位于上述两者之间 5.数据库的分类: 关系型数据库:操作结构化数据 非关系型数据库:非结构化 6.数据库管理系统(DBMS:Database Management System):一套管理和操作数据库的软件 (a)关系型数据库管理系统(R:relationship RDSBMS) Oracle:分布式关系型管理系统(大企业) 收费(按照cpu核数收费) mysql:开源免费数据库,小,遵循GPL(开源软件许可证),支持千万级别 sqlserver:中型的关系型数库管理系统。Microsoft DB2:IBM 针对中小型数据库管理系统 (b)非关系型数据库管理系统(Nosql:not only sql) redis,mangodb,hbase,neo4j mysqlMysql是一个关系型的数据库管理系统 Mysql是由Mysql ab公司设计的产品,后期被oracle收购 mysql内部采用分库分表的形式管理数据库:一个数据库管理系统中可以管理多个数据库,一个数据库中可以管理多张表 Mysql1.下载(略) 2.安装(略)
数据库管理系统软件的目录(DBMS安装目录):C:\Program Files 数据库连接目录:(其他编程语言连接数据库的jar包信息) connectorJ 客户端工具的目录: workbench 数据存放的目录 programData 注: C:\ProgramData\MySQL\MySQL Server 5.7\ Data:存放数据信息,一个目录对应一个数据库。 frm文件存放标的结构信息 MYD文件存放数据信息 my.ini:mysql的配置文件
通过cmd 建立mysql连接:
(1)切换到mysql的dbms安装目录下的bin:C:\Program Files\MySQL\MySQL Server 5.7\bin下的mysql.exe
打开 cmd 执行 命令:cd C:\Program Files\MySQL\MySQL Server 5.7\bin
(2)登陆:命令:mysql -uroot -p,输入root用户密码
(3)开始使用
database 数据库的使用:
查看数据库: mysql> show databases;
table 表的使用:
进入mysql数据库(切换数据库): mysql> use mysql
查看数据库中的表: mysql> show tables;
查看表里所有数据: mysql> select * from user;
3.客户端工具
可以使用navicat 安装(略)
sql(结构化查询语言 structured query language)
数据库的标准化语言,实现对数据库的访问和操作 对大小不敏感 使用分号作为结束标志 sql分类:
DDL(Data definatition language):数据定义语言。对数据库对象(数据库,表,试图,索引等)结构操作:创建/修改/销毁(Create/alter/drop) DML(Data Manitaption Language):数据操纵语言。增删改查(insert/delete/update/select) DCL(Date Control Language):授权/取消授权(Grant/revoke) TCL(Transaction Control Language):提交/回滚(commit/rollback) DDL(数据定义语言)
对数据结构进行操作
数据库的创建和销毁
--创建一个数据库 bd1804 create database bd1804; create database if NOT exists bd1804 ;
--销毁数据库(少用) drop database if exists bd1804 ;
数据库表的创建
use database bd1804;
--创建表 --创建表结构时需要描述字段信息 create table student( sid int, sname varchar(20), age int );
修改表结构
--添加字段(追加) alter table student add sex varchar(20); --添加到首位 alter table student add cid int first; --添加到指定位置 alter table student add birthday date after cid;
查看表结构
--查看表结构 desc student;
修改字段
--修改字段(名称,类型,长度,位置)(change,modify) --修改名称 alter table student change age sage int;
alter table student change sname sname varchar(50); alter table student modify sname varchar(20);
alter table student change sname sname varchar(20) after cid;
alter table student change sname sname varchar(20) first;
表名称修改
-- 表名称修改 rename table student to stu;
清空表(与delete的区别)
-- 清空表 truncate table stu;
删除字段
--删除字段 alter table student drop cid;
销毁表
drop table student;
mysql里的数据类型 整型数据:浮点数Float(m,n):m表示总长度,n表示小数位数 Double(m,n) Decimal(m,n):16字节 字符串Char(n):定长字符串 Varchar(n):可变长字符(n可理解为最长的长度,n要小于65535) Text:长文本 日期Date:年月日 Time:时分秒 Datetime:年月日时分秒 年的范围:1000 - 9999年 Timestamp:时间戳 年的范围:1970 - 2037年 其他类型Blob:二进制数据 Eunm(’male’,’femal’):枚举 set(’1’,’2’,’3’):集合 Json:json类型 注意
- 数据类型在各种数据库中有区别 mysql完整性约束完整性指的是数据的准确性完整性分类实体完整性 - 实体:记录(记录之间不能重复)
- 主键约束:唯一并且不能为空
- 唯一约束
- 主键自增
域完整性 - 类型约束
- 非空约束:not null
- 默认值: default
- 引用完整性(参照)
- 一张表中字段的取值需要参照另一张表
外键:foreign key
- 自定义完整性
- check约束oracle mysql不支持
#插入insert into student values(1,'zs',20);
select * from student;
#主键约束的添加(唯一且不为空,区别每一条记录,一张表只能由一个主键字段,但是可以有联合主键) ##创建表的同时添加主键约束 ###主键的选择:无意义字段(主键一般不修改,经常变化的字段和有意义的字段不适合作为主键) ###1.字段声明后添加primary key create table student( sid int primary key, sname varchar(20), age int ); ###2.声明完字段之后添加主键 create table student( sid int, sname varchar(20), age int, #### 联合主键 primary key(sid,sname) ); ###3.创建完表添加主键约束 #### 约束 约束的名称 alter table student add CONSTRAINT pk_sid PRIMARY KEY (sid);
##删除主键约束 alter table student drop PRIMARY KEY;
#唯一约束(unique 唯一) create table student( sid int, sname varchar(20), age int, card VARCHAR(18) );
alter table student add CONSTRAINT uq_card UNIQUE(card);
#主键自增:1 增加1alter table student modify sid int PRIMARY KEY auto_increment;
# ref:参照alter table student add CONSTRAINT FK_CID foreign key(cid) REFERENCES classroom(cid);
# check约束alter table student add CONSTRAINT ck_age check(age BETWEEN 1 and 120);
|