MySQL创建表、更改表和删除表
1.创建表
mysql> create table t_address(
-> id int primary key auto_increment, // 设置id为主键,自动增值
-> bookid int,
-> address varchar(100),
-> note_address varchar(100),
-> foreign key(bookid) references t_book(id) // 设置bookid为外键,引用到t_book表中的id字段
-> );
通过复制表的方式快速创建表
mysql> create table t_copy as select * from t_booktype where id=0; //这里给一个不存在的id的值,那么得到的新表只是复制了不包括约束的原表结构,没有复制数据
mysql> create table t_copy as select * from t_booktype; //复制了不带约束的表结构和全部数据
mysql> create table t_authors as select authors from t_book where authors like '%richard%';
mysql> create table t_copy like t_booktype; // 复制原表结构和约束,但是没有数据
常用的数据类型:
varchar 可变长度字符串,可根据实际数据长度动态分配空间,最长255个字符(可存255个汉字或数字?)。
char 定长字符串,不会动态分配空间,速度快,但是会导致空间浪费,最长255个字符。
int 整数,最长11
bigint 长整型
float 单精度浮点型
double 双精度浮点型
date 短日期
datetime 长日期
clob (character large object) 字符大对象,最多可以存储4G字符串。
blob (binary large object) 二进制大对象,声音、图片、视频等,需要IO流插入数据。
常见表的约束:
not null 非空约束,属于列级约束,只能加在字段后面
unique 唯一性约束,但可以包含多个null,属于表级约束,与列级约束见下文所述例子
primary key 主键约束,每张表都应该有一个主键,不一定非得是关键字段用来当主键,只要能突出not null+unique即可,所以“id int primary key auto_increment,"这句话在创建表的时候用到就好了。主键不建议使用varchar类型,并且也不建议使用复合主键。
foreign key 外键约束。比如有一张记录书籍信息的表,还有一张记录书籍类别的表,每一本书都属于某一种类别。这时书籍的表是子表,书籍类别的表是父表。子表中的外键引用父表中的字段,这个字段不一定是主键,但是需要具有唯一性。创建表时先创建父表,再创建子表;插入数据时先插入父表数据,再插入子表数据。子表中插入数据时,如果插入的是父表中没有的类别,那么会报错。删除表时则先删子表,再删父表。
PS:如果两张表之间有多对多的关系,例如学生和老师,每个学生有多个老师,每个老师教多个学生,那么可以在学生和老师之间增加一个关系表,用于记录两者之间的关系。
2.更改表
a.增加字段
mysql> alter table t_copy add column property varchar(20) after booktype;
mysql> alter table t_copy add column property1 varchar(20),
-> add column property2 varchar(20);
b.删除字段
mysql> alter table t_copy drop column property1,
-> drop column property2;
c.更改字段类型
mysql> alter table t_copy modify column property int;
d.给字段添加外键约束
mysql> alter table t_copy add foreign key(property) references t_book(id) on delete cascade;
e.删除字段的外键约束
可以先用show create table t_copy\G 查询到想要删除的外键约束的名称。
mysql> show create table t_copy\G
*************************** 1. row ***************************
Table: t_copy
Create Table: CREATE TABLE `t_copy` (
`id` int NOT NULL DEFAULT '0',
`booktype` varchar(50) DEFAULT NULL,
`property` int DEFAULT NULL,
KEY `property` (`property`),
CONSTRAINT `t_copy_ibfk_1` FOREIGN KEY (`property`) REFERENCES `t_book` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
mysql> alter table t_copy drop constraint t_copy_ibfk_1;
f.将表A的a字段赋值给表B的b字段
mysql>update A join B on A.id=B.Aid set A.a=B.b;
3.删除表
mysql> drop table if exists t_copy;
MySQL创建表、更改表和删除表的更多相关文章
- MySQL创建数据库 easyShopping,包括area表、goods表、customer表、orders表、ordersdetall表、test表
MySQL创建数据库 easyShopping,包括area表.goods表.customer表.orders表.ordersdetall表.test表 商品表表结构: 字段名 说 明 类 型 长 度 ...
- 创建mysql数据库,在新数据库中创建表,再尝试删除表
创建之前,先登录数据库存 mysql -u 账号 -p密码 登录完成后,展示一下已存在的数据库 show databases; 创建数据库 create database test111; 然后展示一 ...
- mysql 如何修改、添加、删除表主键
在我们使用mysql的时候,有时会遇到须要更改或者删除mysql的主键,我们能够简单的使用alter table table_name drop primary key;来完成.以下我使用数据表tab ...
- mysql语句3-插入、修改删除表
二.DML数据操纵语句 关键字:insert(插入) delete(删除) update(更新) select(查询) 1.表创建好以后,就可以插入记录了,语法如下: 方法一 :insert i ...
- SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束
创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...
- Mysql命令增加、修改、删除表字段
alter add 命令用来增加表的字段: alter add命令格式:alter table 表名 add字段 类型 其他:如下所示: ) comment '单位' alter drop 命令删除表 ...
- oracle 删除用户,表空间;循环删除表
select * from dba_tablespaces 说明:查看所有表空间 ----------------------------------------------------------- ...
- MySQL创建用户、授权、删除
1.在MySQL中创建新用户 使用具有shell访问权限的root用户登录MySQL服务器并创建名为“rahul”的新用户.下面的命令只允许从localhost系统访问用户rahul的MySQL服务器 ...
- Mysql 创建普通用户、数据库、表、插入记录,用户赋权
C:\phpStudy\MySQL\bin>mysql -uroot -proot -h127.0.0.1 //创建用户 mysql> insert into mysql.user (ho ...
- MySql新增表的字段,删除表字段
1增加两个字段: create table id_name(id int,name varchar(20));//创建原始数据表 alter table id_name add age int,add ...
随机推荐
- windows批处理详解
转:https://mp.weixin.qq.com/s/Ktbl4P16Qye7OxDNEzJI5Q
- Shell 脚本进阶,经典用法及其案例
一.条件选择.判断 1.条件选择if (1)用法格式 if 判断条件 1 ; then 条件为真的分支代码 elif 判断条件 2 ; then 条件为真的分支代码 elif 判断条件 3 ; the ...
- 学习Java第9天
今天所作的工作: 反射,枚举类型与泛型 明天工作: 1.线程 2.网络通信 所遇到的问题及解决方法: 反射基本思想,泛型类似于类模板. 理解反射太难了,转悠了好半天,关键是理解反射的思想,才容易学.
- python 小兵(8)闭包和装饰器
闭包"是什么,以及,更重要的是,写"闭包"有什么用处. (个人理解) 1."闭包"是什么 首先给出闭包函数的必要条件: 闭包函数必须返回一个函数对象 ...
- 如何在pyqt中通过OpenCV实现对窗口的透视变换
窗口的透视变换效果 当我们点击UWP应用中的小部件时,会发现小部件会朝着鼠标点击位置凹陷下去,而且不同的点击位置对应着不同的凹陷情况,看起来就好像小部件在屏幕上不只有x轴和y轴,甚至还有一个z轴.要做 ...
- Java项目开发中实现分页的三种方式一篇包会
前言 Java项目开发中经常要用到分页功能,现在普遍使用SpringBoot进行快速开发,而数据层主要整合SpringDataJPA和MyBatis两种框架,这两种框架都提供了相应的分页工具,使用 ...
- 关于老Windows平板电脑睡眠状态下无法开机(睡死)的问题及解决方案
1.简述 前几天我从闲鱼上淘了一个二手Windows平板, 拿来上课记笔记用. 型号是联想的Thinkpad Helix 2nd, 2015年出产. cpu是酷睿m-5y71超低功耗处理器, TDP只 ...
- git rm 与 git rm --cached 的区别
感谢原文作者:book_02 原文链接:https://www.jianshu.com/p/1c442fd398b7 git rm : 同时从工作区和索引中删除文件.即本地的文件也被删除了. git ...
- fckeditor for php 上传图片文件名中文乱码,中文文章乱码
转载请注明来源:https://www.cnblogs.com/hookjc/ 中文名乱码是因为:FCKeditor使用UTF-8编码,自己机子比如是Windows系统文件名使用的是GBK编码,在上传 ...
- Protocol类型限制
1.protocol类型限制 设定情景: 某攻城狮A希望找一个会做饭.洗衣服的女生做女朋友,有国企工作的优先. 满足条件的女生都可以向他发送消息 从题目中我们得到要求 会做饭 会洗衣服 有份好工作 @ ...