mysql语句

 建表

create table major(
id int unsigned primary key auto_increment comment 'ID',
major_name varchar(10) comment '学科',
create_time datetime comment'创建时间',
update_time datetime comment '更新时间'
)comment '学科';

comment注解

primary key 主键

key auto_increment 自增

字段

增加字段

(增加major_id在字段gender之后)

alter table student add major_id varchar(20) after gender;

 删除字段

alter table student drop update_time;

修改字段属性 (unique)

(给字段major_name 加上唯一性,不可重复)

alter table major add  unique (major_name);

修改列名 

alter table student change  master_id major_id int;

表内

插入

插入系统时间

insert into major (major_name, create_time, update_time) VALUES ('biology',sysdate(),sysdate());

修改 

在student表中修改id为1的gender值

update student set gender ='1' where id =1;

删除 

delete  from major where id = #{id}

聚合函数

select 聚合函数(字段) from 表名

统计结果表中一级预警的个数
select count(warning_level) from analysisresults where warning_level = '一级预警';

 group by

//选中不同级别的预警  -- 显示预警级别和对应的个数
select warning_level, count(warning_level)from analysisresults group by warning_level;

//having 可以使用聚合函数   --- where 不可以使用聚合函数


 排序

select 字段 from 表名 order by 字段1 排序方式1,字段2,排序方式2  -- 字段需要是纯数字

ASC - 升序
DESC - 降序

外键 

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名) ;

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id); //建立外键

ALTER TABLE 表名 DROP FOREIGN 1 KEY 外键名称;

alter table emp drop foreign key fk_emp_dept_id;   //取消外键


使用外键是确保数据在的准确性和一致性
存在外键的表是子表
不存在的是父表

建立外键后,则不能从父表删除数据,子表可以删除

删除/更新行为

CASCADE
当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则
也删除/更新外键在子表中的记录。

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade;

SET NULL
当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表
中该外键值为null(这就要求该外键允许取null)。 -- 删除父表中的外键后  子表中选中得外键为null

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references
dept(id) on update set null on delete set null ;

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES
主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

多表查询

两个表

外连接查询

       左外连接:查询左表所有数据,以及两张表交集部分的数据

       右外连接:查询右表所有数据,以及两张表交集部分的数据

left join  && right join

放在前面,显示的时候也在前面

select * from student as s right join major m on m.id = s.major_id;

选中字段显示 

select major_name, name from major as m left join my_one.student s on m.id = s.major_id;

内连接查询

查询A、B两表交集部分的数据

两表只显示符合条件的结果,不显示null

select  f.id as fileId, file_name, label_name from files f  join label l on f.label = l.id;

自连接

自连接 -- 自我查询,把自己的两个字段连接

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别1 名B ON 条件 ... ;

select a.name , b.name from emp a , emp b where a.managerid = b.id;

select a.name '员工', b.name '领导' from emp a left join emp b on a.managerid =
b.id;

union / union all


union all 显示全部的信息

union 联合查询,会对查询出来的结果进行去重处理。

如果多条查询语句查询出来的结果,字段数量不一致,在进行union/union all联合查询时,将会报
错


select * from emp where salary < 5000 union select * from emp where age > 50;

 子查询

根据子查询结果不同,分为:
A. 标量子查询(子查询结果为单个值)
B. 列子查询(子查询结果为一列)
C. 行子查询(子查询结果为一行)
D. 表子查询(子查询结果为多行多列)

根据子查询位置,分为:
A. WHERE之后
B. FROM之后
C. SELECT之后

批量删除前缀相同的文件

SELECT CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables WHERE table_name LIKE 'quantities_%';

删除表内所有数据

Delete from analysisresults (表名字) where 1=1;

事务

转账案例:
-- 开启事务
start transaction
-- 1. 查询张三余额
select * from account where name = '张三';
-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';
-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';
-- 如果正常执行完毕, 则提交事务
commit;
-- 如果执行过程中报错, 则回滚事务
-- rollback;

连续左连接+内循环+更改指定数值为文字

case when dpr.result= '0' then '不通过' when dpr.result='1' then '通过' end,

包含

select distinct subMarkName from company_upload_docs where subMark like '%12D902%';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值