MySql笔记之数据表
数据表:行称为记录 列称为字段 用来存储数据
一、数据类型
数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
在我们存储不同类型的数据时,为了数据优化存储,需要选择合适的数据类型。
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笔记之数据表的更多相关文章
- Mysql笔记4数据表操作1
1查看表的结构 (1)show create table +数据库名称 (2)desc+数据库名称 2修改表 (1)表中添加列 alter table 数据库名称 add column addr va ...
- MySQL在创建数据表的时候创建索引
转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CRE ...
- mysql status关键字 数据表设计中慎重使用
mysql status关键字 数据表设计中慎重使用
- MySQL 5.6学习笔记(数据表基本操作)
1. 创建数据表 1.1 最基本的语法 CREATE TABLE tbl_name (col_name column_definition,...) [table_options] -column_d ...
- MySQL第五个学习笔记 该数据表的操作
MySQL在创建表,创建.frm文件保存表和列定义.索引存储在一个.MYI(MYindex)且数据存储在有.MYD(MYData)扩展名的文件里. 一.用SHOW/ DESCRIBE语句显示数据表 ...
- mysql千万级数据表,创建表及字段扩展的几条建议
一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及 ...
- mysql进阶(五)数据表中带OR的多条件查询
MySQL数据表中带OR的多条件查询 OR关键字可以联合多个条件进行查询.使用OR关键字时: 条件 1) 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 2) 如果不符合这些查询条件 ...
- MySQL学习3 - 数据表的操作
本节掌握 一.存储引擎(了解) 二.mysql支持的存储引擎 1.InnoDB 存储引擎 2.MyISAM 存储引擎 3.NDB 存储引擎 4.Memory 存储引擎 5.Infobright 存储引 ...
- 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据
创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名 数据类型 是否为空 自动排序/默认值 主键/外键/唯一键, 列名 数据类型 ...
随机推荐
- [bzoj 1208]STL水过
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1208 看网上的题解都用的手写数据结构……然而直接用set的lower_bound就水过去了 ...
- angular js module 的理解
module其实就是一个容器,里面可以装controller,service,directive,filter等, 官网的解释是:Module :A container for the differe ...
- rpm的使用:查询、安装、卸载、升级
RPM 有五种操作模式,分别为:安装.卸载.升级.查询和验证. RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rp ...
- pip 使用国内源
常用国内的pip源如下:阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple ...
- Linux设置虚拟内存-创建和启用Swap交换区
如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用swap交换区作为虚拟内存是一个不错的选择,如果是SSD硬盘,正常读写速度都在300M ...
- 【20160811】noip模拟-未完
T1 T2 T3 小奇回地球 [问题描述] 简单来说,它要从标号为1的星球到标号为n的星球,某一些星球之间有航线.由于超时空隧道的存在,从一个星球到另一个星球时间可能会倒流,而且,从星球a到b耗费的时 ...
- 汕头市队赛 SRM16
T3 C-2 SRM 16 描述 给一个数列,给出两种数字, 询问在多少个非空区间中这两种数字出现次数相同. 输入格式 第一行:一个数字n,q,n表示数列长度,q表示q组询问 第二行n个数字表示数列A ...
- Node.js 编码转换
Node.js自带的toString()方法不支持gbk,因此中文转换的时候需要加载第三方库,推荐以下两个编码转换库,iconv-lite和encoding. iconv, iconv-l ...
- 平衡树之splay讲解
首先来说是splay是二叉搜索树,它可以说是线段树和SBT的综合,更可以解决一些二者解决不了的问题,splay几乎所有的操作都是由splay这一操作完成的,在介绍这一操作前我们先介绍几个概念和定义 二 ...
- LeetCode 5:Given an input string, reverse the string word by word.
problem: Given an input string, reverse the string word by word. For example: Given s = "the sk ...