-- 插入数据
insert into member values(1,'张三',21,5000);
insert into member(id,name) values(2,'李四');
insert into member values(3,'王五',23,3000)
,(4,'纪六',24,4000)
,(5,'查七',25,5000);
-- 更新(修改数据) 不加限制条件 该字段全部修改
update member set age= 30 where id=1;
-- 删除数据
delete from member where name='王五';
-- 查询数据
-- 全查询
select * from member;
-- 部分查询 别名 as
select id as '卡号'
,name as '姓名'
from member;
-- 在字段中计算
select name ,salary+500 from member;
-- 条件查询
select * from member where salary = 4000;
-- 去重
select distinct * from member;
select * from member group by id;
-- 筛选条件 where
-- 比较运算符 > < >= <= != <>
select * from member where salary != 4000;
-- 逻辑运算符 and or not
select * from member where salary != 4000 and id > 3;
-- 在。。范围
-- in(a,b) not in() a和b
SELECT * FROM member where age in(21,24);
-- between a and b a到b
SELECT * FROM member where age BETWEEN 21 and 24;
-- 判断是否为空 is null/is not null
SELECT * FROM member where age is null;
-- 模糊查询 _匹配任意字符(占位符) %0或多个
SELECT * FROM member where name like '%六';
-- 分页 LIMIT(a)查看前a行,LIMIT(a,b)从查询的结果从第a个下标开始查看b行
-- m条,n页
-- SELECT * FROM student LIMIT m*(n-1),m;
-- 排序 ORDER BY 字段名 ASC -- 升序 DESC -- 降序
SELECT * FROM student ORDER BY score DESC,id desc;
-- 聚合函数
-- 统计次数 COUNT(*)
SELECT COUNT(*) FROM student ;
-- 求和 SUM
SELECT SUM(score) FROM student ;
-- 最大值 max
SELECT max(score) FROM student ;
-- 最小值 min
SELECT min(score) FROM student ;
-- 平均值 avg
SELECT avg(score) FROM student ;
-- 分组 group by 只能查询group by后的普通字段 和聚合函数
SELECT class,max(score) as max_score from student GROUP BY class HAVING max_score>=90;
-- where不能跟分组后面 ,having只能在分组里面
-- where后面不能有聚合函数,having可以
-- SELECT *,指定列,as 别名,聚合函数
-- from 表格名
-- where 逻辑运算符
-- group by 分组
-- having 分组后筛选
-- order by 排序(asc/desc)
-- 笛卡尔积:数量就是两个表数据相乘的结果
SELECT * FROM nation,tank;
-- 直接链接
SELECT * FROM a,b where a.id=b.id;
-- 内链接效果和直接链接一样 INNER JOIN
-- 左链接 以左表为主表 左全右不全 left JOIN
-- 右链接 RIGHT JOIN 以右表为主表 右全左不全 RIGHT JOIN
-- union 上下合并 union 去重 unoin all 不去重
-- 拼接字符串,CONCAT(name,'123')
select name,CONCAT(name,'123'),sex from a;
-- 四舍五入 round(1.732);
SELECT round(1.732);
-- 判断 if(判断条件,true语句,false语句)
SELECT id,name,sex,if(sex='男','m','w') FROM a;
-- 条件判断
-- case
-- when sm=30 THEN 'a'
-- when sm=bTHEN 'b'
-- when sm=50 THEN 'c'
-- else 'A'
-- end
-- 表转置
将表从横列 变纵段
-- 约束
-- 主键约束:primary key 不能重复,不能为空
-- 非空约束 not null 不能为空
-- 默认值约束:default 默认赋予 column_name int(1) default 0
-- 唯一性约束:unique 不可重复,写入null是可以重复
-- 检查约束: check
-- 外键约束:foreign key foreign key(该表字段名) references 其他表(其他表字段名)
-- 如果更新或删除表
-- 无法添加或更新一个数据 在databasename下的tablename1 字段 column1 外键约束了 tablename2的字段 tablename2
-- Cannot add or update a child row: a foreign key constraint fails (`databasename`.`tablename1`, CONSTRAINT `emp1_ibfk_1` FOREIGN KEY (`column1`) REFERENCES `tablename2` (`tablename2`))
-- Cannot delete or update a parent row: a foreign key constraint fails (`hzh0904`.`emp1`, CONSTRAINT `emp1_ibfk_1` FOREIGN KEY (`comid`) REFERENCES `com1` (`id`))
-- 添加约束
-- alter table user_detailed add constraint uniquekey unique(age);
-- 自增
create table tablename(
column1 int PRIMARY key auto_increment,
column2 varchar(20)
)
-- 设置自增初始值
-- ALTER table tablename auto_increment=10;
-- 使自增为001,002
-- column1 int (3)-》选择表 右键-》设计表 -》下面选择填充零
视图
-- 使用视图 将复杂的sql 语句定义为视图 当作查询使用,方便查询,简化sql
-- 创建视图
create or replace view shituname as
SELECT *
from tablename 1LEFT JOIN tablename2 on tablename 1.column1 =tablename2.column2
SELECT * FROM shituname ;
-- 删除
drop view tanknation_view;
-- 索引:index 根据指定的数据库表的列建立起来的顺序
-- 作用:1.提高效率,创建索引不是为了在sql中使用,而是为了提高系统的性能
-- 2.监督数据,唯一性索引,让索引指向的数据列不重复
CREATE index indexname on tablename(columnname) ;
create unique index indexname on tablename(columnname);
drop index indexname on tablename
----- 触发器 trigger
CREATE triggername
AFTER UPDATE on tablename1 for each row
BEGIN
UPDATE tablename2 set tablename2 =new.tablename1_column where tablename2 =old.tablename1_column ;
end;
drop trigger triggername
范式:
1.表中每个字段里的数据不可被再次拆分
2.表中的非主键字段与该表中的主键或联合主键相关
3. 表中的非主键字段与表中的其他的非主键字段无关
a a b c
rank 1134
dense_rank 1123
row_number 1234
排序:
rank 有重复 总数不变
dense_rank 有重复总数减少
row_number 无重复
-- 事物
-- 开启事务 增 删 改 ,在对数据库中的数据确认正式处理前,将处理的数据放置在缓存区,待撤回或者确认
start transaction;
-- 当 rollback(回滚)或者commit(手动提交)后会自动关闭事务,当要再次使用时需要重写开启
-- 关闭自动提交
set autocommit=0;
INSERT INTO com1 VALUES(6,'ccc');
-- 回滚 在手动提交之前
rollback;
-- 开启自动提交(默认)
set autocommit=1;
-- 手动提交
commit;
deli-- 调用存储过程miter $$
create procedure demo2()
BEGIN
设置变量
declare 变量名 变量类型;
if 判断
if id1<5 then
SELECT * from com1 where id<id1;
ELSE
SELECT * from com1 where id>id1;
end if;
end
$$
delimiter;
delimiter //
CREATE procedure demo4()
BEGIN
case 判断
case
when score1<60 then
SELECT'不及格';
when score1<90 then
SELECT'良好';
when score1=100 then
SELECT'优秀';
end case;
while 循环
while i<20 Do
INSERT into com1 VALUES(i,'i');
set i=i+1;
end while;
end;
//
delimiter;