欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-19 19:01:16
...

一、 初识MySQL

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

1.1、启动并登录MySQL:

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

1.2、查看数据库:show databases;

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

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

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

1.4、查看表:show tables

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


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

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

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

PS:SQL语言 保留字建议使用大写
MySQL基础学习笔记(1)-创建数据库和约束

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),
);

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

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

类型 大小 用法 格式
int 4
float 4
double 8
enum 单选 enum(‘man’,’woman’)
set 多选 set(‘北京’,’上海’,’成都’,’重庆’,’武汉’)
date 3 日期 YYYY-MM-DD
time 3 时间点或持续时间 HH:MM:SS
year 1 年份 YYYY
char 0~255 固定长字符串
varchar 0~255 可变长字符串
text 0~65535 长文本

2.3、插入数据 INSERT

查看表解构:desc table_name;

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

修改字段类型:

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类型较好
MySQL基础学习笔记(1)-创建数据库和约束

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

修改电话号码类型,创建表结果如下:
MySQL基础学习笔记(1)-创建数据库和约束

三、SQL约束

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

约束类型 主键 默认值 唯一 外键 非空
关键字 PRIMARY KEY DEFAULT UNIQUE FOREIGN KEY NOT 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)

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

3.2、- 唯一约束 UNIQUE

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

注:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
MySQL基础学习笔记(1)-创建数据库和约束

3.3、 -外键约束 FOREIGN KEY

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

接下来,department表中添加部门数据,再重新插入employee员工数据,成功
MySQL基础学习笔记(1)-创建数据库和约束

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
MySQL基础学习笔记(1)-创建数据库和约束
MySQL基础学习笔记(1)-创建数据库和约束

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

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

结果如下,给出告警,salary值为空时,表中显示为0
MySQL基础学习笔记(1)-创建数据库和约束