表的创建

常见的数据类型

数值型:

整型 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基础篇--表的管理的更多相关文章

  1. MySQL基础篇——安装、管理

    MySQL 安装 所有平台的 MySQL 下载地址为https://dev.mysql.com/downloads/mysql/ .挑选你需要的 MySQL Community Server 版本及对 ...

  2. mysql基础-数据库表的管理-记录(四)

    0x01 MySQL中字符大小写 1.SQL关键字及函数不区分大小写 2.数据库.表及视图名称的大小写区分与否取决于底层OS及FS 3.存储过程.存储函数及事件调度器的名字不区分大小写,但触发器区分大 ...

  3. MySQL基础之表的管理

    添加和删除字段操作 添加字段 alter table tbl_name add 字段名称 字段属性 [完整性约束条件] [first|after 字段名称之后]; 删除字段 alter table t ...

  4. mysql基础篇--库的管理

    库的创建 create database [if not exists] 库名; 库的修改 alter database 库名 character set 字符集; #更改库的字符集 库的删除 dro ...

  5. 【目录】mysql 基础篇系列

    随笔分类 - mysql 基础篇系列 mysql 开发基础系列22 SQL Model(带迁移事项) 摘要: 一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql m ...

  6. MySQL基础知识:启动管理和账号管理

    整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...

  7. 重新整理 mysql 基础篇————— 介绍mysql[一]

    前言 准备整理mysql的基础篇了,前面整理了sql语句序列的的<sql 语句系列(八百章)>,感觉很多用不上,就停下来了,后续还是会继续整理. mysql 基础篇主要是对一些基础进行整理 ...

  8. MySQL数据库以及表的管理

    MySQL数据库以及表的管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 今天我们探讨的话题就是如何使用MySQL做开发,我们运维的主要工作不是去开发SQL的,但尽管如此,我们有 ...

  9. MySQL库和表的管理

    MySQL数据库服务配置好后,系统会有4个默认的数据库. information_schema:虚拟对象,其对象都保存在内存中performance_schema:服务器性能指标库mysql:记录用户 ...

随机推荐

  1. jqGrid获取选中行id集合

    $("#jqGrid").jqGrid("getGridParam","selarrrow");

  2. docker安装详细步骤-centos7

    https://www.runoob.com/docker/centos-docker-install.html 一.安装docker 1.Docker 要求 CentOS 系统的内核版本高于 3.1 ...

  3. HttpClient的几种请求方式

    public static String doPostToken(String tokenUrl,String clientId,String clientSecret,String grantTyp ...

  4. sqlite lib导入

    依赖 1.System.Data.SQLite 2.SqlKata //https://www.nuget.org/profiles/SQLite //http://system.data.sqlit ...

  5. vue项目搭建通过vue-cli包括组件路由的使用实现基本的前端项目全流程

    github上项目地址:https://github.com/comonly/javaweb_blog/tree/master/blog_diverse_frontend 具体搭建流程及实现方式:ht ...

  6. 2020企业python真面试题持续更新中

    目录 1.软件的生命周期 2.如何知道一个python对象的类型 3.简述Django的设计模式MVC,以及你对各层的理解和用途 4.什么是lambda函数,说明其使用场景 5.python是否支持函 ...

  7. python并发编程之协程(实践篇)

    一.协程介绍 协程:是单线程下的并发,又称微线程,纤程.一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的. 对于单线程下,我们不可避免程序中出现io操作,但如果我们 ...

  8. SAS学习笔记42 宏程序

    Autocall Macro是由SAS提供的一些实现特定功能的Macro Program,可以在代码中直接使用 其中以Q开头的相比正常的多了隐藏特殊字符的功能(称之为Macro Quoting): K ...

  9. (一)JNDI基础

    一.简介 在Tomcat 4.1.27之后,在服务器上就直接增加了数据源的配置选项,直接在服务器上配置好数据源连接池即可.在J2EE服务器上保存着一个数据库的多个连接.每一个连接通过DataSourc ...

  10. B+Tree的基本介绍

    概念 特点 B-Tree有许多变种,其中最常见的是B+Tree,例如MySQL就普遍使用B+Tree实现其索引结构. 与B-Tree相比,B+Tree有以下不同点: 每个节点的指针上限为2d而不是2d ...