列的数据类型

整型

类型

取值范围

tinyint

-128 - 127

smallint

-32768 - 32767(几万)

mediumint

-8388608 - 8388607(几百万)

integer

-2147484468 - 2147483647(几十亿)

bigint

-9223372036854775808 - 9223372036854775807(天文数字)

小数类型

decimal[精度,小数位数]

小数位数是定数;数值是什么就是什么,不会进行类似于四舍五入,不会存储近似值。

浮点类型

float[长度,小数位数]

double[长度,小数位数]

float的小数位数不是固定的;超出存储范围,近似值进行存储。

小结:

decimal用来存精确值、定数。

float存储可以四舍五入的。

位类型

bit[(长度)]

场景:

字符串类型

char 0-255

varchar 0-65535 (长度指的是字符的长度。最常用varchar)

long varchar:2^24-1

longtext:4G个字符

日期类型

date 3字节

datetime 8字节

time 3字节

timestamp 4字节

year[(2) | (4)] 1字节

二进制大对象类型

binary: 255个字符

varbinary :65535个字符

blob: 65535字符 ,比如存储照片

long varbinary: 2的24次方减1个字符

long blob: 2的32次方-1个字符

数字列上的列选项

unsigned:无符号的,表示只允许正数。

zerofill:填充0

auto_increment:自动增长。只适应于整数类型。一个表中只有一个列可以是自动增长的。

临时表

临时表是一张表,用来临时保存一些数据。它只对创建它的用户可见。当会话结束时,MySQL自动删除临时表。

保存这些数据的时候,尽量少的占用资源,删除数据的时候,尽量少的占用资源。

临时表的核心:建立和删除表以及里面的数据时,消耗资源非常小。

例:创建临时表sumpenalties,保存所有罚款的总和。

CREATE TEMPORARY TABLE sumpenalties(

total DECIMAL(10,2)

);

CTAS举例

if not exit :强制不显示出错消息。

根据已有的表创建新表

结构一样。

create table copy_teams LIKE teams;(空表,不带数据)

create table copy_teams_1 AS select * from teams;(带数据)

--》PS:这个SELECT可以非常非常的复杂

default

表选项

例26: 创建表city_names,其主键列从10开始编号。

CREATE TABLE city_names(

seqno INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,

NAME VARCHAR(30) NOT NULL

) AUTO_INCREMENT = 10;

INSERT INTO city_names VALUES(NULL,'北京');

INSERT INTO city_names VALUES(NULL,'上海');

INSERT INTO city_names VALUES(NULL,'天津');

SELECT * FROM city_names;

可以看到,序号是从10开始的。

comment:给表添加注释

CREATE TABLE mycomm(

column_a INTEGER

) COMMENT '测试表';

约束,非空,主键,唯一键

约束的类型

NOT NULL:非空约束,强烈建议使用,这个列上不能有空值。

UNIQUE:唯一性约束。这个列的值唯一,可以有多个空值。一个表可以有多个unique。

PRIMARY KEY:主键约束,一个表只有一个,这个列的数值唯一。不能为空。

FOREIGN KEY:外键约束。

CHECK:检查约束

约束定义的时间:

使用CREATE TABLE语句

表已经创建完了,使用ALTER TABLE语句

外键约束

外键是一个约束

外键约束什么呢?

一个表的一个列的数值来自于另外一个表的一个列的数值,成绩表里面的学号这个列里面的所有的数值(学号),来自于学生表里面的学号这个列里面的数值。

外键引用的一定是另外一个表的主键或者唯一键。

on delete(update)

外键约束

1.从表insert数据,会检查主表,看一下外键列的数据是否来自于主键列。

2.对主表进行delete时,检查外表,看一下外表中是否引用了主表中要删除的数据。

只要有引用,主表就受到了限制。

主表删除数据,子表引用了主表的数据。

enum枚举、set

create table t1(id int,name varchar(10),sex enum('男','女')); --》只能取男或者女

