热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第3.2课上课MySQL深入介绍

3_2MySQL深入介绍修改列信息--显示当前的数据库列表showdatabases;--创建数据库createdatabase数据库

3_2

MySQL深入介绍

 修改列信息

-- 显示当前的数据库列表

show databases;

 

-- 创建数据库

create database 数据库名;

 

-- 选择需要使用的数据库

use 数据库名;

 

-- 创建表

 

CREATE TABLE `e_user` (

`ID` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,

`T_PASSWORD` varchar(50) DEFAULT NULL,

`T_NAME` varchar(10) DEFAULT NULL

)

 

 

-- 显示表的详细信息

show create table e_user;

 

-- 显示表 列信息

desc e_user;

 

-- 显示当前数据库中的所有表名

show tables;

 

-- 重命名表名

-- 语法: ALTER TABLE 旧表名 RENAME TO 新表名;

alter table e_user2 rename e_user;

 

-- 添加列:

-- 语法: ALTER TABLE 表名 ADD COLUMN 列名 列类型;

alter table e_user add column t_age int;

alter table e_user add column t_sex varchar(2);

 

 

-- 删除列:

-- 语法: ALTER TABLE 表名 drop COLUMN 列名;

alter table e_user drop column t_sex;

 

 

-- 修改列名:

-- 语法: ALTER TABLE 表名 CHANGE 旧列名 新列名 新列类型;

alter table e_user change t_age t_age2 varchar(5);

 

 

-- 修改列属性:

-- 语法: ALTER TABLE 表名 MODIFY t_name varchar(10);

alter table e_user modify t_age2 int;

 

注意:只有当列只包含空值时,类型、大小都可以修改,否则修改可能不能成功。

 

 

 MySQL约束

  约束

   什么是约束?

1.什么是约束?

1)约束是在表上强制执行的数据校验规则。

2)约束主要用于保证数据库的完整性。

3)当表中数据有相互依赖性时,可以保护相关的数据不被删除。

 

   创建约束的时机

    建表时候创建(列级约束)

    建表后创建(表级约束)

   约束操作

    主键约束

1.主键从功能上看相当于“非空约束+唯一约束”,用来确定表中的一行数据;

2.一个表中只允许有一个主键;

3.主键字段可以是单字段或者是多字段的组合;

 

 

 

     创建主键约束

-- 定义列级主键约束

CREATE TABLE STUDENT_TABLE

(

STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,

STUDENT_NAME VARCHAR(255)

);

 

--定义表级主键约束

ALTER TABLE STUDENT_TABLE

ADD PRIMARY KEY (STUDENT_ID);

     删除主键约束

-- 删除主键约束

ALTER TABLE STUDENT_TABLE DROP PRIMARY KEY;

    非空约束

1.非空约束属于列级约束,只能使用列级约束语法定义;

2.确保字段值不允许为空;

 

注意:

1)所有数据类型的值都可以是NULL。

2)空字符串不等于NULL。

3)0也不等于NULL。

     创建非空约束

-- 定义列级非空约束

CREATE TABLE STUDENT_TABLE

(

STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,

STUDENT_NAME VARCHAR(255) NOT NULL

);

 

--定义表级非空约束

ALTER TABLE STUDENT_TABLE

MODIFY STUDENT_NAME VARCHAR(255) NOT NULL;

     删除非空约束

-- 删除非空约束

ALTER TABLE STUDENT_TABLE

MODIFY STUDENT_NAME VARCHAR(255) NULL;

    唯一约束

1.唯一性约束条件保证字段或者字段组合不会出现重复值;

2.可以对多列建立唯一约束。

 

     创建唯一约束

-- 建立列级唯一约束

CREATE TABLE STUDENT_TABLE

(

STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,

STUDENT_NAME VARCHAR(255) UNIQUE

);

 

-- 建立表级唯一约束

ALTER TABLE STUDENT_TABLE

ADD UNIQUE KEY STUDENT_NAME_UNIQUE(STUDENT_NAME);

 

STUDENT_NAME_UNIQUE是一个自定义的唯一约束名称,方便管理这个约束。

 

 

 

-- 对多列添加唯一索引

ALTER TABLE STUDENT_TABLE

ADD UNIQUE(FIRST_NAME, LAST_NAME);

     删除唯一约束

-- 删除唯一约束

ALTER TABLE STUDENT_TABLE

DROP INDEX STUDENT_NAME_UNIQUE;

 

    外键约束

1.外键是构建于一个表的两个字段或者两个表的两个字段之间的关系;

2.外键确保了相关的两个字段的两个关系:

1)子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空);

2)当主表的记录被子表参照时,主表记录不允许被删除;

3.外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录;

 

添加外键约束的语法:

CREATE TABLE t_dept(

dept_id INT PRIMARY KEY,

NAME VARCHAR(18),

description VARCHAR(255)

);

 

CREATE TABLE t_employee(

employee_id INT PRIMARY KEY,

NAME VARCHAR(18),

gender VARCHAR(10),

dept_id INT REFERENCES t_dept(dept_id),

address VARCHAR(255)

);

 

或者:

 

CREATE TABLE t_employee(

employee_id INT PRIMARY KEY,

NAME VARCHAR(18),

gender VARCHAR(10),

dept_id INT,

address VARCHAR(255),

CONSTRAINT FOREIGN KEY t_employee (dept_id) REFERENCES t_dept(dept_id)

);

 

 

 

 

 

     创建外键约束

CREATE TABLE SCHOOL_TABLE

(

SCHOOL_ID INT PRIMARY KEY AUTO_INCREMENT,

SCHOOL_NAME VARCHAR(255)

);

 

-- 定义列级外键约束

CREATE TABLE STUDENT_TABLE

(

STUDENT_ID INT PRIMARY KEY AUTO_INCREMENT,

STUDENT_NAME VARCHAR(255),

SCHOOL_ID INT,

FOREIGN KEY (SCHOOL_ID) REFERENCES SCHOOL_TABLE(SCHOOL_ID) ON DELETE CASCADE

);

 

-- 定义表级外键约束

ALTER TABLE STUDENT_TABLE

ADD CONSTRAINT FK_STUDENT_SCHOOL_ID FOREIGN KEY(SCHOOL_ID) REFERENCES SCHOOL_TABLE(SCHOOL_ID);

 

注意:

ON DELETE CASCADE:当主表记录被删除,从表中的对应记录也会被删除。

ON UPDATE CANSCADE:当主表记录被更新,从表中的对应记录也会被更新。

ON DELETE SET NULL:当主表记录被删除,从表中的对应记录的外键列会被设置为NULL。

ON UPDATE SET NULL:当主表记录被更新,从表中的对应记录也会被会被设置为NULL。

     删除外键约束

-- 删除外键

ALTER TABLE STUDENT_TABLE

DROP FOREIGN KEY FK_STUDENT_SCHOOL_ID;


推荐阅读
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
author-avatar
Q_jack
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有