MySQL学习笔记_2_MySQL创建数据表(上)
MySQL创建数据表(上)
一、创建数据表的SQL语句模型【弱类型】
CREATETABLE [IF NOT EXISTS]
表名称(
字段名1列的类型[属性][索引],
字段名2
列的类型[属性][索引],
…
字段名n列的类型[属性][索引],
)[表属性][表字符集];
【表名称,字段名需要自己来命名】
【SQL语句并不区分大小写,但是一个文件名:在Windows下不区分大小写,但是在
Linux/UNIX下是区分大小写的】
【命名规则: 1、有意义(英文,英文组合或英文缩写)
2、自己定的名称最好小写。
3、SQL语句最好大写。】
1、 CREATETABLE
users(
idINT,
nameCHAR(32)
);
2、 SHOWTABLES;
3、 DESCusers;
4、 SELECT*
FROM users;
二、数据值与列类型
都以空间大小来细分,能够存下即可!
1、数值型
整型(整数):
非常小整数型 1字节
-128~127 0~255(无符号)
TINYINIT
较小整数型 2字节
-32768~32767 SMALLINIT
中等大小整数型 3字节
0~16777215 MEDIUMIINT
标准整数型 4字节
-2147483648~2147483647 INT
大整数型 8字节
BIGINT
【可以添加属性:UNSIGNED】
浮点型(小数):
FLOAT(M,N)
4字节
【长度M,保留小数点后N位】
DOUBLE(M,N)
8字节
【五舍六入】
DECIMAL(M,N)
M+2字节
【定点数,以字符串形式存储数据,
更精确的保存数据,但是效率会有所折扣。】【四舍五入】
【浮点数会存在误差,因此在对数字敏感的时候,需要用定点数来存储!】
3、字符型
MySQL支持以单引号与双引号表示字符串类型。
如“MySQL”与
'MySQL'相同
char(M)
最大255
固定长度字符串
varchar(M)
最大255
可变长度字符串
char(4) varchar(4)//
永远比字符多一个字节
'' 4 '' 1字节
'a' 4 'a' 2字节
'abcd' 4 'abcd' 5字节
'abcdefg' 4 'abcdefgh' 5字节
char类型会截取尾部的空格;
示例: CREATETABLE
IF NOT EXISTS tab(v varchar(4),c char(4));
INSERTINTO tab(v,c) VALUES(“ab ”,”ab ”);
SELECTCONCAT(v,”#”),CONCAT(c,”#”) FROM tab;
最佳实践:
固定长度,推荐使用char类型(可能会浪费一定空间)。
可变长度,推荐使用varchar类型(可能会付出一些性能损耗)
text
文本数据:文章,日志
长度:2^16-1
MEDIUMTEXT
LONGTEXT
blob
二进制数据:照片,电影
长度:2^16-1
MEDIUMBLOB
LONGBLOB
【虽然没法通过SQL语句将照片,电影,压缩包等二进制文件插入到数据库中,
但是我们可以通过C++/Java等编程语言将二进制文件读成二进制数据流,然
后保存到数据库中】
ENUM
枚举 1~2字节
ENUM(“one”,”two”,”three”,”four”)~65535
一次只能有一个值
SET集合 1,2,3,4,8字节
SET(“one”,”two”,”three”,”four”)~64
一次可以有多个值,用“,”隔开。
4、日期型
DATE YYYY-MM-DD //如果位数充足,可以不用加‘-’
TIME hh:mm:ss //位数充足,可以忽略‘:’,位数不足,从后面截取
DATETIME YYYY-MM-DDhh:mm:ss
TIMESTAMP YYYYMMDDhhmmss //位数不足时,不可忽略前导0
YEAR YYYY
【创建数据表时,最好不要使用这些时间值,最好使用C++/Java等编程语言中的整数来保存
时间,这样更方便计算,如C++中的int,PHP中时间戳1970-1-10:0:0】
MySQL学习笔记_2_MySQL创建数据表(上)的更多相关文章
- MySQL学习笔记_3_MySQL创建数据表(中)
MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...
- MySQL学习笔记_4_MySQL创建数据表(下)
MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...
- MySQL学习(三): 初识数据表
打开数据库: USE db_name : 打开数据库. 创建数据表: 查看数据表: 查看数据表结构: 数据简单的插入与查找: 插入:INSERT [INTO] tbl_name [(col_name) ...
- mysql学习(八)数据表类型-字符集
数据存储引擎: MyISAM:强化快速读取操作. 也有缺点.一些功能不支持 InnoDB:支持一些MyIASM一些不支持的功能 缺点:占用空间大 对比 ...
- MySQL学习(一) 数据表基本操作
创建数据库:create database db_name 查看数据库结构:show create database db_name 删除数据库:drop database db_name 查看数据库 ...
- MySQL学习笔记_9_MySQL高级操作(上)
MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1; #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...
- MySQL学习笔记02_数据库和表的基本操作
02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...
- MySQL学习笔记十一:数据导入与导出
数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...
- MySQL学习笔记2(多表操作)
外键:使两张表之间存在关联 特点: 1.从表外键的值是对主表主键的引用 2.从表外键类型,必须与主表主键类型一致 示例: 创建两个表并准备数据: USE mybase; CREATE TABLE ca ...
随机推荐
- [CF733D]Kostya the Sculptor(贪心)
题目链接:http://codeforces.com/contest/733/problem/D 题意:给n个长方体,允许最多两个拼在一起,拼接的面必须长宽相等.问想获得最大的内切圆的长方体序号是多少 ...
- CALayer总结(一)
1.geometryFlipped 设置为yes,则子图层或者子视图本来相对于左上角放置 改为 相对于左下角放置: 2.contents 3.contentGravity: kCAGravityC ...
- TestNg测试框架使用笔记
Gradle支持TestNG test { useTestNG(){ //指定testng配置文件 suites(file('src/test/resources/testng.xml')) } } ...
- 2016.3.22考试(HNOI难度)
T1 盾盾的打字机 盾盾有一个非常有意思的打字机,现在盾哥要用这台打字机来打出一段文章. 由于有了上次的经验,盾盾预先准备好了一段模板A存在了内存中,并以此为基础来打出文章B.盾盾每次操作可以将内存中 ...
- [转]十款提高开发效率的PHP编码工具
1 . PHPUnit 测试在软件开发中是相当重要的一环,但很多开发者都只是给予很少的时间去测试,因为这工作的确相当耗时,枯燥并且容易出错.为了解决以上问题,自动化测试工具能让开发者编写一系列测试脚本 ...
- 个人博客作业WEEK 1
一.项目时间规划与实际用时 PSP2.1 Personal Software Process Stages 预计时间/h 实际时间/h Planning 计划 · Estimate · 估计这个任 ...
- iOS - Swift NSKeyedArchiver 数据归档
前言 public class NSKeyedArchiver : NSCoder public class NSKeyedUnarchiver : NSCoder 在 OC 语言中,归档是一个过程, ...
- 这个算asp.net的一个bug吗?
asp.net设置按钮Enabled="false"后OnClientClick中添加的验证脚本消失了 下面的确可以 <asp:Button ID="btnRegi ...
- Java开发中的一些小技巧
原文:http://www.cnblogs.com/xdp-gacl/p/3490276.html 一. Java获取URL地址中传递的参数 /** * 获取URL中的参数名和参数值的Map集合 * ...
- bzoj3529(莫比乌斯反演+离线+树状数组)
在你以为理解mobus的时候,苦苦想通过化简公式来降低复杂度时,这题又打了我一巴掌. 看来我并没有理解到acmicpc比赛的宗旨啊. 这么多次查询可以考虑离线操作,使用树状数组单点更新. /***** ...