数据库的三个数据类型:数值;字符串;日期;
数据库和php是两个概念;
任何后台都能连接mysqi
数据库的增删查改。。。
创建表 create table 表名() 在创建表一定要加字段;
字段类型: 就是数据库的三个数据类型;
数值: 有符号 无符号
tinyint:小整数值 -128,127 0,255 (如果数字超过255 , 系统默认为255)
smallint:大整数值 -32 768,32 767 0,65 535
int:大整数值 -2 147 483 648,2 147 483 647 0,4 294 967 295
bigint:极大整数值; -9,223,372,036,854,775,808,9 223 372 036 854 775 807 0,18 446 744 073 709 551 615
数值后面跟的属性:
unsgined:无符号 只能取到正整数
int(5):代表 数字的长度,最多5位; 如果后面跟 zerofill属性,表示数字的长的必须是5位,不够的话,拿0代替;
主键:primary key() 一个表得有一个唯一标识符;往往都是id 且尽量不要用数据记录去充当组件key; 主键后跟的属性 自增:auto_increment(); 写一条数据,会自动在id的下面 加值 无需自己写
null属性: 默认是null (值可以为空) 但主键不能是null;
not null 属性:值不能为空; 案例:alter table 表名 modify money int not null;
default:默认属性值 在后面加数据记录的时候,字段后面有跟的值,就会有值,没有的话,就是默认值; 案例:alter table t1 modify money int default 10;
float(m,d):单精度 (最多到小数点后7位) 但并不是精确的 案例 :3.123456789----》得到的值 3.1234568; m代表总数,d代表小数;
double(m,d):双精度(最多到小数点后14位) 但也不是精确的; m代表总数,d代表小数;
decimal(m,d):存储货币使用 (精度高且准确,常用于会计) m代表总数,d代表小数;
案例:
1.创建表格的时候
create table 表名(id int primary key auto_increment, age int nonull default=12);
2.改变字段属性的时候;
create table 表名 modify id int primary key auto_increment;
3.如果自增的话添加数据;
insert into 表名(age) values(20),(30),(40); 表名后面一定要加字段,因为 主键,不需要重新赋值,但别的字段要进行赋值;
字符串的属性:
char:定长字符串 空间是固定的,哪怕是一个字母,也还是会占255字节的空间 字母或汉字都是一个字节;
varchar:变长字符串 根据存储量 一个字母一个字节,一个汉字三个字节; 一个字节一个空间,所以varchar 比 char 省空间
mysqi 设置字符编码 charset=utf8/gbkd;
utf8:一个汉字占三个字节;
gbkd:一个汉字占两个字节;
查询数据记录:
select * from 表名 表中所有数据都展现出来;
select id from 表名 通过id的字段查找;
select destinct id from 表名 查询不重复的 destinct
条件表达式:> >= < <= != = and or
聚合查询 (汇总查询)
sum() 对某一字段的数据进行求和;
案例: select sum(money) from 表名;
count() 行的个数(总数)记录总数;
案例: select count(*) from 表名; 建议count() 括号里面带*;
max() 最大值;
min() 最小值;
group by 表示分类聚合;
案例:select sum(求和的字段) from 表名 group by 分类的字段;
with rollup 对分类的结果汇总
案例:select sum(求和的字段) from 表名 group by 分类的字段 with rollup;
having 对分类的结果进行过滤 先看分类后的结果,结果有什么字段,再通过字段进行过滤;
案例:select sum(求和的字段) from 表名 group by 分类的字段 having sum(求和的字段)>条件;
表连接:
内连接:
两张表:进行连接 ,只通过关联字段
首先两张表一个主表拥有id的字段,另一张副表,拥有eid的字段
内连接 id与eid匹配;
语法:select * from 主表,副表 where 主表.id=副表.eid;
外连接: 分为左连接 和 右连接;
左连接:select * from 主表 left join 副表 on 主表.id=副表.eid;
右连接:select * from 主表 right join 副表 on 主表.id=副表.eid;
场景想象
主表在前《 副表在后 》
左连接:主表为主;
右连接:副表为主;
子查询:
in 把一表查询结果当条件,在另一个表进行查询,(子查询必须按唯一一个字段查询);
案例:
select * from 主表 where id in(select eid from 副表);
解析:获取副表中eid字段的内容,将副表中的内容当条件 ,在去查询主表中相对应的内容;(eid 必须按唯一一个字段查询)
not in 刚好与in相反;
案例:
select * from 主表 where id not in(select eid from 副表);
解析:获取副表中的eid字段的内容,将副表中的内容当条件,查询除了副表中的其他内容;(eid 必须按唯一一个字段查询)
phpstudy 的数据库操作界面;
mysqi 管理器 ---》 php myadmin 网页地址中 locallhost 后面输入接口 8088
编辑:utf8_general_c 创建
存储引擎:innodn
用户名和密码都默认 root;