简言之,数据库就是存放数据的仓库,但是这些数据之间存在一定的关系,按照一定的格式存放在计算机上,不仅包括数字,还可以有文本,图像,音频,视频。
数据模型:
1,层次模型
2,网状模型
3,关系模型
我们主要学习的是第3种数据模型——关系型数据模型
SQL语言是用于关系数据模型的结构化语言,按照功能可以分为3部分
1,数据定义语言:定义数据库对象,包括定义表,视图和索引
2,数据操纵语言:主要对数据库中的数据进行查询,插入,删除和修改
3,数据控制语言:主要包括数据库的安全性控制,完整性控制,以及事务并发控制和故障。
通常每一类数据对象的个体称为实体,而每一类对象个体的集合称为实体集,例如管理学生所选课程的成绩时,主要涉及学生和课程两个实体集。
实体集之间的关系可能有3种关系
1,一对一
2,一对多
3,多对多
show databases 查询数据库。
create database 数据库名 新建一个数据库。
drop database 数据库名 删除数据库。
use database 数据库名 连接到数据库。
连接到了数据库,就会发现一个库中由很多的表组成。
show tables; 查询数据库中的表格。
create table if not exists 表名(表的属性内容)。
select * from 表名;查询表
desc 表名;查看表的状态。
insert into 表名 value(数据);向表中添加数据。varchar(length)可变长度的字符串,但是要在范围内可变,比如varchar(20)如果数据的长度只有5个长度,那么就会变为5个长度的内存空间,但是数据长度有21,那么就会出现错误,跟集合不一样。
增:alter table 表名 add name varchar(10);
删:alter table 表名 drop name varchar(10);
改:alter table 表名 change name Name varchar(10);
查:select * from 表名;
复制表格1:create table 表名 select * from 表名;完全一样,包括格式和内容。
复制表格2:create table 表名 select * from 表名 where 1=0;格式一样,内容为空。
create index 索引名 on 表名(name);给表格的名字列添加索引,到时候查找数据时就用索引比较快。
alter table 表名 drop index 索引名; 删除索引。
按照数据完整性实施的方法,我们可以分为4类:实体完整性,域完整性,引用完整性和自定义完整性。
实体完整性:
当我们把数据存放在数据库中时,一个表中的一行数据如果与他代表的实体完全一致,那么这个表具有实体完整性。
1, 主键约束。即表的主键(primary key)不能为NULL,也不能取重复值,即唯一。语言:create table student(stu_id int primary key)
每一个表必须有一个主键来唯一标识表的每一行,这个主键可以是由一列组成,也可以是多个列组成的复合组件。
2, 唯一约束。给定列的所有值必须是唯一的,不能重复。比如我们的身份证号码。ID int unique;
域完整性:
1,非空 。name varchar(20) not null;
2,默认值。如果一列有很多的数据重复,那么我们可以默认数据,比如:address varchar(20) default "chengdu";当我们给address赋值时不给数据就会默认为chengdu,如果给了数据chongqing就是chongqing。
3,检查约束。是比较灵活的约束,允许我们在更改或插入行到数据库时有一个比较宽范围的限制。但是在MYSQL中没有效果。age int check(age between 10 and 100);
4,外键约束。比较难理解的一种约束,我们的数据模型是关系型,那么表之间如何产生关系勒,就是通过外键约束来连接的。多张表之间才有外键约束,涉及到外键约束就会有主表和从表,外键设置在从表中,使用foreign key约束的两列数据类型必须相同的(至少是相似的)。
语句:constraint fk_useId(外键名) foreign key (外键名) references 主表(主表的主键(primary key))
上面的约束中,其实主键约束跟唯一约束比较相似,都是保证了数据的唯一性,但是主键约束不能为null,唯一约束可以为null。
建一个表:
create table student(
stu_id int primary key auto_increment,
stu_name varchar(20) not null,
stu_age int check(age between 10 and 100),
stu_idCard varchar(20) unique,
stu_address varchar(20) default "chengdu",
teach_id int,
constraint FK_stuId foreign key(teach_id) references teacher(teach_id)
)
teach_id 是主表teacher中的主键