1.mysql知识点总结

一、视图+触发器+存储函数+存储过程+创建索引+创建用户+授权+各种创建

1.视图

DROP VIEW IF EXISTS xuegongbu_view1;

CREATE VIEW xuegongbu_view1

AS

    SELECT nation_place AS '籍贯',sno AS '学号',sname AS '姓名',major AS '所属专业',career AS '就业去向' FROM student

    ORDER BY sno,nation_place

SELECT *FROM xuegongbu_view1;

2.触发器

DROP TRIGGER IF EXISTS ins_stu

DELIMITER $$

CREATE TRIGGER ins_stu

AFTER INSERT ON student FOR EACH ROW

BEGIN

  INSERT INTO cj ( stu_id, stu_name)VALUES( new.stu_id, new.stu_name);

END

$$

DELIMITER ;

3.存储函数

有输出 return,不能return集合

使用存储函数

4.存储过程

DROP PROCEDURE IF EXISTS pay_cost;

DELIMITER //

CREATE PROCEDURE pay_cost(sno INT,dno INT,cost INT)   #传入学号sno,宿舍号dno,缴费金额cost

BEGIN

    IF (SELECT COUNT(*) FROM move_in m WHERE m.dno=dno)=6 THEN

    SELECT '宿舍已满员,缴费失败!'缴费结果;          #这里为什么一定要加封号

    ELSEIF cost<1200 THEN

    SELECT '缴费失败!金额小于1200..'缴费结果;

    ELSE

    INSERT INTO move_in VALUES(sno,dno,1200);

    SELECT '缴费成功!'缴费结果;

    END IF;

END //

DELIMITER ;

call test.pay_cost(1218043601,0101101,1200)  

5.创建索引

CREATE INDEX sno_index ON student(sno)

6.创建用户

CREATE USER 'xuegongbu'@'host' IDENTIFIED BY '123456'

7.授权

GRANT SELECT,INSERT,UPDATE,DELETE ON test.student TO xuegognbu@'localhost'

GRANT SELECT ON test.teacher TO xuegognbu@'localhost'

8.各种创建

#1.建库,删库,切换库

create database test  #创建数据库test

drop database test   #删除数据库test

use test1                 #切换到数据库test1

#2.建表,删表

create table student(

    id int(3) primary key,

    name varchar(8) not null,

    pass varchar(20) not null

)

drop table student

二、小知识点

1.增删改查

增:insert into table values(110,'110')

删:delete from table where (不加条件就是全表删除)

改:update table set sno=11111

查:select *from table where....

2.mysql日期

https://www.cnblogs.com/ldwnana/p/8401577.html

完整的日期格式: YYYY-MM-DD HH:MM:SS[.fraction]  //中括号为分数

包括date和time

date对应YYYY-MM-DD time对应HH:MM:SS[.fraction]

mysql中可以便是时间的数据类型有三种:date,TIMESTAMP和DATETIME

date只有date部分,没有time部分

 

举例:

create table test(id int,hiredate date)

插入方式: insert into test values(1,'19960812000000')

time部分插入不是000000会报错,但是能够插入成功

 

TIMESTAMP和DATETIME类似,可表示YYYY-MM-DD HH:MM:SS[.fraction]

timestamp(时间戳)更正式,查询时会看客户端的当前时区

datetime怎么输入,怎么输出

测试:(见原文)

show variables like 'time_zone'

set time_zone='+0.00' //修改时区为0号时区(英国)-本初子午线位置:英国伦敦格林尼治天文台原址,我国是东八区 time_zone='+8.00'

3.comment-备注

sno int comment '我是猪'

4.mysql中check属性无效,改用enum()和set()

枚举类型enum(),集合类型set()曲线救国

sex char(2) NOT NULL DEFAULT '男' CHECK (Sex IN ('男','女')) 

枚举类型:sex enum('男','女') not null defalut '男'

5.升序和降序

升序:asc

降序:desc

6.创建表,存储过程,触发器之前,检查是否存在当前实例

drop table if exists 实例名称;

7.平均数,保留两位小数(应用场景:算平均分)

round(avg(分数),2)

8.嵌套查询,父查询被子查询引用实例

9.视图的查询from语句后面不能添加子查询,可以把子查询包装成视图

10.if表达式和if流程控制

#1.if表达式

if(condition,A,B)

condition为true时,返回A

#2.if流程控制(注意,elseif是连起来写的,巨坑)

if a>b then 

elseif a<b then

else

end if

11.select当做print使用

select '我是猪'

12.查看数据库当前用户

select user()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值