数据库MySQL基础

数据库基础

  1. 数据(DATA)
    数据库中存储的基本对象
    图形符号、数字、字母等

  2. 数据库(DB-Data Base)
    长期存储在计算机内的、有组织的、可共享的数据集合
    数据库中的数据按照一定的数据模型组织、描述和 存储
    具有较小的冗余度、较高的数据独立性易扩展性,并可为各个用户共享。

  3. DBMS(Data Base Manage System)
    位于应用程序与存储数据之间的一层数据管理软件。
    是管理数据库的软件
    科学的组织和存储数据;高效的获取和处理数据。
    四方面的功能
    1)数据库的定义功能
    在SQL语言中,DDL语言,提供了三个语句:创建(create)、修改(aflter)、删除(drop),操作的对象是数据库中的基本架构一致。
    虽然数据库中村粗的是各种各样的数据,但是数据是以表的形式来组织和存放的。
    2)数据库的操作功能
    借助于DML语言(数据库操作语言),实现对数据库中的数据进行增删改查的操作(insert,delete,update,select)
    3)数据库保护功能
    保护数据的完整性和安全性
    4)数据库的维护功能
    数据库中的表结构和数据的维护功能。

  4. 数据库系统(DBS)
    数据库系统(DBS)= 数据库管理系统(DBMS)+数据库(DB)+应用系统+数据库管理员(DBA Data BaseAdministrator)+用户

  5. 信息的三种世界
    1、现实世界
    存在于人脑之外的而客观世界
    2、信息世界
    现实世界在人脑中的反映,又称观念世界
    3、数据世界
    将信息世界中的信息数据化对应的产物,就是将信息世界中的信息经过抽象和组织,按照特定的数据结构,将数据存储在计算机中。

  6. 实体-联系模型
    实体:客观事物在信息世界中被称为实体(Entity)。
    属性:描述实体的数据项
    联系:描述实体之间的关系。实体之间的联系:一对一;一对多;多对多。

  7. 关系模型
    一个关系就是一张表,没有重复行、重复列的二维表,每个关系都有一关系名。
    元组(记录):二维表中的每一行在关系中称为元组。
    属性(字段):二维表的每一列在关系中称为属性,每个属性都有一个属性名(字段名),属性值则是各个元组属性的取值。
    域:属性的取值范围
    关键字:能唯一区分元组的属性或属性组合。要求:唯一、不重复、不能为空。
    关系模式:关系名(属性1,属性2,属性3……属性10)
    关系模型的特征
    1)关系必须规范化,属性不可再分
    2)在同一个关系中,属性名不能重复
    3)在同一个关系中,元组和属性的顺序可以是任意的

  8. 关系运算
    1)选择:从关系模型中找出满足给定条件的元组组成新的关系
    从行的角度
    选择

2)投影:从关系模式中指定若干属性组成新的关系(从列的角度进行的运算)
投影

3)连接:笛卡尔积

  1. MySQL支持的数据类型
    在这里插入图片描述
    整数首选Int
    浮点数首选decimal(总长度,小数位):decimal(5,2) 数据总长度5位,其中小数位2位。
  2. 时间和日期类型
    MySQL时间和日期类型
    datetime : YYYY-MM-DD HH:MM:SS (年-月-日 时:分:秒)
    date: YYYY-MM-DD (年-月-日)
  3. 字符串数据类型
    字符型数据类型
    char:定长
    varchar:变长
    char(10)—tom 只用了3个字符,剩下的7个字符会用空格填充
    varchar(10)–tom 用了3个,剩下的7个字符空间会释放出来
  4. 数据库建表表达方式和原则
    create table 表名(
    属性1(列名1) 数据类型 [约束条件],
    属性2 数据类型 [约束条件],
    属性3 数据类型 [约束条件]
    );
    最后一个属性没有逗号!!!
  5. 删除表
    drop table 表名;
    删除多张表 drop table 表名1,表名2,……表名N;
  6. 修改表结构
    1)添加列:
    alter table 表名 add 列名 数据类型;
    eg: alter table student add 专业 varchar(7);
    alter table student add 血型 char(1);

错误:1060 - Duplicate column name ‘专业’–重复列名
2)删除列
alter table 表名 drop 属性名
eg: alter table student drop 血型;
删除之后
3)改属性(列名)的数据类型
alter table 表名 modify 属性名 数据类型;
eg: alter table student modify 学号 int;
4)修改属性的名字
alter table 表名 change 旧属性名 新属性名 数据类型;
eg: alter table student change 姓名 name varchar(8);
5)–显示表结构
desc 表名;
desc student;
表结构

  1. 命令练习

show databases;

–创建数据库“MyDB”
create database MyDB;

–转换到mydb数据库
use mydb;

–创建“student”表
create table student(
学号 varchar(10),
姓名 varchar(10),
年龄 int,
性别 char(2)
);

–创建“员工信息表”
create table 员工信息表(
姓名 varchar(10),
性别 char(2),
入职日期 datetime,
工资 decimal(7,2)
);
–插入列
alter table student add 专业 varchar(7);

alter table student add 血型 char(1);
–删除列
alter table student drop 血型;
–修改属性的数据类型
alter table student modify 学号 int;
–修改属性名
alter table 表名 change 旧属性名 新属性名 数据类型;
alter table student change 姓名 name varchar(8);
–显示表结构
desc 表名;
desc student;

  1. 实体完整性

-实体完整性是对关系中的记录唯一性
-定义表中所有性能唯一的标识
-表中主属性(字段)不能为null且不呢个有相同值
-一般用主键、唯一索引、unique关键字来实现

