1、列出你所知道的Mysql的数据类型?
数值类型:
tinyint
非常小的整型 1字节 -128<->128 or 0<->255(无符号)
smallint
较小的整型 2字节 -32768--32767 0--65545
mediumint
中等大小的整型 3字节 0--16777215
int
标准的整型 4字节 -2147483648--2147483647
bigint
大整数型 8字节 2的64次方
浮点型(小数)
float(M,d) 4字节
float(5,2)小数数值共5位,小数点后2位,小数点前3位
double(M,d) 8字节
定点数
decimal(M,d) M+2字节
字符串:
char(n)
varchar(n)
enum('1', '0')
set('a', 'b', 'c')
日期和时间:
使用int来存储
NULL
NULL意味着“没有值”或“未知值”
可以测试某个值是否为NULL
不能对NULL值进行算术计算
对NULL值进行算术运算,其结果还是NULL
0或NULL都意味着假,其余值都意味着真
2、char()和varchar()的区别?
char是定长,效率高
varchar()是可变长度,效率低
长度变化不大用char,长度变化大的用varchar
3、sql语句默写?
id 字段 有属性 无符号 非空 自增 主键索引
name 字段 char(8) 字符串类型,长度8位,使用定长
sex 字段 enum('1', '0') //稍后添加 枚举类型,0和1
age 字段 tinyint //小整型
classid 字段 字符串类型,长度12,使用定长
create table users(
id int(11) unsigned not null auto_increment primary key,
name char(8) not null,
age tinyint not null,
classid char(12) not null
);
在name后面添加一个sex字段,类型是enum('1', '0')
alter table users add sex enum('0', '1') not null after name;
alter table users modify age tinyint not null;
插入数据:
姓名:小王 性别:男(1) 年龄:25 班级:105
姓名:小彤 性别:女(0) 年龄:20 班级:105
insert into `users` (name,sex,age,classid)values('小王','1',25,'105'),('小彤','0',20,'105');
修改数据:
将小王的性别改为‘0’女的
update users set sex = '0' where name = '小王';
给小王加个索引
create index index_xm on users(name);
alter table users add index index_age(age);
删除数据:
delete from users where classid = '105';
查看表中所有的索引
show indexes from tb_name\G
删除普通索引
alter table users drop index index_xw;
查询年龄大于20的数据,降序排序。
select * from users where age > 20 order by age desc;