数据类型:×××、浮点型,字符型,时间型
1, 数字:
整数类型如下:
tinyint 1B
1B=8bit 1字节=8位 对于tinyint类型最大存储255,如果在数据库中插入
255,在数据库中显示127,这是因为数字有正数和负数,会用1b来存储正负数
只有7字节来存放数据,因此是127
unsigned
create table cc (age tinyint unsigned); ----创建一个表CC,并指定类型为tinyint型,不存储正负数
当使用zerofill 属性时,通常自动unsigned属性
smallint 占用2B
存放的数据范围:(+-)0-2^15
int 占用4B
bigint 占用8B
整数使用规则,能用小的就不用大的,好处:占用空间小,查询速度快
浮点型数据如下
float(x.y) 占用4B,x是数据的总长度(包括整数和小数)y是指定小数点后面的长度
eg:float(3,1) ---- 11.2 这个数据能满足这个类型,表示这个数据必须是3位长度,小数点后面
的长度为1.
float有时候不够精确,会出现四舍五入的情况
decimal(x,y) 类型 占用x+2B字节
跟float用法类似,只是更精确
double 占用8字节。占用空间大
2,字符型
char(x) -------定长的字符串类型,最长为里面的X值,这里的X并
不是字节的意思,而是字符的个数,如输入“亚历山大大帝”为6个字符,
如果X为10,则不足10个字符的部分用空格补齐,如果超过10个字符,则只
取10个,超过部分被舍弃。
char类型特点:因为是定长,所以会很比较浪费空间,因为是定长,操作的
时候,无需另行计算表的长度,所以操作起来会很快。
建议:如果你的数据相差不大,而且你的数据引擎是myisam,那么建议用char
如果是innodb引擎,建议用varchar
varchar(x) -----可变长的字符串类型,最大容纳X个字符。比如varchar(10),如果输入的值达不到10,
那么使用多少用多少,如果大于10,则舍弃超出的部分
varchar的特点:节省空间,拖慢速度,如果插入的字符串中有空格,则还是会被显示
enum -----如果说插入的数据是有限的几个,那么可以考虑使用enum或者set类型,比如性别,则适合使用enum
类型。
3.日期格式
year的时间范围:1901-2155
create table b1 (column1 year);-----定义列类型为year类型
正常情况下,我们插入数据year的值范围
00-69 表示的是2000-2069
70-99 表示的是1970-1999
date格式 3B 范围1000-01-01到9999-12-31
create table b2 (column1 date);----定义列为date类型数据
datetime 8B 范围,能精确到秒
create table b3 (column1 datetime);
表的操作
创建表的基本命令格式
create table tablename (
column1 int,
column2 varchar(10)
);
create table newtablename like oldtablename;----创建一个和老的表一样的新表格,
复制老的表的结构,不复制数据,但是某些属性复制不过来
字段的常见属性
primary key
auto_increment ----自增长,默认从1开始自增长1个值,如果设定一个值,则可以指定从哪个值开始增
auto_increment=100 ----指定自增长值从100开始
not null ----指定值不能为空,在创建表的时候,最好把字段设置为Not null
default ----默认值,设定字段一个默认值
unique -----唯一性约束,如果某列有unique属性,则不容许有重复值
表的属性
engine=myisam ----更改表的引擎
charset=utf8 ----修改编码
create table a1 (id int) engine=myisam charset=utf8;
删除表
drop table a1; ----删除a1表
临时表(temporary)
比如写了比较复杂的SQL语句,这个结果可以临时的放在一张表中,然后再去引用
更改表,经常需要为表添加,删除或者更改字段的属性
alter
alter table 表名 动作(add|drop|modify|change) 修改的值;
例如
alter table a1 add age tinyint unsigned; ----为a1表增加了一列age字段,
增加的此列位于列的最后,如果要指定到相关的位置,可以使用
(first|after column)
如:alter table a1 add age1 tinyint unsigned first; ----把age1这列添加到表的第一列
alter table a1 add age2 tinyint unsigned after name; ---把age2这个字段列增加到name字段后面
删除列(drop)
alter table a1 drop 列名 ------删除一列
修改(modify|change)
alter table a1 modify 列名 列属性值; -----修改列的属性值
alter table a1 modify 列名 列属性值 first;----修改表到第一列位置
show create table tablename\G; ------查看表的属性命令
show create database databasename\G; -----查看数据库的属性
alter修改表的属性
alter table tablename charset=utf8; ----用alter修改表的编码属性
alter database databasename charset=utf8; -----用alter修改数据库的属性
repair table ------用来修复表的命令,如果表出现问题,让表损坏,可以使用此命令
check table tablename; -----用来检测表是否正常的命令
repair table tablename quick extended;----用此命令对table进行修复表,如果修复不成功
repair table tablename use_frm; ----修复表数据
2:命令分为2类
客户端类型:\c --提前终止语句执行
\s (status) ----查看数据库状态
\r (connect) ----重新连接数据库
\g ----无论结束符是什么,直接将此语句送至服务器执行
\G ----无论结束符是什么,直接将此语句送至服务器执行,结果以纵向显示。
\! (system) ----在mysql模式中,可以使用此命令查询Linux系统数据
服务器类型:mysql默认结束符为;分号。可以使用\d 来定义语句结束符
help command -----命令帮助模式
mysqladmin -uroot -poldpassword password newpassword ----修改密码的命令
如:mysqladmin -uroot -p123456 password 123 ------把mysql的密码修改为123
mysqladmin -uroot -ppasswd status --sleep 2 -----查看服务器状态2秒更新一次
variables:显示服务器变量
flush-hosts:刷新登陆限制错误缓存
flush-status:重置大多数的服务器状态变量
shutdown:关闭Mysql进程
version:显示mysql状态信息
start-slave :启动复制,启动从服务器复制线程
stop-slave:关闭复制