数据表:行称为记录  列称为字段 用来存储数据

一、数据类型

数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。

在我们存储不同类型的数据时,为了数据优化存储,需要选择合适的数据类型。

1. 整型

计算机存储方式:二进制

有符号位:数字的最高位用0 1 表达数字是正数或负数

无符号位:不存在负数,永远是正数。范围大致是有符号位的2倍  关键词unsigned

2. 浮点型倍

m:小数点前后数字总位数   d:小数点后位数

eg:float[(7,2)]   小数点后两位数,小数点前5位数,共7位数 最高99999.99

3. 字符型

char(M):定长类型   没有达到制定长度,后面空格补齐

eg:char(5)  我们写值abc  ,但在计算机存储的时候,除了存abc后面将补充两个空格。

varchar(M):变长类型   没有达到制定长度,不用空格补齐

eg:varchar(5)  我们写值abc  ,在计算机存储的时候,只存abc。

4. 日期时间型

时间范围:1000.1.1-----9999.12.31

二、数据表操作

首先创建数据库test1

1. use命令

  • 打开数据库,进入我们想要操作的数据库
  • 用法:use 数据库名称

2. 查看当前使用数据库

  • select database();

3. 创建数据表

CREATE TABLE [IF NOT EXISTS] table_name (column_name data_type,... ...)

小括号中:column_name 列名称(一般会实现确定好列数,当然也可以后期修改)  data_type 数据类型

创建表tb1:username 长度20边长字符类型    age  无符号位tinyint整型   salary  无符号位单精度型

4. 查看数据列表

show tables [from db_name];

默认显示正在使用的数据库的所有表

查看其他数据库表后面加上from 数据库名即可

4. 查看数据表结构

show columns from tb_name;

5. 删除数据表
 DROP TABLE table_name ;

这里我们新创建了数据表tb2,再将它删除掉

6. 插入记录

INSERT [INTO] table_name ( field1,...fieldN ) VALUES ( value1,...valueN );

当我们部分插入时需要将待插入的列名和值一一对应用括号()括起来,当我们插入所有列值时可以省略列名,自动按顺序匹配保存数值。

7. 查找记录

SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]

查看所有记录:用 * 代替列名

select * from table_namel;

where用来匹配对应数值的记录,后面细说。 字符型数据操作需要用引号括起来

8. 删除记录

以删除john为例

delete from tb1 where username = 'John';

9. 添加列

  • 添加一列

First指你插入的这一列在第一列

After指插入在col_name这个列的后面

省略first/after则默认最后一列

eg:在username列后面加上password列

  • 添加多列

添加多列与添加一列区别:

添加一列不需要小括号,可以指定添加位置

添加多列需要用小括号括起来,不可以指定列位置

10. 删除列

  • 删除一列

  • 删除多列

用逗号隔开多个drop,多个列名。

删除列时同时增加列:

在alter关键词之后一起写add和drop,用逗号隔开多列操作即可

三、约束

a)约束保证数据的完整性和一致性

b)约束分为表级约束和列级约束

表级约束与列级约束:列级约束只针对一个字段,表级约束指针对两个和两个以上的字段

c)约束类型

1. 空值与非空

    • null,字段值可以为空
    • not null,字段值禁止为空

Null列里id可以为空,name不能为空。

eg:创建有id有name记录,创建有id无name记录,创建无id有name记录

创建有id空name的记录时报错,提示没有默认值不能为空

2. 自动编号

    • AUTO_INCREMENT
    • 必须与主键组合使用(自动编号需要配合主键使用,主键不一定需要自动编号)
    • 默认情况下初始值为1,每次增量1

直接使用自动编号会提示有错误(原来会提示id不为主键,现在成为提示版本问题)

3. 主键约束

    • PRIMARY KEY
    • 每张表只能存在一个主键
    • 主键保证记录的唯一性(即不存在重复)
    • 主键默认not null

eg1:

创建自动编号的主键id,每新增一条记录,主键自加1

eg2:

    • 主键可以赋值(不是自动编号的情况下)
    • 主键不能重名(唯一性)上述例子。

4. 唯一约束

    • UNIQUE KEY
    • 唯一约束可以保证记录的唯一性
    • 唯一约束的字段可以为空值(null)
    • 每张表可以存在多个唯一约束

5. 外键约束

    • foreign key(外键列_name) references table_name(参照列_name)
    • 父表和子表具有相同的存储引擎,而且禁止使用临时表
    • 数据表的存储引擎只能为InnoDB
    • 外键列和参照列必须具有相似的数据类型:其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同.
    • 外键列和参照列必须创建索引,如果外键列不存在索引的话,mysql将自动创建索引

i:编辑数据表的默认存储引擎

ii:查看搜索引擎

show engines; 默认InnoDB

iii:查看表的创建信息及环境

show create table tble_name\G; \G:以网格形式展示

下面一行显示引擎位InnoDB,编码格式位utf8

iv:错误150:父表和子表数据类型不一致

