mysql数据库基础篇(一)

目录

 

前言

记录

数学函数

日期函数

流程控制函数

分组函数


前言

仅为博主个人夯实基础的记录,本篇博文基于mysql5.7,工具:Navicat 15,觉得对你也有帮助的朋友可以收藏点赞。

相关数据

--职工表
CREATE TABLE emp(
    empno        INT,
    ename        VARCHAR(50),
    job        VARCHAR(50),
    mgr        INT,
    hiredate    DATE,
    sal        DECIMAL(7,2),
    comm        DECIMAL(7,2),
    deptno        INT
) ;

--部门表
CREATE TABLE dept(
    deptno        INT,
    dname        VARCHAR(14),
    loc        VARCHAR(13)
);

--插入数据到职工表
INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

--插入数据到部门表
INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');

记录

1、查询数据库版本

SELECT VERSION()

2、查询表结构

DESC 表名

3、concat(str1,str2,…)  

首先我这里有一张userinfo表,故意把吕布的武力值为null。

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 

4、IFNULL(expression, alt_value)  用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

5、占位符:_与%    %表示任意字符,_表示一个字符          比如这里我们查找ename字段值第二位是a的

6、BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 此时是包括临界值的

 那灵活一点使用就是不在此区间内NOT BETWEEN

7、IN 操作符允许您在 WHERE 子句中规定多个值。

8、IS NULL      如果想查询不为NULL的则直接  IS NOT NULL即可

9、安全等于 <=>       可读性较差                普通的等于 =

10、不等于  !=       或者   <>

11、substr()   截取字符串,记住这里下标是从1开始的      使用SUBSTRING()也是一样的

       比如下面的sql,就是截取ename 从下标是2开始截取,长度为4

12、INSTR(str,substr) 查找一个字符串在另一个字符串中首次出现的位置           没找到就是0

13、TRIM ( [ [位置] [要移除的字串] FROM ] 字串):    

 如果我们没有列出 [要移除的字串] 是什么的话,那空白就会被移除。

 

14、REPLACE(str,from_str,to_str) 

意为把字串string里出现地所有子字串 from 替换成子字串 to


数学函数

15、ROUND(X)、ROUND(X,D)

四舍五入

 

ROUND(X,D)  对X四舍五入并且小数点保留D位

16、CEIL(X)、FLOOR(X)

CEIL(X) 是向上取整,返回的是>=该参数的最小整数

FLOOR(X)是向下取整,返回的是<=该参数的最大整数

17、TRUNCATE(X,D)

对X进行小数点保留D位截断

18MOD(N,M)

取余,效果等同 N%M


日期函数

19、NOW()

返回当前系统的日期和时间

20、CURDATE() 、 CURTIME()

CURDATE()只返回当前系统日期

CURTIME()只返回当前系统时间

21、STR_TO_DATE(str,format)、DATE_FORMAT(date,format)

STR_TO_DATE(str,format)函数是将时间格式的字符串(str),按照所提供的显示格式(format)转换为DATETIME类型的值。  %c可以把前面的0补上

这个函数非常好,假如现在拿到的日期字符串顺序不是年月日,也可以用

DATE_FORMAT(date,format) 把日期转换为对应的字符串格式


流程控制函数

22、IF(expr1,expr2,expr3)

如果表达式1成立,就返回expr2的结果,否则返回expr3的结果

23

  CASE case_value
    WHEN 常量 THEN
        statement_list
    ELSE
        statement_list
END CASE; 

注意: when后面跟的是具体的值,不是表达式

24

CASE 
    WHEN 条件1 THEN  statement_list

   WHEN  条件2 THEN  statement_list
    ELSE
        statement_list
END CASE; 

上一条CASE后面有字段或者条件,注意这里是没有的,那么此时WHEN后面就可以接表达式了


分组函数

又称为聚合函数或统计函数

25、SUM(expr)、AVG()、MIN()、MAX()、COUNT()

依次是求和、求平均值、最小值、最大值、计算个数。 前两个函数只适用于数值类型的,均忽略NULL值。


防止篇幅过长,一到此为止

猜你喜欢

转载自blog.csdn.net/QingXu1234/article/details/112440531