姓名 | 年龄 | 班级 |
---|---|---|
小白 | 10 | 六二班 |
小明 | 11 | 六一班 |
班级 | 班主任 |
---|---|
六二班 | 孔子 |
六一班 | 老子 |
eg:网购
数据库: user --> 用户名和密码
数据仓库:哪个时间段用户登录量最多,哪个用户一年购物最多...
mysql -uroot -p123456
通过更改MySQL服务的配置文件来实现
sudo -i
cd /etc/mysql/mysql.conf.d
cp mysqld.cnf mysqld.cnf.bak
[musqld]
character_set_server = utf8
/etc/init.d/mysql restart
exit
1)int 大整型(4个字节)
字段名 int
字段名 int unsigned
取值范围:0~2**32 -1(42亿多)
2)tinyint 微小整型(1个字节)
I、有符号(signed默认):-128 ~ 127
II、无符号(unsigned) : 0~255
3)bigint 极大整型(8个字节)
取值范围:0 ~ 2**64 - 1
4)smallint 小整型(2个字节)
取值范围(0 ~ 65535)
1)float(4个字节,最多显示7个有效位)
I、用法
字段名 float(m,n) m:总位数 n:小数位位数
float(5,2) 取值范围 -999.99 ~ 999.99
II、注意
浮点型插入整数时会自动补全小数位位数
小数位如果多余指定的位数,会对指定位的下一位进行四舍五入
2)double(8个字节,最多显示15个有效位)
字段名 double(m,n) m:表示总位数 n:小说位位数
3)decimal(最多显示28个有效位)
I、用法
字段名 decimal(m,n)
II、存储空间(整数部分和小数部分分开存储)
规则:将9的倍数包装成4个字节
余数 字节
1-2 1
3-4 2
5-6 3
7-8 4
decimal(19,9)
整数部分:10/9=商1余1 4字节+1字节=5字节
小数部分:9/9=商1余0 4字节+0字节=4字节
decimal(43,11)
整数部分:32/9=商3余5 4字节+3字节=7字节
小数部分:11/9=商1余3 4字节+2字节=6字节
1)取值范围:1 ~ 255
2)不给定宽度,默认为1
1)取值范围:1 ~ 65535
2)注意:varchar没有默认宽度,必须给定一个宽度值
1)char : 浪费存储空间,性能高
2)varchar :节省存储空间,性能低
a、数值类型宽度为显示宽度,只用于select查询显示,和占用存储空间大小无关,用 zerofill 来显示效果
id int(3) zerofill
b、字符类型的宽度超过则无法存储
a、定义
字段值只能在列举的范围内选择
b、enum(... ) 单选(最多有65535个不同的值)
字段名 enum(值1,值2,... ,值N)
create table info(sex enum("man","woman","secret"));
insert into info values("man");
select * from info;
c、set(... )多选(最多有64个不同的值)
字段名 set(值1,值2,... ,值N)
插入记录时:“Python,boy,Mysql”
create table hobby(sex set("play","eat","python"));
insert into hobby values("play,python");
select * from hobby;
create table infos(
id int, name varchar(15) ,
age tinyint unsigned,
birth_year year,
birthday date,
class time,
meetting datetime
);
insert into infos values (1,"大宝",40,1979,19790520,090000,20180609120933);
insert into infos values (2,"小爱",23,"1979","1979-05-20","09:00:00","2018-06-09 12:09:33");
select * from infos;
insert into infos values(2,"小宝",25,"2001",CURDATE(),CURTIME(),NOW());
select * from infos;
1、查询1天以内的记录
select * from infos where meeting>(now()-interval 1 day);
2、查询1年以前的记录
select * from infos
where meeting<(now()-interval 1 year);
3、查询1天以前,3天以内的记录
select * from infos where
meeting<(now()-interval 1 day) and
meeting>(now()-interval 3 day);
1、名字中至少有2个字符的记录
select * from sanguo where name like "_%_";
2、匹配名字为非空NULL的记录
select * from sanguo where name like "%";
3、匹配名字中只有三个字符的记录
select * from sanguo where name like "___";
4、匹配姓赵的记录
select * from sanguo where name like "赵%";
1)select name from sanguo where name regexp "[0-9]";
# 匹配名字中带数字的的记录
2)select name from sanguo where name regexp "^[0-9]";
# 匹配名字中以数字开头的记录
3)select name from sanguo where name regexp "[0-9]$";
# 匹配名字中以数字结尾的记录
4)select name from sanguo where name regexp "^司.*懿$";
# 匹配名字中以司开头,以懿结尾的记录
5)select name from sanguo where name regexp " ...";
为了方便,建立直接复制、黏贴一下代码,快速创建数据库和表。
create database MOSHOU;
use MOSHOU;
create table hero(
id int,
name char(15),
sex enum("男","女"),
country char(10)
)default charset=utf8;
insert into hero values
(1,"曹操","男","魏国"),
(2,"小乔","女","吴国"),
(3,"诸葛亮","男","蜀国"),
(4,"貂蝉","女","东汉"),
(5,"赵子龙","男","蜀国"),
(6,"魏延","男","蜀国");
use MOSHOU;
create table sanguo(
id int,
name char(20),
gongji int,
fangyu tinyint unsigned,
sex enum("男","女"),
country varchar(20)
)default charset=utf8;
insert into sanguo values
(1,'诸葛亮',120,20,'男','蜀国'),
(2,'司马懿',119,25,'男','魏国'),
(3,'关6羽',188,60,'男','蜀国'),
(4,'赵云666',200,66,'男','魏国'),
(5,'8孙权',110,20,'男','吴国'),
(6,'貂蝉',666,10,'女','魏国'),
(7,null,1000,99,'男','蜀国'),
(8,'',1005,88,'女','蜀国');
人工智能(mysql)—— 目录汇总