惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
Stack Overflow Blog
Stack Overflow Blog
B
Blog
I
InfoQ
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
F
Full Disclosure
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
T
Tailwind CSS Blog
S
Secure Thoughts
P
Privacy International News Feed
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
W
WeLiveSecurity
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Project Zero
Project Zero
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
H
Help Net Security
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
博客园 - 【当耐特】

Inno' Blog

将 what-digit-you-write 部署到 Heroku上 | Inno' Blog 论文浅析:GpSense: A GPU-friendy method for common-sense subgraph matching in massively parallel architectures Github项目clone速度过慢?试试这招 | Inno' Blog Hadoop分布式搭建全流程记录 | Inno' Blog Shell编程学习记录 | Inno' Blog 重学MySQL之视图 | Inno' Blog 重学MySQL之查询练习 | Inno' Blog 重学MySQL之事务 | Inno' Blog 重学MySQL之范式 | Inno' Blog 为你的Web应用提供HTTPS服务 | Inno' Blog 一个关于切片的小问题 | Inno' Blog Go语言学习笔记 | Inno' Blog 关于英译中的个人技巧 | Inno' Blog 不知不觉已经写够了十万行代码 | Inno' Blog YARN 架构 | Inno' Blog HDFS 架构 | Inno' Blog 正则中关于环视(lookaround)的小例子 | Inno' Blog 设计模式(十八):访问者模式 | Inno' Blog 如何借助Github进行协同开发 | Inno' Blog
重学MySQL之基本操作和约束 | Inno' Blog
Inno Fang · 2020-03-27 · via Inno' Blog

重新学习 MySQL 的基础知识,本章内容为数据库的基本操作和约束的介绍

  1. 如何登录 MySQL?

    mysql -u用户名 -p密码

  2. 如何查看所有数据库?

    SHOW DATABASES;

  3. 如何选择数据库?

    USE 数据库名;

  4. 如何查看数据库中所有数据表?

    SHOW TABLES;

  5. 如何查看数据表结构?

    DESCRIBE 数据表名; / DESC 数据表名;

  6. 如何查看数据表定义?

    SHOW CREATE TABLE 数据表名;

  7. 如何查看数据表中所有数据?

    SELECT * FROM 数据表名;

  8. 如何创建数据库?

    CREATE DATABASE 数据库名;

  9. 如何退出 MySQL?

    EXIT;

数据的增改删

  1. 如何创建数据表?(定义 person 表)

    CRAETE TABLE person(
    id INT PRIMARY KEY,
    name VARCHAR(20),
    gender CHAR(1),
    birthday DATE
    );

  2. 如何往数据表中新添一条记录?(新增 Mike, id 为 1,性别男,生日2000-1-1)

    INSERT INTO person VALUES(1, ‘Mike’, ‘M’, ‘2000-1-1’);
    INSERT INTO person(id, name, birthday, gender) VALUES(1, ‘Mike’, ‘M’, ‘2000-1-1’);

  3. 如何修改数据表中的记录?(将 id 为 1 的人姓名更改为 Amy,性别更改为 F)

    UPDATE 数据表 SET 字段1=值1,字段2=值2 … WHERE 条件;
    UPDATE person SET name=’Amy’, gender=’F’ WHERE id=1;

  4. 如何修改列名?(将 birthday 修改为 birth)

    ALTER TABLE 数据表 CHANGE [COLUMN] 旧列名 新列名 列定义 [FIRST| AFTER 列名]
    ALTER TABLE person CHANGE COLUMN birthday birth DATE

  5. 如何修改列的定义?(修改 id 为自增)

    ALTER TABLE 数据表 MODIFY [COLUMN] 列名 列定义 [FIRST| AFTER 列名]
    ALTER TABLE person MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT

  6. 如何删除数据表中的一条记录?(删除 id 为 1 的记录)

    DELETE FROM 数据表 WHERE 条件;
    DELETE FROM person WHERE id=1;

  7. 如何删除数据表?(删除 person 表)

    DROP TABLE person;

