基础创建
字段自动编号auto_increment
( 单词补充:increment 定期的加薪; 增量; 增加)
考点
添加自增
alter
table
[表名] modify
[字段(id)]
int
primary
key
auto_increment
添加自增起始值
alter
table
t_test1 auto_increment = 1000;
栗子:https://www.cnblogs.com/fooobabar/p/11132926.html
查询
select distinct * from 表(对表去重复查询)
(单词补充:distinct 有区别的,明显的,独特的)
查询每个专业的男生人数、女生人数、总人数,已经学生总人数
select 专业名,性别,count(*) as '人数' from xs group by 专业名,性别 with rollup
(单词补充:rollup 归纳总和)
select 专业名,count(*) as '学生数' from xs group by 专业名 having count(*)>10;
case 字段
when 字段条件1 then '名字1'(满足后命名)
when 字段条件2 then '名字2'(满足后命名)
end (结束)
连接多表
表1 join 表2 on 表1.id=表2.id join 表3 on 表2.id=表3.id (注意三表链接中间表要和其他两表有关系)
例题
select Name,Address, case InCome
when InCome>3000 then '高收入'
when InCome<=3000 and InCome>=2000 then '中等收入'
when InCome>3000 then '高收入'
end as '收入水平'
from employees join salary on employees.employeesid=salary.employeesid;
事务
show variables like 'autocommit';查看自动提交事务autocommit
两种
第一种
1.设置为不自动提交事务
set autocommit=0;
2.可以设置回滚点(保存点)rollback to 回滚点--回滚点下面的事务就不执行
savepoint 名1;
rollback 名1;
3.用commit;提交事务
4.set autocommit=1;根据条件修改回来
第二种
1.用begin;语句开始
2.可以设置回滚点(保存点)rollback to 回滚点--回滚点下面的事务就不执行(同上)
3.用commit提交事务
约束
唯一约束 unique
主键约束 primary key
外键约束 constraint 外键名 foreign key( 列名 ) references 外表( 列名 )
DROP TABLE IF EXISTS students;
CREATE TABLE students(
id INT ,
s_name VARCHAR(10) not null,# 非空约束
s_sex CHAR(1) default '男', # 默认约束
s_seat INT,
age INT ,
teacher_id INT ,
#上面是列级约束,下面有表级约束
CONSTRAINT pk PRIMARY KEY(id), #主建约束,pk是起的名,后面一样
CONSTRAINT uq UNIQUE(s_seat), #唯一约束
CONSTRAINT ck CHECK(s_sex='男' OR s_sex='女'), #检查约束
考点
CONSTRAINT fk_students_teacher FOREIGN KEY(teacher_id) REFERENCES teacher(id) #外键约束
);
这里是修改时两边修改。
栗子:https://blog.csdn.net/qq_42402854/article/details/84714934
视图注意事项:
1有表 2有权限 3不含form子查询 4表的视图和表只能有一个order by ,5 limit也是
create or replace view view_name[(字段1...)]
as
select语句
存储过程
delimiter //
create procedure do_query(in num1 integer,in num2 integer,out c1 char(6))
begin
if num1>num2 then
set c1='大于';
elseif num1<num2 then
set c1='小于';
else set c1='等于';
end if;
end//
delimiter ;
call do_query()
select...into
select 列名 into 变量名 from 表 where...
把列值赋值给变量
case when then
delimiter $$
create procedure xscj.result
(in str varchar(4), out sex varchar(4) )
begin
case str
when 'm' then set sex='男';
when 'f' then set sex='女';
else set sex='无';
end case;
end$$
delimiter ;
或者
case
when str='m' then set sex='男';
when str='f' then set sex='女';
else set sex='无';
end case;