首页 > 数据库 >MySQL数据库

MySQL数据库

时间:2023-09-05 21:35:02浏览次数:46  
标签:数据库 表名 数据类型 约束 KEY MySQL TABLE 列名

上篇文章写了如何用部署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));


标签:数据库,表名,数据类型,约束,KEY,MySQL,TABLE,列名
From: https://blog.51cto.com/u_16239770/7379477

相关文章

  • 使用 MYSQL 对列中特定范围的数字求和
    使用MySQL对列中特定范围的数字求和,可以使用SQL的SUM()函数结合WHERE子句来实现。以下是一个示例:SELECTSUM(column_name)ASsum_resultFROMtable_nameWHEREcolumn_name>=start_valueANDcolumn_name<=end_value;在上述代码中,将column_name替换为要计算求和的......
  • 关于在数据库系统MMAP的使用
    问题引出在数据库系统中对于文件I/O管理,通常有两种选择开发者自己实现bufferbool来管理文件I/O读入内存的数据使用Linux操作系统实现的MMAP系统调用映射到用户地址空间,并且利用对开发者透明的pagecache来实现页面的换入换出理论介绍 程序调用MMAP返回了指向文件内容......
  • MySQL常见命令及约束超详细(二)续
    查看数据表有四种方法:① SHOWCOLUMNSFROMtbl_name[FROMdb_name];②SHOWCOLUMNSFROM表名;③DESC表名;④DESCRIBE 表名;建议用第三种方便记忆添加表中新字段ALTERTABLE表名add字段名数据类型(数据范围);修改表中新字段ALTERTABLEtbl_nameCHANGE旧列名新列名新......
  • MySQL数据高阶处理技巧:掌握先排序后分组的智慧
    在MySQL数据库的数据探索旅程中,排序和分组是不可或缺的工具。然而,当你面对大量数据、重复值等情况时,常规的处理方法可能显得不够灵活。本文将为你揭示一个精妙的技巧:如何在MySQL中先排序,后分组,从而获取每个类型的最新数据,助你轻松驾驭复杂的数据处理任务。问题背景:先排序,后分组拥有......
  • MySQL分页查询详解:优化大数据集的LIMIT和OFFSET
    最近在工作中,我们遇到了一个需求,甲方要求直接从数据库导出一个业务模块中所有使用中的工单信息。为了实现这一目标,我编写了一条SQL查询语句,并请求DBA协助导出数据。尽管工单数量并不多,只有3000多条,但每个工单都包含了大量的信息。DBA进行了多次导出操作,不幸的是,每次尝试导出都导致......
  • 使用 SQLStudio 进行数据库管理并通过 Docker Compose 进行部署
    在现代软件开发中,数据库管理是一个至关重要的环节。SQLStudio是一个强大的工具,可以帮助开发人员轻松管理数据库,现在改名成SQLynx,我们用的是旧的镜像,本文还是用SQLStudio这个名称。同时,使用DockerCompose可以简化应用程序的部署过程,使整个开发流程更加高效和可靠。最近了看到有......
  • C++_手写数据库连接池
    C++_手写数据库连接池关键技术点MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和unique_lock、基于CAS的原子整形、智能指针shared_ptr、lambda表达式、生产者-消费者线程模型连接池的主要功能点单例模式:因为连接池只需要一个实例......
  • MySQL 存储引擎 有几种 都有什么优缺点?
    MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。它们各自有一些优缺点:1.InnoDB存储引擎:优点:-提供了事务管理、回滚、崩溃修复能力、和多版本并发控制的事务安全;-支持外键约束,提高了数据的一致性和完整性;-支持行级锁,提高了并发性能;-支持外键约束,提高了数据的一致性和......
  • mongo 数据库建索引不规范导致奔溃
    2023年9月5日,在给3亿条数据库新建索引时,因为没有采用后台索引的方式导致数据库奔溃20分钟。前台建索引容易阻塞主线程,大的表一定要做background执行,否则堵塞全部读写建议后期操作:db.test.createIndex({name:1},{background:true}) ......
  • 中文版网页开发HTTP与数据库对接
    代码如下:<!文档类型网页类型><网页语言代码="中文">  <网页头部>    <网页信息文档编码="UTF8"/>    <网页信息名称="页面视图"关联数据="视图宽度=填充视图宽度,初始缩放值=1,最大缩放值=1,用户缩放状态=假"/>    <网页信息关联HTTP="兼容模......