常用sql语句

# insert 插入语句
# 基本写法
insert into t_user (username, userpwd, usermoney, userstate) values('xiaogege10', '123456', 10000000, 1);

# 省略列名
insert into t_user values(3, 'xiaojiejie', '123456', 10000000, 1);

# 一次性插入多条数据
insert into t_user values(4, 'xiaojiejie1', '123456', 10000000, 1), (5, 'xiaojiejie2', '123456', 10000000, 1),(6, 'xiaojiejie3', '123456', 10000000, 1);

# update修改数据,很危险
update t_user set username='xiaogege1' where userid=2;

update t_user set usermoney=10;

# delete删除,一般都要带条件
delete from t_user where userid=6;

# truncate删除,更危险,delete和truncate的区别是笔试问题
delete from t_user;   -- 清表,带可回收

TRUNCATE t_user;      -- 清表,彻底删除

-- 查询 * 通配符
select * from t_user;

-- 查询 指定列
select username as u, usermoney m from t_user t;

-- 带条件查 多条件 and  or  != 
select username, usermoney from t_user where userid=1;

select * from t_user  where usermoney> 10 and userstate=1; 

-- 模糊查询
select * from t_user where username like '%jiejie%';

-- 子查询:查询嵌套
select t.* from (select * from t_user) as t;

-- 多表联查+子查询
select t.* from (select u.*, r.* from t_user u,  user_to_role i, t_role r 
where u.userid=i.userid and i.roleid=r.roleid) as t where t.userstate=1;

-- 分页问题:数据库里的数据量很大 limit offset  limit 5000, 10
select * from t_user limit 0, 5

-- 多表联查:inner join  left join/ right join
-- inner join使用最为广泛
-- and
select u.*, r.* from t_user u,  user_to_role i, t_role r 
where u.userid=i.userid and i.roleid=r.roleid;
-- inner join
select u.*,r.* from t_user u inner join user_to_role i on u.userid=i.userid  inner join t_role  r on  i.roleid=r.roleid;
-- left join
select u.*,r.* from t_user u left join user_to_role i on u.userid=i.userid  left join t_role  r on  i.roleid=r.roleid;

-- right join
select u.*,r.* from t_user u right join user_to_role i on u.userid=i.userid  right join t_role  r on  i.roleid=r.roleid;

-- 五表联查
select u.*,r.*, m.* from t_user u inner join user_to_role i on u.userid=i.userid  inner join t_role  r on  i.roleid=r.roleid
inner join role_to_menu o on r.roleid=o.roleid inner join t_menu m on o.menuid=m.menuid;

-- 排序 分组 集合函数 asc desc
select * from t_user order by  usermoney desc;

-- group by  sum  avg
select avg(usermoney), rolename from 
(
select u.*,r.*, m.* from t_user u inner join user_to_role i on u.userid=i.userid  inner join t_role  r on  i.roleid=r.roleid
inner join role_to_menu o on r.roleid=o.roleid inner join t_menu m on o.menuid=m.menuid;
) as t


你可能感兴趣的:(数据库笔记)