外键列pid  参照列 id:  数据类型需要一致  数字必须相同(包括unsigned)  字符可以不同

v:插入记录:必须先在父表中插入记录 原因:子表参照的是父表的信息

vi:子表索引不能超出父表中的索引范围

vii:子表外键索引可重复  id 1 3 4 创建错误的记录会使索引增加1

viii:删除父表中索引为3的数据  子表中外间索引为3的自动删除

ix:

6. 默认约束

    • DEFAULT
    • 默认值
    • 插入记录时,没有明确为字段赋值,则自动赋予默认值

枚举取值范围,默认值取3,在创建name为tom的记录时默认sex值为3。

初学者,若有问题,请大佬指出。

MySql笔记之数据表的更多相关文章

  1. Mysql笔记4数据表操作1

    1查看表的结构 (1)show create table +数据库名称 (2)desc+数据库名称 2修改表 (1)表中添加列 alter table 数据库名称 add column addr va ...

  2. MySQL在创建数据表的时候创建索引

    转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CRE ...

  3. mysql status关键字 数据表设计中慎重使用

    mysql status关键字  数据表设计中慎重使用

  4. MySQL 5.6学习笔记(数据表基本操作)

    1. 创建数据表 1.1 最基本的语法 CREATE TABLE tbl_name (col_name column_definition,...) [table_options] -column_d ...

  5. MySQL第五个学习笔记 该数据表的操作

    MySQL在创建表,创建.frm文件保存表和列定义.索引存储在一个.MYI(MYindex)且数据存储在有.MYD(MYData)扩展名的文件里.   一.用SHOW/ DESCRIBE语句显示数据表 ...

  6. mysql千万级数据表,创建表及字段扩展的几条建议

    一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及 ...

  7. mysql进阶(五)数据表中带OR的多条件查询

    MySQL数据表中带OR的多条件查询 OR关键字可以联合多个条件进行查询.使用OR关键字时: 条件 1) 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 2) 如果不符合这些查询条件 ...

  8. MySQL学习3 - 数据表的操作

    本节掌握 一.存储引擎(了解) 二.mysql支持的存储引擎 1.InnoDB 存储引擎 2.MyISAM 存储引擎 3.NDB 存储引擎 4.Memory 存储引擎 5.Infobright 存储引 ...

  9. 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据

    创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名   数据类型    是否为空   自动排序/默认值  主键/外键/唯一键, 列名   数据类型 ...

随机推荐

  1. CF762E Radio Stations

    题目戳这里. 我还以为是KDtree呢,但是KDtree应该也可以做吧. 这是一道数据结构好题.考虑到由于\(K \le 10\),所以我们用两个大vector--\(Left,Right\),\(L ...

  2. 自己模拟实现一下Google的赛马Doodle

    今天的Google Doodle是个动态的,是一个骑马的动态Doodle,是谷歌纪念英国实验摄影师埃德沃德·迈布里奇182周年诞辰,埃德沃德·迈布里奇是运动摄影的开创者,所以谷歌涂鸦以一个运动的摄影作 ...

  3. python 一些乱七八糟的东西

    import random import os import sys import re class _is: def __init__(self,reg): self.cr=re.compile(r ...

  4. CMDB资产管理系统开发【day26】:02-数据写入待存区

    一.资产自动回报数据及个更新流程图 二.表结构注释(NewAssetApprovalZone) class NewAssetApprovalZone(models.Model): "&quo ...

  5. [洛谷P1528] 切蛋糕

    洛谷题目链接:切蛋糕 题目描述 Facer今天买了n块蛋糕,不料被信息组中球球等好吃懒做的家伙发现了,没办法,只好浪费一点来填他们的嘴巴.他答应给每个人留一口,然后量了量每个人口的大小.Facer有把 ...

  6. android View实现变暗效果

    android项目中做一个默认图片变暗,有焦点时变亮的效果.相信大家都能各种办法,各种手段很容易的实现这个效果.这里记录下作者实现这个效果的过程及遇到的问题,仅供参考.见下图(注:因为是eclipse ...

  7. 用 letsencrypt 生成 SSL 证书

    letsencrypt 生成 SSL 证书 事先配置好访问域名解析 在nginx 对应虚拟主机添加一个验证区域: 配置 nginx server { listen 80; ... location ~ ...

  8. DotNet 学习笔记 应用状态管理

    Application State Options --------------------------------------------------------------------- *Htt ...

  9. bzoj 1045糖果传递 数学贪心

    首先我们假设平均数为ave 那么对于第1个人,我们假设他给第N个人K个糖果,第2个人给1,第3个人给2,第n个人给第n-1个人 那么对于第1个人给完n,第2个人给完1,第一个人不会再改变糖果数了,所以 ...

  10. 自定义Java注解(annotation)

    https://www.imooc.com/learn/456  笔记 Java从1.5开始引进注解. 首先解决一个问题,为什么要学习Java注解? 1.看懂别人写的代码,尤其是框架的代码 2.可以是 ...