数据库的操作
a) 创建数据库:create database 库名[库选项];
b) 查看数据库:show databases; show create database 库名;
c) 删除数据库:drop database [if exists] 库名
d) 修改数据库:只能修改库选项;alter database 库名 新的库选项
数据表操作
e) 选择数据库:显式的选择,在表名的前面加上库名;隐式的选择,use 库名;
f) 创建数据表:create table 表名(字段列表)[表选项];
g) 查看数据表:show tables; show create table 表名; describe|desc表名;
h) 修改数据表:
修改表名:alter table 旧表名rename to新表名;rename table旧表名to新表名
修改列定义:增加一列:alter table 表名add新字段名 字段类型;
删除一列:alter table 表名drop字段名;
修改字段类型:alter table 表名modify字段名 新的字段类型
修改字段排序:alter table 表名modify字段名1新的字段类型
first|after 字段名2
重命名字段:alter table 表名change旧字段名 新字段名 新字段类型
修改表选项:alter table 表名 新的表选项(default charset gbk engine Myisam)
数据操作
i) 插入数据:insert into 表名(字段列表)values(值列表)
j) 查看数据:select *|字段列表from表名[where查询条件]
k) 删除数据:delete from 表名[where删除条件] | truncate table teacher; 连主键一起删
l) 修改数据:update 表名set字段1=新值1,字段2=新值2……[where修改条件]
列属性
a) null|not null,缺省值是null,也就是允许为空,如果是not null而又没有给该字段赋值的话,系统会首先查询该字段有没有默认值
b) default:给一个字段一个默认值,如果没有给该字段填充数据,就用该默认值来代替,通常就是配合not null一起使用
c) primary key:主键,唯一可区别其他记录的字段,一个表中只能有一个主键,也可以很多个字段组合成一个组合主键,而且不允许为空!
d) unique key:唯一键,与主键的区别是唯一键可以有很多个,而且允许为空
e) auto_increment:自动增长,使用这个属性有两个条件,第一该字段必须为整型,第二该字段必须存在索引,通常就是配合主键一起使用,也可以通过修改表选项设置自动增长的默认初始值
f) comment:列注释
m)
数值类型
1. 整数
类型
大小
有符号(最小值/最大值)
无符号(最小值/最大值)
tinyint(m)
1个字节
-128/127
0/255
smallint(m)
2个字节
-32768/32767
0/65535
mediumint(m)
3个字节
-8388608/8388607
0/16777215
int(m)
4个字节
-2147483648/2147483647
0/4294967295
bigint(m)
8个字节
-9223372036854775808/9223372036854775807
0/18446744073709551615
2. 小数
类型
名称
大小
备注
float(M, D)
单精度数
4个字节
默认精度位数为6到7位左右(取决于操作系统)
double(M, D)
双精度数
8个字节
默认精度位数为16到17位左右(取决于操作系统)
decimal(M, D)
定点数 也叫货币型
变长,大致是每9个数4个字节
M最大为65默认为10;D最大为30默认为0;
日期时间型
类型
显示格式
取值
大小
DATETIME
YYYY-MM-DD HH:MM:SS
1000-01-01 00:00:00到9999-12-31 23:59:59
8个字节
TIMESTAMP
YYYY-MM-DD HH:MM:SS
1970-01-01 00:00:00到2038-01-19 03:14:07(UTC)
4个字节
DATE
YYYY-MM-DD
1000-01-01到9999-12-31
3个字节
TIME
HH:MM:SS
-838:59:59到838:59:59
3个字节
YEAR
YYYY
1901到2155
1个字节
字符串类型
char和varchar
都需要指定字符的长度,char中的长度是字符的长度,而varchar的长度是字节的长度
char中指定的长度就是实际占用的长度,而varchar指定的长度只是一个范围,所以varchar还要拿1-2个字节存储该字符串到底有多少个字节,并且varchar中能够实际存储的字符跟编码有关(utf8编码20000多,gbk编码30000多)
varchar对存储空间的占用更灵活,但是char的效率更高
如果字符串的长度是固定已知的,就用char,如果字符串的长度是可变的,就用varchar
text:文本类型,使用起来类似于varchar,只不过这里不需要指定长度,其中longtext认为文本没有限制
enum:枚举类型,类似于单选!实际存储的是原选项的位置,位置用1,2,3,4来代替,理论上最多可以表示65535个选项
set:集合类型,类似于多选!实际存储的是也原选择的位置,位置用1,2,4,8来代替,然后把所有选项的位置相加,理论上最多可以表示64个多选项
binary、varbinary、blob:二进制文本类型,就是字节流的char、varchar和text,在实际的项目中,很少使用
类型
最大长度
备注
char 定长
定长字符类型:255个字符
Char(M),M表示字符数
varchar 变长
变长字符类型:65535字节,但需要1-2个保存信息,同时由于记录的限制,实际最大值为65532
编码不同字符数不同:
Gbk<=32767
Utf8<=21845
tinyText
text
mediumText
longText
(2^8) à 256字节
(2^16)-1 à65535字节,约64KB
(2^24)-1 à16777215字节,约16M
(2^32)-1字节à4294967295字节,约4G
定义时无需指定长度,将会自动计算
enum
枚举:数字65535
内部存储是整型;字段只能是某一个值
set
集合:最多占8个字节,即64个状态值