mysql基础篇--表的管理
表的创建
常见的数据类型
数值型:
整型 tinyint、smallint、mediumint、int/integer、bigint
特点:
1.如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
2.如果插入的数值超出了正型的范围,会报out of range异常,并且插入临界值
3.如果不设置长度,会有默认的长度
长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用!
小数型
浮点型:float(M,D) double(M,D) 定点型:decimal(M,D)
特点:
1.M:位数(整数部位+小数部位) D:(小数部位) 如果超过范围,则插入临界值
2.M和D都可以省略 如果是decimal,则M默认是10,D默认是0 如果是float和double,则会根据插入的数值的精度来决定精度
3.定点型的精度较高,如果要求插入的数值精度要求高如货币运算等则考虑使用
字符型
char varchar text blob(较大的二进制) enum(用于保存枚举) set(用于保存集合)
特点
写法 | M的意思 | 特点 | 空间的耗费 | 效率 | |
---|---|---|---|---|---|
char | char(M) | 最大的字符数,可以省略,默认为1 | 固定长度的字符 | 比较耗费 | 高 |
varchar | varchar(M) | 最大的字符数,不可以省略 | 可变长度的字符 | 比较节省 | 低 |
日期型
date 只保存日期 time 只保存时间 year 只保存年
datetime 保存日期+时间(不受时区影响) timestamp 保存日期+时间(受时区影响)
常见约束
NOT NULL 非空 DEFAULT 默认值 PRIMARY KEY 主键 UNIQUE 唯一 FOREIGN KEY 外键 check
列级约束:六大约束语法上都支持,但外键约束没有效果
表级约束:除了非空,默认,其他都支持
主键约束和唯一约束区别:
唯一性 | 是否允许为空 | 可以有多个NULL | 是否允许组合 | |
---|---|---|---|---|
PRIMARY KEY | √ | × | 最多有1个 | √,但不推荐 |
UNIQUE | √ | √ | 可以有多个 | √,但不推荐 |
外键特点:
1.要求在从表设置外键关系
2.从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3.主表的关联列必须是一个key(一般是主键或唯一)
4.插入数据时,先插入主表,后插入从表;删除数据时,先删除从表,后删除主表
#可以通过下面两种方式删除主表的记录
#方式一:级联删除
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
#方式二:级联置空
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON SET NULL;
标识列:
标识列又称自增长列
特点:
1.标识列必须和主键搭配吗?不一定,但要求是一个key
2.一个表可以有几个标识列?至多一个
3.标识列的类型只能是数值型
4.标识列可以通过
show variables like '%auto_increment%'; 查看标识列的设置值
set auto_increment_increment=3; 设置步长 1 4 7 10
create table if not exists 表名(
列名 列的类型(长度) 约束,
列名 列的类型(长度) 约束,
列名 列的类型(长度) 约束,
.
.
.
列名 列的类型(长度) 约束
);
CREATE TABLE students(
id INT PRIMARY KEY AUTO_INCREMENT, #主键 自增
stuName VARCHAR(20) NOT NULL, #非空
sex CHAR(1),
age INT DEFAULT 18, #默认
seat INT UNIQUE, #唯一
majorid INT,
FOREIGN KEY(majorid) REFERENCES major(id) #外键
);
表的修改
#修改表名
alter table 表名 rename to 新表名;
#添加新列
alter table 表名 add column 列名 类型;
#修改列名
alter table 表名 change column 旧列名 新列名 类型;
#修改列的类型或约束
alter table 表名 modify column 列名 类型;
#删除列
alter table 表名 drop column 列名;
表的删除
drop table [if exists] 表名;
表的复制
#仅仅复制表的结构
create table 新表名 like 来源表;
#复制表的结构和数据
create table 新表名 select * from 来源表;
#只复制部分数据
create table 新表名 select id,name from 来源表 where id>5;
#仅仅复制某些字段
create table 新表名 select id,name from 来源表 where 0;
修改表时添加约束
/*
添加列级约束
alter table 表名 modify column 列名 类型 约束;
添加表级约束
alter table 表名 add 【constraint 约束别名】 约束类型(字段名) 【外键的引用】;
*/
#添加非空约束
ALTER TABLE students MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#添加默认约束
ALTER TABLE students MODIFY COLUMN age INT DEFAULT 18;
#添加主键
#1.列级约束
ALTER TABLE students MODIFY COLUMN id INT PRIMARY KEY;
#2.表级约束
ALTER TABLE students ADD PRIMARY KEY(id)
#添加唯一约束
#1.列级约束
ALTER TABLE students MODIFY COLUMN seat INT UNIQUE;
#2.表级约束
ALTER TABLE students ADD UNIQUE(seat)
#添加外键约束
ALTER TABLE students ADD CONSTRAINT major_id FOREIGN KEY(majorid) REFERENCES major(id);
修改表时删除约束
#删除非空约束
ALTER TABLE students MODIFY COLUMN stuname VARCHAR(20) NULL;
#删除默认约束
ALTER TABLE students MODIFY COLUMN age INT;
#删除主键
ALTER TABLE students DROP PRIMARY KEY;
#删除唯一
ALTER TABLE students DROP INDEX seat;
#删除外键约束
ALTER TABLE students DROP FOREIGN KEY 约束别名;
mysql基础篇--表的管理的更多相关文章
- MySQL基础篇——安装、管理
MySQL 安装 所有平台的 MySQL 下载地址为https://dev.mysql.com/downloads/mysql/ .挑选你需要的 MySQL Community Server 版本及对 ...
- mysql基础-数据库表的管理-记录(四)
0x01 MySQL中字符大小写 1.SQL关键字及函数不区分大小写 2.数据库.表及视图名称的大小写区分与否取决于底层OS及FS 3.存储过程.存储函数及事件调度器的名字不区分大小写,但触发器区分大 ...
- MySQL基础之表的管理
添加和删除字段操作 添加字段 alter table tbl_name add 字段名称 字段属性 [完整性约束条件] [first|after 字段名称之后]; 删除字段 alter table t ...
- mysql基础篇--库的管理
库的创建 create database [if not exists] 库名; 库的修改 alter database 库名 character set 字符集; #更改库的字符集 库的删除 dro ...
- 【目录】mysql 基础篇系列
随笔分类 - mysql 基础篇系列 mysql 开发基础系列22 SQL Model(带迁移事项) 摘要: 一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql m ...
- MySQL基础知识:启动管理和账号管理
整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...
- 重新整理 mysql 基础篇————— 介绍mysql[一]
前言 准备整理mysql的基础篇了,前面整理了sql语句序列的的<sql 语句系列(八百章)>,感觉很多用不上,就停下来了,后续还是会继续整理. mysql 基础篇主要是对一些基础进行整理 ...
- MySQL数据库以及表的管理
MySQL数据库以及表的管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 今天我们探讨的话题就是如何使用MySQL做开发,我们运维的主要工作不是去开发SQL的,但尽管如此,我们有 ...
- MySQL库和表的管理
MySQL数据库服务配置好后,系统会有4个默认的数据库. information_schema:虚拟对象,其对象都保存在内存中performance_schema:服务器性能指标库mysql:记录用户 ...
随机推荐
- c.a.o.c.p.inbound.mysql.rds.RdsBinlogEventParserProxy - prepare to find start position just show master status
2018-12-27 08:39:49.808 [destination = example , address = /127.0.0.1:3308 , EventParser] WARN c.a.o ...
- JavaSE基础(一)--初识Java
Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式 ...
- APP 和小程序中通过日期格式获取时间戳的一个bug
介绍一下背景:业务逻辑就不多说了,就说关键出问题的一步,需要将 2019-10-10 这个格式转换为时间戳.在不同平台不同场景下问题还很怪异 app上:ios 安卓线上的都有问题 ios模拟器没问题 ...
- todo---ezmorph
todo---ezmorph
- python学习-49 json模块
json模块 --------将任何类型都转换为json字符串 方法dumps import json dic={"name":"abc"} data = js ...
- js 颜色随机切换
生成随机颜色 方法1:RGB模式 function randomColor1() { var r=Math.floor(Math.random()*256); var g=Math.floor(Mat ...
- 选择排序——C语言
选择排序 1.算法描述 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕(放 ...
- IDEA忽略不必要提交的文件
1.在idea中安装插件用来生成和管理 .gitignore 文件,安装成功后重启idea 2.新建.gitignore 文件 3.将不需要提交的文件添加到.gitignore 4.删除缓冲文件 . ...
- HTTP method GET is not supported by this URL
Servlet eroor:HTTP method GET is not supported by this URL 错误提示: type: Status report message: HTTP m ...
- 文件导出Excel、Word、Pdf
如果要将查询结果导出Excel,只要将页面的Context-Type修改下: header( "Content-Type: application/vnd.ms-excel"> ...