MySQL基础学习笔记(1)-创建数据库和约束

这篇博客介绍了MySQL的基础操作,包括启动登录、数据库和表的创建、数据插入,重点讲解了SQL约束,如主键、唯一约束、外键和非空约束,强调了这些约束在数据完整性方面的重要性,并通过实例演示了约束的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 初识MySQL

环境主要为Linux环境,MySQL5.5.50

1.1、启动并登录MySQL:

  • 这里写图片描述

1.2、查看数据库:show databases;

这里写图片描述

1.3、连接数据库:use <数据库名>

这里写图片描述

1.4、查看表:show tables

这里写图片描述


二、创建数据库&插入数据

创建一个数据库company,两张表employee、 department

2.1、创建数据库:CREATE DATABASE <新建数据库名>;

PS:SQL语言 保留字建议使用大写
这里写图片描述

2.2、新建数据表 CREATE TABLE

CREATE TABLE 表名
(
    列名a 数据类型(数据长度),
    列名b 数据类型(数据长度),
    ……
);
CREATE DATABASE company;
use company;

CREATE TABLE department
(
    dpt_name   varchar(20),
    pep_num    int(10)
);

CREATE TBALE employee
(
    id     int(10),
    name   varchar(20),
    age    int(10),
    salary int(10),
    phone  varchar(12),
    in_dpt varchar(20)
);

CREATE TABLE project
(
    proj_num   int(10),
    proj_name  varchar(20),
    start_date date,
    end_date   date,
    of_dpt     varchar(20) REFERENCES department(dpt_name),
);

这里写图片描述
这里写图片描述

在数据表中的一些数据类型

类型大小用法格式
int4
float4
double8
enum单选enum(‘man’,’woman’)
set多选set(‘北京’,’上海’,’成都’,’重庆’,’武汉’)
date3日期YYYY-MM-DD
time3时间点或持续时间HH:MM:SS
year1年份YYYY
char0~255固定长字符串
varchar0~255可变长字符串
text0~65535长文本

2.3、插入数据 INSERT

查看表解构:desc table_name;

这里写图片描述

修改字段类型:

mysql> alter table 表名 modify column 字段名 类型
mysql>alter table department modify column dpt_phone varchar(12); 

修改表数据

mysql> update 表名 set 字段=新值,… where 条件

如:

mysql>update department set dpt_phone='0281234566' where dpt_name='TEST';

经验:电话号码最好不要用int类型,使用varchar类型较好
这里写图片描述

原因:
这里写图片描述

修改电话号码类型,创建表结果如下:
这里写图片描述

三、SQL约束

将上面的数据库修改一下,创建一个包含有约束的表

约束类型主键默认值唯一外键非空
关键字PRIMARY KEYDEFAULTUNIQUEFOREIGN KEYNOT NULL
CREATE DATABASE company;
use company;

CREATE TABLE department
(
    dpt_name   varchar(20) NOT NULL,
    pep_num    int(10) DEFAULT '10',
    CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
);

CREATE TBALE employee
(
    id     int(10) PRIMARY KEY,
    name   varchar(20),
    age    int(10),
    salary int(10) NOT NULL,
    phone  varchar(12) NOT NULL,
    in_dpt varchar(20) NOT NULL,
    UNIOUE (phone),
    CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
);

CREATE TABLE project
(
    proj_num   int(10) NOT NULL,
    proj_name  varchar(20) NOT NULL,
    start_date date NOT NULL,
    end_date   date DEFAULT '2099-12-31',
    of_dpt     varchar(20) REFERENCES department(dpt_name),
    CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)
);

3.1、-主键 PRIMARY KEY

① 用于唯一地标识表中的某一条记录,不能有重复,不允许为空
② 作用:用来保证数据完整性
③ 个数:主键只能有一个

#主键 
CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)   
# 这个也是主键
id int(10) PRIMARY KEY,
# 复合主键,其中proj_pk为自定义主键名
CONSTRAINT proj_pk PRIMARY KEY(proj_num,proj_name)

这里写图片描述

3.2、- 唯一约束 UNIQUE

① UNIQUE 约束唯一标识数据库表中的每条记录。
② UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
③ PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

注:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
这里写图片描述

3.3、 -外键约束 FOREIGN KEY

① FOREIGN KEY 既能确保数据的完整性,也能表现表之间的关系
② 一个表可以有多个FOREIGN KEY
③ 每个FOREIGN KEY 必须references(参考)另外一个表的PRIMARYE KEY,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
这里写图片描述
下面,准备为employee表中插入一条数据,但由于外键约束,且参考的department表中,dpt_name不存在“Dev”值,插入数据失败
这里写图片描述

接下来,department表中添加部门数据,再重新插入employee员工数据,成功
这里写图片描述

3.4、- 非空约束 NOT NULL

① NOT NULL 约束强制列不接受 NULL 值。
② NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

表employee中,age没有非空约束,插入如下数据

INTSERT INTO employee(id,name,salary,phone,in_dpt) VALUES(02,'Jack',6500,'2321454725','Dev');

结果:
没有告警,age 值为空时,表中显示为NULL
这里写图片描述
这里写图片描述

表employee中,salary有非空约束,插入如下数据

INTSERT INTO employee(id,name,age,phone,in_dpt) VALUES(03,'Lisa','5421355','Test');

结果如下,给出告警,salary值为空时,表中显示为0
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值