liyuanyue2017的博客

希望大家不吝赐教

二、MySQL 学习笔记之 操作和修改数据表

一、 记录操作

1. 创建数据表

CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
....
);

Demo: 创建一张名为 tb1 的表,包含 usename ,age 和 salary 三个字段

CREATE TABLE tb1(
username VARCHAR(20),
age TINYINT UNSIGNED,
salary FLOAT(8,2) UNSIGNED
);

2. 查看数据表列表

SHOW TABLES [FROM db_name] [LIKE 'patten' | WHERE expr] ;

Demo:

SHOW TABLES;

3. 查看数据表结构

SHOW COLUMNS FROM tbl_name;

DESC tbl_name;

二、 数据表操作

1. 概述

数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础。

实质就是一张二维表,其中行称为记录,列称为字段。

2. 插入记录

INSERT [INTO] tbl_name[(col_name,...)] VALUES(val,..);

Demo: 为之前创建的 tb1 插入一条记录

INSERT tb1(username,age,salary) VALUES("John",27,4999.60);

3. 查找记录

SELECT expr,... FROM tbl_name;

Demo: 查找之前为 tb1 插入的记录

SELECT * FROM tb1;

4.修改数据表

添加一列:

ALTER TABLE tbl_name ADD [COLUMN] col_name 
column_definition [FIRST | AFTER col_name];

添加多列:

ALTER TABLE tbl_name ADD [COLUMN]
(col_name,column_definition,....);

Demo: 为表 t1 添加 age 属性

ALTER TABLE t1 ADD age INT;

5.删除列

ALTER TABLE tbl_name DROP [COLUMN] colname;

Demo: 删除刚才为 t1 添加的 age 属性

ALTER TABLE t1 DROP age;

三、约束

1. 目的

保证数据的完整性和一致性

2. 分类

  • 表级约束:针对两个及以上字段使用
    • 只能在列定义后声明
  • 列级约束:只针对一个字段使用
    • 既可以在列定义后声明,也可以在列定义时声明

3. 包括

  • NOT NULL(非空约束)
  • PRIMARY KEY(主键约束)
  • UNIQUE KEY(唯一约束)
  • DEFAULT(默认约束)
  • FOREIGN KEY(外键约束)

4. 非空约束

  • NULL,字段值可以为空
  • NOT NULL,字段值禁止为空

Demo: 为 t2 表的 name 字段设置非空

CREATE TABLE t2(
name NOT NULL
);

5. 主键约束

  • PRIMARY KEY
  • 主键不一定必须和自动编号使用
  • 主键自动为 NOT NULL
  • 主键保证记录的唯一性
  • 每张表只能存在一个主键

6. 唯一约束

  • UNIQUE KEY
  • 唯一约束可以保证记录的唯一性
  • 唯一约束的字段可以为空值(NULL)
  • 每张数据表可以存在多个唯一约束

7. 默认约束

  • DEFAULT
  • 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

8. 外键约束

1. 作用

保证数据一致性,完整性

实现一对一或一对多关系

2. 要求
  • 父表和子表必须使用相同的存储引擎,且禁止使用临时表
  • 数据表的存储引擎只能为InnoDB
  • 外键列和参照列必须具有相似的数据类型
  • 外键列和参照列必须创建索引
3. 外键约束的参照操作
  • CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
  • SET NULL:从父表删除或更新行,并设置子表中的外键列为 NULL。如果使用该选项,必须保证子表列没有指定 NOT NULL
  • RESTRICT:拒绝对父表的删除或更新操作
  • NO ACTION:与 RESTRICT 相同

9. 自动编号

  • AUTO_INCREMENT
  • 自动编号,且必须与主键组合使用
  • 默认情况下,起始值为 1,每次增量为 1
  • 该子段一定为数值型,如果为浮点数小数位数为 0

四、 修改数据表

1. 添加主键约束

ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]]
PRIMARY KEY [index_type] (index_col_name,...)

Demo: 为 t1 表的 age 属性添加主键约束

ALTER TABLE t1 ADD CONSTRAINT PRIMARY KEY age;

2. 删除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY;

3. 添加唯一约束

ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type]
(index_col_name,...);

Demo: 为 t1 表的 age 属性添加唯一性约束

ALTER TABLE t1 ADD UNIQUE(age);

4. 删除唯一约束

ALTER TABLE tbl_name DROP {INDEX|KEY} index_name;

5. 添加外键约束

ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]]
FOREIGN KEY [index_type] (index_col_name,...)
reference_definition;

Demo: 为 t1 表的 age 属性参照 t2 表的 age

ALTER TABLE t1 ADD FOREIGN KEY(age) REFERENCES t2(age);

6. 删除外键约束

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;

7. 添加/删除默认约束

ALTER TABLE tbl_name ALTER [COLUMN] col_name
{SET DEFAULT literal | DROP DEFAULT};

Demo: 为 t1 表的 age 属性赋予默认值 15

ALTER TABLE t1 ALTER age SET DEFAULT 15;

8. 修改列定义

ALTER TABLE tbl_name MODIFY [COLUMN] col_name 
column_definition [FIRST | AFTER col_name];

Demo: 把 t1 表的 age 属性修改为 int 类型

ALTER TABLE t1 MODIFY age INT;

9. 修改列名称

ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name 
new_col_name column_definition [FIRST | AFTER col_name];

Demo: 把 t1 表的 age 属性更名为 Age

ALTER TABLE t1 CHANGE age Age INT;

10. 数据表更名

1.方法一

ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name;

2.方法二

RENAME TABLE tbl_name TO new_tbl_name 
[,tbl_name2 TO new_tbl_name2]...;
阅读更多
文章标签: MySQL 慕课网
个人分类: MySQL
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

二、MySQL 学习笔记之 操作和修改数据表

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