desc t1;

insert into t1 values(1,'张三','男');

insert into t1 values(2,'李四','女');

insert into t1 values(3,'张三','M');

–》会报错,因为只能是’男’或者’女’!

enum和set的异同

不同:

set(‘one’,’two’,’three’,’four’); –》可以同时取其中的多个。

enum(‘男’,’女’)); –》只能取男或者女

相同点:

都是对数据库的规范;

后面都不接数据类型

check约束

check(id>100);

check约束的括号里面可以是巨复杂的表达式。

alter、drop table的风险

删除表以前:

1.确认这个表没有人在使用,确实是一个废除的表。

2.确认是这个数据库的表,别删错了别的表。

(建议:status看一下此时的状态!!再删!)

删除临时表要加temporary:

表的修改操作

alter修改表的操作

1.增加一个列

2.删除一个列

3.修改一个列的数据类型 varchar-int

4.修改一个列的数据类型的宽度 varchar(10) varchar(20)

添加一个新列时,默认是加在最后。

mysql>alter table t1 add COLUMN b_date date not null after name;

–》在name列后面添加一个新列b_date

删除列的语句

mysql>alter table t1 drop column b_date;

--》删除b_date列

修改列的数据类型

mysql>alter table t1 modify sex int;

--》把sex列的数据类型宽度

修改列的数据类型的宽度

mysql>alter table t1 modify sex varchar(10);

--》把sex列的宽度改为varchar(10);

对表进行约束的添加和删除

联合主键、几个列合起来形成一个主键。

风险分析

1.数据字典级别改一下。速度快。

2.对100万个数据块进行修改。速度慢。在十分钟的时间里是不能操作的。

视图

视图基本定义

视图是一个逻辑表,它本身并不包含数据。通过它,可以展现基表的部分数据。

用来创建视图的表叫做基表BASE TABLE。

视图是作为一个SELECT语句保存在数据字典中的。

视图语法

-CREATE [OR REPLACE] VIEW view_name [(column_list)]

-AS select_statement

- [WITH [CASCADED | LOCAL] CHECK OPTION]

-OR REPLACE:如果视图已经存在则替换它

视图基本功能

查询接口

权限控制

create view v_players as

select 语句

视图别名

create or replace view 视图名(别名,......)

as select

字段,......

from 表名

通过视图修改表

此方法不常用。

例:

从视图中cplayers中删除联盟会员号码为6524的球员 。

DELETE FROM cplayers

WHERE leagueno=‘6524’;

因为视图本身没有数据,因此对视图进行的dml操作最终都体现在基表中。

with check option约束

对于可以执行DML操作的视图,定义时可以带上WITH CHECK OPTION约束。该约束的作用是:对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制 。

例:创建视图,包含1960年之前出生的所有球员(老兵)。

CREATE OR REPLACE VIEW veterans

AS SELECT *

FROM players

WHERE birth_date < '1960-01-01'

WITH CHECK OPTION;

视图权限

示例1:以用户newroot执行:

CREATE USER 'demo'@'%' IDENTIFIED BY 'demo';

创建视图,视图的定义者是demo

CREATE OR REPLACE

DEFINER='demo'@'%'

SQL SECURITY DEFINER

VIEW cplayers

AS SELECT playerno,leagueno

FROM players

WHERE leagueno IS NOT NULL;

把视图的select权限授给demo :

GRANT SELECT ON tennis.cplayers TO 'demo'@'%' ;

例:以用户newroot执行:

CREATE OR REPLACE

SQL SECURITY DEFINER

VIEW cplayers

AS SELECT playerno,leagueno

FROM players

WHERE leagueno IS NOT NULL;