主键约束:唯一、不重复、不为空 primary key
1、创建表的同时创建主键约束
1)格式一
create table 表名(
属性1 数据类型 primary key,
属性2 数据类型,
……
属性N 数据类型
);
2)格式二
主键约束名字的写法:PK_列名
create table 表名(
属性1 数据类型 primary key,
属性2 数据类型,
……
属性N 数据类型,
constraint 主键约束的名字 primary key(列名)
);
3)格式三
create table 表名(
属性1 数据类型 primary key,
属性2 数据类型,
……
属性N 数据类型,
primary key(列名)
);
2、针对已存在的表添主键约束
1)alter table 表名 modify 列名 数据类型 primary key;
2)alter table 表名 add primary key(列名);
3)alter table 表名 add constraint 主键约束的名字 primary key(列名);
alter table 表名 drop primary key;

3、删除主键约束
alter table 表名 drop primary key;

  1. 联合主键
    把两个列看成一个整体:唯一、不重复、不为空
    1、创建表的时候创建联合主键
    1)create table 表名(
    属性1 数据类型,
    属性2 数据类型,
    ……
    primary key(属性1,属性2)
    );
    2)create table 表名(
    属性1 数据类型,
    属性2 数据类型,
    ……
    constraint 主键约束名 primary key(属性1,属性2)
    //constraint PK_列名 primary key(列名1,列名2)
    );
    2、已存在的表
    alter table 表名 add constraint 主键约束的名字 primary key(属性1,属性2);

  2. 唯一约束(唯一、不重复、可以为空)
    1)唯一约束是指table的列或者列的组合不能重复,保证数据的唯一性
    2)不允许出现重复的值,但是可以为多个null
    3)同一个表可以有多个唯一约束,多个列组合的约束
    4)如果不给唯一约束名称,就默认和列名相同
    5)MySQL会给唯一约束的列上默认创建一个唯一索引

  3. 唯一约束的写法
    1)在创建表的时候创建唯一约束
    格式一:
    create table 表名(
    属性1 数据类型,
    属性2 数据类型,
    ……
    属性N 数据类型
    constraint 唯一约束名字 unique(列名)
    //唯一约束名字可以是UN_属性名
    );
    格式二:
    create table 表名(
    属性1 数据类型,
    属性2 数据类型 unique,
    属性3 数据类型 unique,
    ……
    属性N 数据类型

);
2)已存在的表
alter table 表名 add 【costraint 约束的名字】 unique(列名);
【】里不写的话 默认的约束名字就是列名。
eg:alter table 会员表 add constraint UN_积分 unique(会员积分);

t添加唯一约束的名字
alter table 会员表 add unique(会员积分);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6B3QGhhq-1602229817842)(htt7ps://img-blog.csdnimg.cn/20201008202444509.png#pic_center)]

  1. 域完整性
    域完整性是对数据表中的字段属性的约束
    它是由确定表结构时所定义的字段的属性决定的
    限制数据类型,缺省值,规则,约束,是否可以为空
    域完整性可以确保不会输入无效的值
    1、默认约束:default
    作用:当default来修饰某个列的时候,修饰的列即使不写数据也会有一个默认的值的。
    1)创建表时同时创建默认约束
    格式:
    create table表名(
    属性1 数据类型 default ‘字符串类型或者日期类型加单引号,数字直接写’ ,
    属性2 数据类型 default 数字,
    ……

);
2)已经存在的表
alter table 表名 modify 列名 数据类型 default ‘值’;
2、删除默认约束
alter table 表名 modify 列名 数据类型;

  1. 非空约束
    当前列不能为空
    1、在创建表的时候同时创建非空约束
    create table表名(
    属性1 数据类型 not null,
    属性2 数据类型 not null,

    属性N 数据类型 not null
    );
    2、已存在的表,添加非空约束
    alter table 表名 modify 列名 数据类型 not null;
    3、删除非空约束
    alter table student modify 列名 数据类型;
  2. 参照完整性

指表与表之间的数据参照引用
使用外键约束来实现
1、创建表的时候同时创建外键约束
主表(接下来再建表的时候要参照的表)
create table 表名(
属性1 数据类型 primary key,
属性2 数据类型,
……
);
从表(外键约束在从表上创建)
create table 表名(
属性1 数据类型,
属性2 数据类型,
……
constraint 外键约束的名字 foreign key(从表列名1) references 主表表名(列名1)
);

例:主表 stu varchar(10)
从表 学号 varchar(10)
两个属性的的属性名不一样,但是数据类型都是varchar(10),存储的都是学号。

2、给已存在的表添加外键约束
alter table 表名 add constraint 外键约束名字 foreign key(列名) references 主表(列名);
3、删除外键约束
alter table 表名 drop foreign key 外键约束名字

  1. 注意
    关于引用的列要求,从表的列和主表的列,列名可以不一样,但是两个列的数据类型和内容要一致。
    从表引用主表的列必须有主键约束或者唯一约束。
    主表的数据被从表引用时,主表无法删除该数据。
    当从表要对数据进行操作时,征求主表的意见,主表有的,允许从表进行操作,主表没有的,拒绝从表进行操作。
    练习:
    在这里插入图片描述
    create table Teacher(
    Tno varchar(7) primary key,
    Tname varchar(10) not null,
    Tsex varchar(4),
    Birthday datetime,
    Dept varchar(20),
    Sid char(18)
    );
    – 注意这里因为编码格式没有改成uf8所以失败了。
    alter table Teacher modify Tsex char(2) default’男’;
    alter table Teacher modify Tsex char(2);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值