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:记录用户 ...
随机推荐
- Java面试 - PATH与CLASSPATH 的区别?
PATH:操作系统提供的路径配置,用于定义所有可执行程序的路径. CLASSPATH:由JRE提供的,用于定义Java 程序解释时类加载路径.
- jquery入口函数的测试
/*编写一个自定义的jquery框架*/ (function (window,undefined) { var njquery=function (selector ,) { return new j ...
- java中内存泄露有几种?如何分析泄露原因
一.Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址.Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Hea ...
- 20191030-带返回值的回溯算法Leetcode解数独
题目描述 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔 ...
- Activate注解
Activate注解 被该注解修饰的接口,扩展类可能会被加载 ProtocolFilterWrapper.buildInvokerChain @Documented @Retention(Retent ...
- Spring框架ioc概括
什么是Spring且能做什么 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. Spring使用基本的JavaBean来完成以前只可能由EJB完成 ...
- [Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息
[Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息 2018-07-21 23:53:02 larger5 阅读数 4123更多 分类专栏: 网络爬虫 版权声明: ...
- root用户和sudo使用root权限的区别(转)
百度百科:https://baike.baidu.com/item/sudo/7337623?fr=aladdin sudo指令 功能: 以root的身分执行命令 语法: sudo 其他指令 用户: ...
- Java锁的升级策略 偏向锁 轻量级锁 重量级锁
这三种锁是指锁的状态,并且是专门针对Synchronized关键字.JDK 1.6 为了减少"重量级锁"的性能消耗,引入了"偏向锁"和"轻量级锁&qu ...
- (二)SpringBoot之springboot开发工具的使用以及springboot插件的功能
一.springboot开发工具的使用 1.1 在项目中添加springoot开发工具 1.2 功能 修改代码后点击保存自动重启 二.springboot插件的功能 2.1 maven配置 <p ...