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


推荐阅读
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
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社区 版权所有