上篇文章写了如何用部署Docker、Docker安装MySQL、MySQL语句创建数据库和数据库表,还有一些对数据库的基本命令,本篇内容主要写MySQL语句对数据库中的表的记录(数据)命令

添加表中新字段
ALTER TABLE 表名 ADD 列名 数据类型(范围);
修改表中新字段
ALTER TABLE tbl_name CHANGE 旧列名 新列名 新数据类型;
-- 修改crm_pms 表中address字段,改为add字段,查看该表结构
ALTER TABLE crm_pms CHANGE address add VARCHAR(30);
DESC crm_pms;
删除一个字段
ALTER TABLE 表名 DROP 列名;
-- 删除crm_pms表中的add字段
ALTER TABLE crm_pms DROP add;
DESC crm_pms;
删除数据表
DROP TABLE [IF EXISTS] 表名;
-- 删除crm_pms表
DROP TABLE crm_pms;

约束

  • 约束也成为数据库表约束,是为保证数据的完整性、一致性、有效性的规则;

约束类型

  • 针对列的数量来划分
  • 列级约束:对一个数据列建立的约束
  • 表级约束:对多个数据列建立的约束
  • 按功能进行划分
  • 主键约束(PRIMARY KEY)
  • 唯一约束(UNIQUE KEY)
  • 外键约束(FOREIGN KEY)
  • 非空约束(NOT NULL)
  • 默认值约束(DEFAULT)

主键约束

  • 可以保证数据的完整性,即防止数据表中的两条记录完全相同,一个基本表中只能定义一个主键约束,对于指定为主键的一列或多列的组合,其中任何一列都不能出现空值
主键约束特点
  • 不允许表中由NULL记录
  • 不允许表中由重复记录
  • 每个表中只能存在一个主键约束
  • 创建主键约束后,系统将自动创建逐渐索引
语法格式
#创建数据表时添加列级别主键约束
CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) PRIMARY KEY
);
-- 创建数据表时添加表级别唯一约束,可以多个主键约束
CREATE TABLE 表名(
      列名1 数据类型(数据范围),
      列名2 数据类型(数据范围) ,
      PRIMARY KEY(列名1,列名2)
);
修改表时添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名1,列名2);
删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;

唯一约束

  • 用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值
  • 定义了唯一约束的列称为唯一键,系统自动为唯一建立唯一索引,从而保证唯一性
唯一约束特点
  • 不允许表中有重复的记录
  • 允许表中有NULL记录
  • 创建唯一约束后,系统将自动创建唯一索引
语法格式
-- 创建数据表时添加列级别主键约束
CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名2 数据类型(数据范围) UNIQUE [KEY]
);
-- 创建数据表时添加表级别唯一约束
CREATE TABLE 表名(
      列名1 数据类型(数据范围),
      列名2 数据类型(数据范围) ,
      UNIQUE KEY(列名1,列名2)
);
修改表时添加唯一约束
ALTER TABLE 表名 ADD UNIQUE KEY(列名1,列名2);
删除唯一约束
ALTER TABLE 表名 DROP INDEX 约束名称;
查看某张表中全部的索引名称
SHOW KEYS FROM 表名;

默认值约束

  • 用于在某列指定默认值,当执行插入操作的时候,如果被默认值约束修饰的列,没有插入列值,系统将默认值自动变成列值
语法格式
CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名2 数据类型(数据范围) DEFAULT 参数值
);
修改表时添加默认值
ALTER TABLE 表名 MODIFY 列名 数据类型 DEFAULT 默认值;
删除默认值
ALTER TABLE 表名 MODIFY 列名 数据类型 DEFAULT NULL;
ALTER TABLE 表名 MODIFY 列名 数据类型;

非空约束

  • 用来修饰一列或多列的值,当插入数据的时候,被非空约束修饰的列,该列的值不能为空
语法格式
CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY UNIQUE [KEY],
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名2 数据类型(数据范围) DEFAULT 参数值,
      列名2 数据类型(数据范围) NOT NULL
);
修改表时添加非空约束
ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NUL
删除非空约束
ALTER TABLE 表名 MODIFY 列名 数据类型;

外键约束

  • 用来维护两张表之间的关联关系,被外键约束所修饰的列,该列的值必须参照与之关联另外一张表主键所在的列的列值
  • 父表/主表:没有外键的表
  • 子表:存在外键的表,被外键所修饰的列的列值,必须参照与主表中主键所在的列的列值
语法格式
CREATE TABLE 表名1(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名3 数据类型(数据范围) DEFAULT 参数值,
      列名4 数据类型(数据范围) NOT NULL
);

CREATE TABLE 表名2(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2a 数据类型(数据范围) UNIQUE [KEY],
      列名3 数据类型(数据范围) DEFAULT 参数值,
      列名4 数据类型(数据范围) NOT NULL,
      FOREIGN KEY(列名2a) PEFERENCES 表名1(列名2)
);
修改表时添加外键约束
ALTER TABLE 子表 ADD CONSTRAINT 约束名称 FOREIGN KEY(列名) PEFERENCES 主表(列名);
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名称;

自动递增

  • AUTO_INCREMENT属性为新行产生唯一的表示
  • AUTO_INCREMENT是数据列的属性,只适合用于整数类型数据列
  • 把数据列声名为UNSIGNED
  • 必须是唯一索引
  • 且数据列具备NOT NULL属性
  • 该值开始是1,每次递增1

Demo

-- 创建test数据库
-- 在test数据库中创建以下表
-- t1表中分别由id,username列,id为整数类型,username为字符串类型长度20,将id设置为主键约束
-- t2 表中分别由first_name last_name,属性均为字符串类型长度20,将两列均设为主键约束
CREATE DATABASE test CHARACTER SET=utf8;
USE test;
CREATE TABLE t1(
    id INT PRIMARY KEY,
    username CHAR(20)
);
CREATE TABLE t2(
    first_name CHAR(20),
    last_name CHAR(20),
    PRIMARY KEY(first_name,last_name)
);
DESC t1;
DESC t2;

MySQL数据库_表名

Demo

--创建一个test01数据库
CREATE DATABASE test01 CHARSET set utf8;
USE test01;
-- 在test01数据库中创建user表
-- user字段包含 username,password,age
-- username,password为可变长度的字符串类型,范围在20
-- age为整数类型,范围使用系统默认
CREATE TABLE user(username VARCHAR(20),password VARCHAR(20),age INT);


-- 创建一张表,表明mall_pms
-- 用户id 为整数类型\用户名为字符串类型长度30\密码为字符串类型长度16
CREATE TABLE mall_pms(id INT,name CHAR(30),age INT,password CHAR(16));


-- 创建一张表,表名为crm_pms
-- 用户id 为整数类型\姓名为字符串类型长度为30\年龄为整数类型\性别为字符串类型,长度为3、工资为小数类型长度为7 保留两位小数                    
CREATE TABLE crm_pms(id INT,name CHAR(30),age INT,sex CHAR(3),pay DOUBLE(7,2));


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql数据库