热门标签 | 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;


推荐阅读
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • Lua字符串1.字符串常见形式字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua语言中字符串可以使用以下三种方式来表示:•单引号间的一串字符。 ... [详细]
  • 本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ... [详细]
  • 本文介绍如何通过Java代码调用阿里云短信服务API来实现短信验证码的发送功能,包括必要的依赖添加和关键代码示例。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 本报告记录了嵌入式软件设计课程中的第二次实验,主要探讨了使用KEIL V5开发环境和ST固件库进行GPIO控制及按键响应编程的方法。通过实际操作,加深了对嵌入式系统硬件接口编程的理解。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
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社区 版权所有