mysql知识点

大家好,我是曜耀。

今天发一下关于mysql的知识点,是曜耀当时学习mysql时记录的,记得当时学mysql时没有理解mysql学的非常艰苦,对此真是怀念啊。

不说了上知识。希望对个位有用。

           mysQl指令

  1. select current_user();    #查询当前登录的用户名
  2. Select now();          #查询数据库当前时间
  3. Show databases;        #查询数据库系统中的数据库
  4. Selectversion();        #查询数据库版本信息

              数据库的相关指令

  1.   Create database    student_db;  #创建名字为student_db的数据库
  2.   Drop database student_db;             #删除名字为student_bd的数据库
  3. Drop database if exists student_db     #如果存在名字为student_dbdede的数据库就删除
  4. Create database student_db;          #创建名字为student_db的数据库
  5. Use student_db;                   #选择使用student_db数据库
  6. PRIMARY KEY                     #主键
  7. FOREIGN KEY                     #外键
  8. NOT NULL                        #不为空
  9. UNIQUE                         #唯一
  10. AUTO_INCREMNT               #自动增加
  11. DEFAULT                      #默认值
  12. CHECK                        #检查约束

               常见指令

查看所有表  show  tables;

查看表结构  desc 表名;

如果表存在则删除表  drop table if exists 表名;

数据类型

 数字 int,float decimal()

 字符 char varchar

 日期 datetime

                       往表中增加数据

insert into 表名(列1,列2,列3) values(列1的值,列2的值,列3的值);

还可以一次录入多条

                           查询数据

select * from 表名

select * from 表名 where  主键=值  主键代表着唯一

 *表示通配符,所有列都查询,也可以具体写列名

条件查询:

 select * from 表名 where 列名=值

        

               修改

update 表名 set 列1=新值,列2=新值,列3=新值 where 主键=值

4.删除

delete from 表名 where 主键=值

修改和删除不带where后边的条件,就会出现整表被改或者整表删除

聚合函数

个数  count() 参数一般是*或者是主键列,会忽略空

求和  sum()

最大  max()

最小  min()

平均  avg()

括号内是参数,写的是列名

查询

1.大于小于,等于,不等于大于等于,小于等于

2.多条件并列,使用and,多态件满足一个,or

3.between and

4.

排序 order by 列名 desc(降序) asc(升序)

分页 limit 从几开始 显示几条

别名  as

排序和分页

select * from books order by price desc limit 2;

去重

select distinct 参数 from 表名;

模糊查询 like

 占位符 % 表示占位占0-无数位    _ 一个占一位

          

高级查询

查询学生表的男生

select * from student where sex='男';

-- 按年龄对学生表进行倒叙查询

select * from  student order by stuno desc;

-- 统计学生表男女生的个数。

select sex,count(*) from student group by sex;

-- 查询班级表中企业信息化相关的班级。

select * from  class where classname like '%企%信%'

2.连接查询,也叫多表查询,跨表查询。

两张表肯定是有一个列是一样的。但是不一定是外键约束。

语句

等值链接

select 表1.*,表2.* from 表1,表2 where 表1.列=表2.列

select  * from  表1,表2,表3 where 表1.列=表2.列 and 表2.列=表3.列,

内连接

select * from  表1  inner join 表2 on 表1.列=表2.列  

左外

select * from 表1 left join 表2 on 表1.列=表2.列

右外

select * from 表1 right join 表2  on 表1.列=表2.列

前边显示的列,如果两张表一样的列,记得写表名.列名

查询的原则:看到的是各种各样,表还是原样。

交叉连接

select * from 表1 cross join 表2

财务,数学常用,也叫笛卡尔积

        ●数值型函数
round(x,y)四舍五入。返回数值x带有y为小数结果的数值(四舍五入)
floor(x)向下取整。返回x的向下取整的整数
ceil(x)向上取整。返回x的向上取整的整数
truncate(x,y)数值截取。返回数值x截取y位小数的结果(不四舍五入)●时间日期函数
curdate()。返回当前日期;
now()。返回当前日期时间;
year(date)。从日期中选择出年份;
date_ format(date, '%Y-%m-%d)。把日期格式调整成年月-日的格式;
●字符串函数
concat(str1,str2.st.3...)合并字符串。将多个字符串合并成一个字符串;
upper(x)。用于将字母转成大写;
lower(x)。用于将字母转成小写;
reverse(x)。用于将字符串翻转;

●流程控制函数
(1) lF(y,t,f) 如果v为真返回t,否则返回f
例如: SELECT IF(1!=1,'1';2') FROM DUAL;
输出: 2
(2) IFNULL(v1,v2) 如果v1不为null返回v1,否则返回v2
例如: SELECT IFNULL(NULL,'1') FROM DUAL;
输出: 1
(3) CASE WHEN v then v1 end判断如果v为真返回v1
例如: SELECT CASE WHEN 1=1 THEN 'true' ELSE 'false' END FROM DUAL;
输出: true

 视图

语法:CREATE VIEW 视图名称

AS

Select 语句

举例:建立用于查阅记录人姓名,借阅书籍名称,节约时间的视图

Select name 借读人姓名 ,bname as 借读书籍名称 ,rdate as 借读时间

From books a ,card b,info c where a.bno=b.cno=c.cno;

CREATE VIEW view_info

As

Select name 借读人姓名 ,bname as 借读书籍名称 ,rdate as 借读时间

From books a ,card b,info c where a.bno=b.cno=c.cno;

              修改视图

语法:

      Alter vlew 视图语句

      As

select 语句

举例:建立用于查询借阅记录人姓名,借阅书籍名称的视图

  Alter vlew view_info

As

Select name 借读人姓名 ,bname as 借读书籍名称

From books a ,card b,info c where a.bno=b.cno=c.cno;

   

              创建存储过程

CREATE PROCEDURE 存储过程名字(参数列表)

 BEGIN

  存储操作的过程语句

END

调用:call 存储过程名字

列1: 建立一个无参无返回值得存储过程, 用于查询所有的阅读记录。

存储过程实现能够查询所有的借阅记录

Select * from info;

#修改sql语句结束的标识符

Delimiter //

CREATE PROCEDURE pro_info()

 BEGIN

  Select * from info;

END//

_ _调用存储过程

Call pro_info;

列:有参无返

Select * from books where price between 20 and 200; 10 1000

Delimiter //

CREATE PROCEDURE pro_info(in price1 float,in price2 float)

 BEGIN

 Select * from books where price between price1 and price2;

END//

_ _调用存储过程

Call pro_info1(10,200);

列:无参有返回

Select avg(price) as 平均价格 from  books;

DELIMTER //

CREATE PROCEDURE pro_info2(out priceAvg float)

BEGIN

Select avg(prince) INTO priceAvg from books;

END//

Call pro_info2(@priceAvg);

_ _ 查看所有得存储过程

Show PROCEDURE status;

_ _ 删除存储过程

Drop PROCEDURE pro_info;

Drop PROCEDURE if exists pro_info1;

       触发器

当一件事件发生的时候,会引发其他相关的事件发生

只要当一个预定的事件发生的时候,就会被MYSQL自动调用

  CRATE tringger  触发器名称  {before\after} {insert\update\delete} on

表名

          For each row

Begin

触发器执行的语句块

     End

列如:创建insert触发器。当在card表中新增加一个借阅用户的时候,显示“新增用户成功”。

DELIMITER//

Create tringger tri_ins_card after insert on card

For each row

Begin

   Select”新增用户成功” into @result;

end

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值