mysql索引–普通索引,唯一索引,主键索引,参照完整性约束,数据完整性约束

yizhihongxing

-- 方法1:create index
-- 对employee表的员工部门号列创建普通索引depart_ind
-- create index depart_ind on employees(员工部门号);

-- 对employee表的姓名和地址列创建复合索引ad_ind;
-- create index ad_ind on employees(姓名,地址);

-- 对departments表的部门名称列创建唯一索引un_ind;
-- create unique index un_ind on departments(部门名称);

-- 方法2:alter table
-- 对employee表的出生日期列创建唯一索引date_ind ,姓名和性别列添加复合索引na_ind(用alter table命令完成)
-- alter table employees add unique data_ind(出生日期),add index na_ind(姓名,性别);

-- 练习:对departments表的部门编号列创建唯一索引key_ind;(用alter table)
-- alter table departments add unique key_ind(部门编号);

-- 方法3:创建表的同时创建索引
-- 创建表cpk(产品编号,产品名称,单价,库存量),并对产品编号创建主键,
-- 在库存量和单价列上创建复合索引cpk_fh
-- create table if not exists cpk(
-- 产品编号 varchar(5) primary key,产品名称 varchar(20),单价 float(4),库存量 int(4),
-- index cpk_fh(单价,库存量));

-- create table if not exists cpk2(
-- 产品编号 varchar(5),产品名称 varchar(20),单价 float(4),库存量 int(4),
-- index cpk_fh(单价,库存量),primary key(产品编号));

-- 参照完整性约束
-- create table if not exists jj(
-- employeeID char(6),je float(4),
-- foreign key(employeeID) references employees(员工编号)
-- on delete cascade on update cascade) engine=InnoDB;

-- insert into jj values("020018",78.01),("102208",123),("102201",456);
-- select * from jj;

-- delete from employees where 员工编号="102208";

-- 数据完整性
-- 创建雇员表emp,只考虑工号和性别两列,性别只能包含男或女
create table if not exists emp (工号 char(5),性别 char(2),check(性别="男" or 性别="女"));

insert into emp values("001","男"),("002","女");

-- 练习:创建表emp_3,有工号,工资和扣款3列,要求工资必须大于扣款。
-- 其中:工号 char(6) 工资 float(4),扣款 float(4)
create table if not exists emp3 (工号 char(5),工资 float(4),扣款 float(4)
,check(工资>扣款));

insert into emp3 values("001",1000,500),("002",2000,1500);

 

 日行一善--今天给我的老同学讲解excel图表知识

日进一步--昨天课间开始看书了。

原文链接:https://www.cnblogs.com/gdsmdsfy/p/17339649.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql索引–普通索引,唯一索引,主键索引,参照完整性约束,数据完整性约束 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • MySQL用户信息表中主键userID自动增加问题

    我建了一个userinfo的表,存储一些相关信息。 主键是userID,设置了AUTO_INCREMENT属性。 在我写了7条数据之后,再写入一条,userID应该是8. 之后我把userID为8的记录删除了,再写入一条userID就是9了。 这个问题,有办法解决么? 正统网站注册这一块是怎么解决这个问题的? 还是就这样无所谓。 ——————————————…

    MySQL 2023年4月16日
    00
  • MySQL中(JOIN/ORDER BY)语句的查询过程及优化方法

    下面是关于“MySQL中(JOIN/ORDER BY)语句的查询过程及优化方法”的详细讲解攻略。 一、JOIN语句的查询过程及优化方法 1.1 JOIN语句的查询过程 JOIN语句是通过连接两张或多张表中的数据来产生结果的,它的查询过程主要分为以下两个步骤: 根据连接条件,从前面的表中查找符合条件的行; 对于前面查找出的每一行,在后面的表中查找符合条件的行,…

    MySQL 2023年5月19日
    00
  • mysql 排重查询

    GROUP BY 语句可以实现某一列的去重查询。 直接上语句: select io_dev_id from io_info where (TID=1 AND host_name=’yang1′) GROUP BY 1; 按照io_dev_id去重查询。   p:顺手加上与ORDER BY 和 distinct的区分使用 GROUP BY 是根据列捡选 ORD…

    MySQL 2023年4月12日
    00
  • 一次docker登录mysql报错问题的实战记录

    下面我将为你详细讲解一次docker登录mysql报错问题的实战记录的完整攻略。 问题描述 在使用 docker 运行 mysql 时,执行docker exec -it mysql bash进入mysql容器内后使用mysql -uroot -p命令登录 mysql 数据库时,报错如下: ERROR 1045 (28000): Access denied …

    MySQL 2023年5月18日
    00
  • MySQL慢查询日志(Slow Query Log)

    MySQL慢查询日志是MySQL默认开启的一种日志记录,它可以用来记录MySQL中执行查询语句过程中耗时长的查询语句,以便于后期对这些查询进行优化,以提高MySQL服务器的性能。 MySQL慢查询日志可以记录下查询的时间、执行的SQL语句、所用的索引、扫描的行数、返回的行数等信息,这些信息都可以用来帮助我们分析SQL语句的性能问题,以及查找潜在的性能瓶颈所在…

    MySQL 2023年3月10日
    00
  • 解决MySQL server has gone away错误的方案

    解决 MySQL server has gone away 错误是一个常见的问题,通常是因为连接 MySQL 服务器的会话被关闭导致的。下面是解决该问题的完整攻略: 1. 增加超时时间 在 MySQL 配置文件中设置 wait_timeout 参数来增加超时时间,该参数用于设置没活动的连接在关闭之前可以等待的时间。在 my.cnf 中添加以下内容: wait…

    MySQL 2023年5月18日
    00
  • 解决mac上Navicat新建数据库3680错误问题

    解决Mac上Navicat新建数据库3680错误问题,可以分为以下几个步骤: Step1. 下载并安装Navicat安装包 首先,我们需要去官网下载最新版本的Navicat安装包。在下载完成后,双击打开.pkg文件,按照提示安装Navicat。 Step2. 添加环境变量 若已安装过Navicat,需要将Navicat的安装路径添加至环境变量里。请打开终端(…

    MySQL 2023年5月18日
    00
  • mysql myisam 优化设置设置

    MySQL是一款性能优异的关系型数据库软件,它提供了多种存储引擎,其中MyISAM是最常用的一种。但是,如果不进行优化设定,MyISAM也可能会出现性能瓶颈。下面,我将为你详细讲解MyISAM引擎的优化设置。 1. MyISAM引擎介绍 MyISAM是MySQL提供的一个存储引擎,以表为单位存储数据。它支持全文索引、压缩和高效的读取操作,但不支持事务和行级锁…

    MySQL 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部