Mysql-DML(数据处理语言)

-- 插入数据
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;


        
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值