一、简介
1.1 DBS、DB、DBMS
DBS:数据库系统
DB:数据库
DBMS:数据库管理系统
1.2三者关系和特征
DBS包含DB,DBMS
DBS的基本特征:共享性,独立性,冗余度小
数据库管理技术经历了人工管理、文件系统、数据库系统三个阶段
数据库是有组织的、可共享的数据集合
数据库的基本特征:共享性、独立性、冗余度小
数据库完整性:正确性和相容性
1.3数据模型
数据模型包含概念模型,逻辑模型,物理模型,是数据库的核心和基础
数据库中通常用实体-联系方法来描述现实世界的概念模型
概念模型 存在在信息世界
逻辑模型 包含层次模型,网状模型,关系模型
1.4概念模型
ER图是用来描述概念数据模型
ER图三要素:实体,属性,联系
1.5关系模型(二维表)
传统:并 交 差 笛卡尔积
专门:选择 投影 连接 除法运算
基本:并 差 选择 投影 笛卡尔积
关系操作(集合操作):查询 数据更新
1.6数据完整性
实体完整性:主属性不能为空且唯一(主码约束)
参照完整性:外键和主键关系
用户自定义完整性:自定义不能大于
二、数据库使用
2.1 启动和登录
启动:net start mysql
登录:mysql -u root -p
2.2 备份(导出)与还原(导入)
备份:mysqldump -u 用户名 -p密码 原数据库名 > 备份出的副本文件名
多个备份:mysqldump -hhostname -uusername -ppassword --databases databasename1 databasename2 databasename3 > multibackupfile.sql
导出表:mysqldump -uroot -pdbpasswd dbname test > db.sql;
导出数据库的结构:mysqldump -uroot -pdbpasswd -d dbname >db.sql;
还原:mysql -u 用户名 -p密码 mysql内部的目标数据库名 < 外部源文件名
注:dbname,databasename代表数据库名(可自行修改)
2.3数据库操作
创建数据库:create database dbname;
删除数据库: drop database dbname;
查看数据库信息:show database dbname;
改变数据库:
改变名字:alter database dbname
改变字节码:default character set utf8/gbk
三、表的使用
创建表:Create table 表名(id int,name varchar(10));
其中,id和name是表的列名,int和varchar(10)是数据类型
数据类型:int char(255) varchar(255) float(10,最大位数) eunm(‘男’,’女’)
其中,char(255)是不能超过255个字符
删除表:drop table 表名;
查看表:
表的详细信息:show create table 表名;
表的结构:desc 表名;
表的内容:Select *from 表名;
复制表:create table 新表 like 表名;(结构)
Create table 新表 select*from 表名;(整个表)
修改表:alter table 旧名 rename 表名;(表名)
Alter table 表名 change 旧字段 新 类型 first/after ;(改字段)
Alter table 表名 add 新列 类 first;(加字段)
Alter table 表名 drop 字段;(删字段)
四、对表中数据的操作
4.1数据
插入:一行完整数据:Insert into 表名 values(值1,值2);
多行完整数据:Insert into 表名 values(值1,值2),(值3,值4),(值5,值6);
一行不完整数据:insert into 表名(属性名1,属性名2) values (值1,值2);
删除:delete from 表名 where 条件;
修改:update 表名 set 字段=值 where 条件;
4.2索引
创建:create table 表(字 类, index 索引名(字));
添加:alter table 表 add index 索引名(字);
唯一:alter table 表 add unique index 索引名(字);
全文:alter table 表 add fulltext index 索引名(字);
删除:drop index 索引名 on 表;
4.3约束
4.3.1自增约束(Auto_increment)
insert into 表 values(100);
Alter table 表 auto_increment=100;
Alter table 表 modify 列 类 not null;
4.3.2主键
alter table 表add constraint ** primary key(id);
Alter table 表 drop primary key;
4.3.3外键
alter table 表 add foreign key(id) references 表(id);
On delete cascade级联
Alter table 表 drop foreign key **;
4.3.4唯一性约束
alter table 表modify 字 类 unique
Alter table 表 drop index 索引名(唯一索引);
4.3.5非空约束
alter table 表 modify 字 类 not null;
alter table 表 modify 字 类 null;
4.3.6注释
alter table 表 modify 字 类comment ””;
4.3.7默认约束
alter table 表`modify 字 类 default 默认值;
五、查询
5.1普通查询
查询结构用别名:Select 列 as 课程号 from 表;
查询当前时间:select now() as 时间from 表;
查询结果不重复:select distinct 列 from 表;
查询时可运算:select 列+1 工资 from 表;
5.2条件查询where in not in
Select id as 编号,pro as 职称 from teacher where pro in(“讲师”,”教授”);
5.3查询结果排序order by limit
Select 列 from 表 where 条件 order by 列asc/desc limit 3;
5.4分组查询 group by having
Select 列from 表 group by 列 having 条件
Select gender as 性别,count(distinct sno)as 人数 from 表 group by gender;男女分组计算人数
Select id as 学号,min(score) as 最低分from 表 group by id having min(score)>=70;找课程最低分大于70的学生的学号
六、连接
内连接:select a.*,b.* from 表1 a,表2 b where a.no=b.no;
外连接:select a.*,b.* from 表1 a left join表2 b on a.no=b.no where 条件;
七、子查询、视图
查询与李老师在同个学院(department)的所有老师
Select department_id,teacher_name from teacher where department_id=(select department_id from teacher where teacher_name=”李老师”);
创建视图
Create view 视图名 as select 列 from teacher;
查看视图
Show create view 视图名;
删除视图
Drop view 视图名;
更改视图
Alter view 视图 as select*from 表名;
Update 视图名 set where更改
更新时附加限制:With check option