修改mysql 视图字段类型_MySQL中的数据类型,列选项,视图相关推荐

  1. mysql密码字段类型_MySQL 字段类型

    数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数. 许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定 ...

  2. mysql增加字段类型_mysql 增加修改字段类型及删除字段类型

    MySQL添加字段: alter table `user_movement_log` Add column GatewayId int not null default 0 AFTER `Region ...

  3. 数组在mysql中是什么类型_MySQL 中的数据类型介绍

    1.概述 要了解一个数据库,我们也必须了解其支持的数据类型. MySQL支持所有标准的SQL数据类型,主要分3类: 数值类型 字符串类型 时间日期类型 另一类是几何数据类型,用的不多,也没多介绍.  ...

  4. mysql密码字段类型_MySQL字段类型最全解析

    **前言:** 要了解一个数据库,我们必须了解其支持的数据类型.MySQL 支持大量的字段类型,其中常用的也有很多.前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类 ...

  5. mysql 常用字段类型_mysql 常用字段类型

    tinyint[(m)] [unsigned] [zerofill] 1字节 极小整数,数据类型用于保存一些范围的整数数值范围: 有符号: -128 - 127. 无符号: - 255 特别的: My ...

  6. Mysql数据库---约束类型_mysql数据库的数据类型及约束

    1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) ...

  7. python修改csv文件字段顺序_Pandas中DataFrame交换列顺序的方法实现

    一.获取DataFrame列标签 import pandas as pd file_path = '/Users/Arithmetic/da-rnn-master/data/collectd67_po ...

  8. mysql数据库 日志类型_MySQL中的日志类型(一)-摘要和日志的共同特征

    MySQL中的日志类型(一)-摘要和日志的共同特征 发布时间:2020-07-12 19:56:15 来源:51CTO 阅读:506 作者:月饮沙 MySQL中的日志类型 MySQL具有多种日志,用来 ...

  9. mysql字符串字段类型_MySQL字符串字段类型选择的一般规则

    1.       经常变化的字段用char 2.       知道固定长度的用char 3.       尽量用varchar 4.       超过255字节的只能用varchar或者text 5. ...

最新文章

  1. java入门(p1)进入java的世界
  2. pandas常用函数说明及速查表
  3. linux查看虚拟内存和cpu占用率
  4. 面试时候可以问的问题集锦
  5. 【数据平台】pandas按条件去重
  6. element ui 批量删除之后动态更新列表_气象编程 | Python高效批量绘图方法
  7. 海龟画图 python太阳花_python 简单的绘图工具turtle使用详解
  8. 记录hadoop3.2.2出现Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster问题
  9. 将多个文件绑在一起执行
  10. 获取矩阵元素的方法 4种方法 B(1,2) B(9) B(sub2ind(size(B),3,4))
  11. 梨花众创 - 微信支付宝收款二维码合并器
  12. ffmpeg学习日记3-视频格式和视频编码的关系
  13. python 执行linux rm命令_Linux rm命令:删除文件
  14. fluent瞬态计算终止条件在哪里设置_五.从卡门涡街看FLUENT设置依据
  15. 双拼对简拼和混拼的支持
  16. 【GDKOI2013】琪露诺的完美算法课
  17. Android 函数响应式编程(RxJava3)
  18. 支付宝微信的刷脸支付竞赛马不停蹄
  19. 洛谷 P2071 座位安排 seat.cpp/c/pas
  20. python 字符串输出报错 'utf-8' codec can't encode characters in position

热门文章

  1. 【深度学习前沿应用】图像风格迁移
  2. python数学知识点_python基础知识整理
  3. Android中文文档:开发和调试
  4. 将html或者div转换为图片
  5. 从ON到IN,云原生2.0带来哪些改变?
  6. 夜神模拟器安装证书之burp抓包
  7. 目标导向和UCD以用户为中心的设计-精读
  8. 《游戏行业发展概况》笔记
  9. win7计算机加载项,详细教您win7禁用ie加载项
  10. HTML+CSS大作业——简单页面-名侦探柯南动漫(2页) 动漫网页设计制作 简单静态HTML网页作品 漫画作业成品 学生影视网站模板