建表约束

1. 主键约束

作用 使得某个字段不重复且不得为空,确保表内所有数据的唯一性

1
2
3
4
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(20)
);
  1. 建表后如何添加主键约束?

    ALTER TABLE user ADD PRIMARY KEY(id);
    ALTER TABLE user MODIFY id INT PRIMARY KEY;

  2. 如何删除主键约束?

    ALTER TABLE user DROP PRIMARY KEY;

2. 联合主键

作用: 使用多个字段来确定一条记录,受约束字段可以分别重复但不能为空

1
2
3
4
5
6
CREATE TABLE user (
id INT,
name VARCHAR(20),
password VARCHAR(20)
PRIMARY KEY(id, name)
);

3. 自增约束

作用 受约束字段的值由系统自动递增分配

1
2
3
4
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);

4. 唯一约束

作用 受约束字段的值不能重复

注意 一张表可以有多个唯一约束,但只能有一个主键约束

1
2
3
4
CREATE TABLE user (
id INT,
name VARCHAR(20) UNIQUE
);

如果要联合多个唯一约束,可以在末尾指定,联合唯一约束只需任意受约束字段不重复即可

1
2
3
4
5
CREATE TABLE user (
id INT,
name VARCHAR(20),
UNIQUE(id, name)
);
  1. 建表后如何添加唯一约束?

    ALTER TABLE user ADD UNIQUE(name);
    ALTER TABLE user MODIFY name VARCHAR(20) UNIQUE;

  2. 如何删除唯一约束?

    ALTER TABLE user DROP INDEX name;

5. 非空约束

作用 受约束字段的值不能为空(NULL)

1
2
3
4
CREATE TABLE user (
id INT,
name VARCHAR(20) NOT NULL,
);
  1. 建表后如何添加非空约束?

    ALTER TABLE user MODIFY name VARCHAR(20) NOT NULL;

  2. 如何删除非空约束?

    ALTER TABLE user MODIFY name VARCHAR(20);

6. 默认约束

作用 未对受约束字段传值时,会使用默认值代替

1
2
3
4
CREATE TABLE user (
id INT,
name VARCHAR(20) DEFAULT 'anonymous',
);
  1. 建表后如何添加默认约束?

    ALTER TABLE user ALTER COLUMN name SET DEFAULT ‘anonymous’;

  2. 如何删除默认约束?

    ALTER TABLE user ALTER COLUMN name DROP DEFAULT;

7. 外键约束

作用 用来在两个表的数据之间建立链接,保持主表(父表)和从表(子表)数据的一致性、完整性

注意

  1. 主表(父表)需先于从表(子表)存在于数据库中
  2. 必须为父表定义主键
  3. 外键中列的数目必须和父表的主键中列的数目相同
  4. 外键中列的数据类型必须和父表主键中对应列的数据类型相同
  5. 主表(父表)没有的记录,从表(子表)是无法引用的
  6. 主表(父表)中的记录若正在被从表(子表)引用,则无法被删除;若想删除,需先将从表(子表)中引用了该记录的数据删除

首先定义主表(父表)

1
2
3
4
CREATE TABLE class (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);

再定义从表(子表)

1
2
3
4
5
6
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
class_id INT,
FOREIGN KEY (class_id) REFERENCES class(id)
);

在往从表(子表)中添加数据时,class_id 字段值必须是 class 表中已存在的值,否则会报错

  1. 建表后如何添加外键约束?

    ALTER TABLE <数据表名> ADD <索引名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
    ALTER TABLE student ADD CONSTRAINT student_class FOREIGN KEY(class_id) REFERENCE class(id);

  2. 如何删除外键约束?

    ALTER TABLE student DROP FOREIGN KEY student_class;

Copyright Notice: All articles in this blog are licensed under CC BY-NC-ND 4.0 unless stating additionally.