表的创建

常见的数据类型

数值型:

整型 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. QComboBox的currentIndexChanged信号死循环问题

    connect(m_pComboBoxDevice, SIGNAL(currentIndexChanged(int)), this, SLOT(sltComboBoxDeviceCurrentText ...

  2. windows自动化测试 (python)

    装插件 pywinauto 命令 pip install --upgrade pywinauto   最简单的一个例子,中文环境下   from pywinauto.application impor ...

  3. SQL查询oracle数据库最近备份情况

    需求,查询RMAN备份情况,通过视图进行查询 SQL> //,) input_g, round(OUTPUT_BYTES///,) output_g order by ; SID OUTPUT_ ...

  4. MySQL 字段类型介绍

    MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...

  5. (五)lucene之特定项搜索和查询表达式

    需求:模糊搜索. 前提:  本例中使用lucene 5.3.0 package com.shyroke.lucene; import java.io.File; import java.io.File ...

  6. linux, kill掉占用60%多cpu的进程,几秒后换个pid 和 command 又出现

    linux, kill掉占用60%多cpu的进程,几秒后换个pid 和 command 又出现?快速清理木马流程.假设木马的名字是xysbqaxjqy,如果top看不到,可以在/etc/init.d目 ...

  7. RESTful接口开发

    package com.aaaaaa.manager.controller; import org.springframework.beans.factory.annotation.Autowired ...

  8. javadoc 自动生成java帮助文档

    用法: javadoc [options] [packagenames] [sourcefiles] 选项: -public 仅显示 public 类和成员 -protected 显示 protect ...

  9. 踩坑记录-连接 MongoDB Compass Community 报错

    在控制台输入 mongod 启动 mongodb服务,地址栏输入http://localhost:27017/ 能看到下图,表示服务启动成功. 打开"MongoDB Compass Comm ...

  10. Java代理模式示例程序

    Java代理模式示例程序 当然不是我想出来的,是我看的一个网上教程里的. 模拟的是一个对电脑公司的代理 真实类的接口: public interface SaleComputer { public S ...