MySQL基础学习记录(二)单表crud和多表crud
1.记录的操作
1.1单表插入记录
INSERT [INTO] tb_name [(col_name,...)] {VALUES|VALUE} ( {expr | default},... ), (....),...
example :
(创建表的时候设置了第一个字段为自动编号)
INSERT users VALUES (null,'Tim','123',25,1);
INSERT users VALUES (null,'Tim','123',3+6,1);
INSERT users VALUES (null,'Tim','123',25,1),(null,'Rose',md5('123'),25,0);
1.2 单表更新
example:
update users set age = age +5, sex=0;
update users set age = age + 10 where id %2=0;
1.3 单表删除
example:
delete from Users where id = 6;
1.4 单表查询
example:
select 3+5;
select id,username from users;
多表连接后有需要可以加上表的名字:
select users.id,users.username from users;
还可以为列名字加上别名
select id as userId, username as userUsername from users;
1.4.1 where条件语句
1.4.2 group by 对查询结果分组
example:
select sex from users group by sex;
1.4.3having语句设置分组条件
example:
select sex,age from users group by sex having age >35;
select sex,age from users group by sex count(id) >2;
1.4.4order by 对查询结果进行排序
example
select * from Users order by DESC;
select * from Users order by age , id DESC;
1.4.5limit 语句限制查询数量
example:
select * from users limit 2;
select * from users limit 3,2; //从第四条开始返回两条记录
1.4.6查询后插入记录
example
insert test(username) select username from users where age >= 30
1.5 子查询和连接
子查询:
1.5.1 使用比较运算符的子查询
example:
select goods_id,goods_name, goods_price from tb_goods where goods_price >=(select avg(goods_prices) from tb_goods);
当子查询返回多个结果时,可以用any some或者all来修饰
1.5.2 使用(not)in/exists的子查询
使用 insert 。。。set语句可以使用子查询
example
把商品的类型等信息用参照表来保存
先把原数据表的cates数据写入到参照表
参照外键表来更新原表
1.5.3多表更新
连接:
example:
把goods_cate的中文该成6
update tdb_goods inner join tdb_goods_cate on goods_cate= cate_name set goods_cate = cate_id;
多表更新之一步到位
example
商品分类参照实现
create table tdb_goods_brands(...) select brand_name from tdb_goods group by brand_name;
update tdb_goods inner join tdb_brands_name on brand_name = brands_name
set brands_name = brands_id;
这里面其实也绑定了“事实外键”,不是物理外键foreign。
连接的语法结构
1.5.4 内连接 inner join