mysql函数

MySQL多行函数

匿名 (未验证) 提交于 2019-12-02 22:02:20
单行函数 :一行得一个结果 count() :统计行的个数 -- 查询20号部分的员工的总薪水 select round(avg(sal))as 平均薪水 from emp where deptno=20; -- 想计算入职时间最晚的与入职之间最早的时间差是多少年 select DATEDIFF( max(hiredate),min(hiredate))/365 from emp; select max(sal) ,min(sal) from emp; -- select count(1) from emp where deptno=20; -- 也可以,count(常量) select * from emp where deptno=20; select * from emp; -- 查询20号部分的员工的总薪水 select round(avg(sal))as 平均薪水 from emp where deptno=20; -- 想计算入职时间最晚的与入职之间最早的时间差是多少年 select DATEDIFF( max(hiredate),min(hiredate))/365 from emp; select max(sal) ,min(sal) from emp; -- select count(1) from emp where deptno=20; -- 也可以

MySQL SQL SECURITY definer invoker

匿名 (未验证) 提交于 2019-12-02 22:02:20
MySQL SQL SECURITY definer invoker /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ MySQL SQL SECURITY definer invoker Table of Contents 1. mysql存储过程/函数 SQL SECURITY 1 mysql存储过程/函数 SQL SECURITY SQL security 是数据库检查一个用户是否有存储过程中各种操作的权限。至于检查哪个用户,由 sql security 决定。 该选项有两种值可选,一个是definer,一个是invoker. DEFINER definer 指明此存储过程有哪个用户定义的, 创建存储过程时可以省略掉,这样存储过程创建时,默认'root@localhost'. sql security 设置为definer时,则数据库根据definer 检查是否有操作相应对象的权限 。 INVOKER 如果sql security 设置为 invoker , 则数据库根据调用用户检查是否有操作相应对象的权限 。 Author: halberd.lee Created: 2019-07-15 Mon 16:55 Validate

MySQL ROUND函数:四舍五入

匿名 (未验证) 提交于 2019-12-02 22:02:20
MySQL 【实例 1】使用ROUND(x)函数,输入 SQL 语句执行结果如下。 mysql> SELECT ROUND(-6.6),ROUND(-8.44),ROUND(3.44); +-------------+--------------+-------------+ | ROUND(-6.6) | ROUND(-8.44) | ROUND(3.44) | +-------------+--------------+-------------+ | -7 | -8 | 3 | +-------------+--------------+-------------+ 1 row in set (0.00 sec) 从执行结果可以看出,ROUND(x)函数将值x四舍五入之后保留了整数部分。 【实例 2】使用ROUND(x,y)函数,输入 SQL 语句执行结果如下。 mysql> SELECT ROUND(-6.66,1),ROUND(3.33,3),ROUND(88.66,-1),ROUND(88.46,-2); +----------------+---------------+-----------------+-----------------+ | ROUND(-6.66,1) | ROUND(3.33,3) | ROUND(88.66,-1) | ROUND(88

mysql case when语句的使用

匿名 (未验证) 提交于 2019-12-02 22:02:20
case具有两种格式。简单case函数和case搜索函数。 简单函数 CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END 搜索函数 CASE WHEN [expr] THEN [result1]…ELSE [default] END 简单函数的运用 CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END 枚举这个字段所有可能的值* 我们先看表中原始数据 执行它 SELECT FROM users; 2. 搜索函数 CASE WHEN [expr] THEN [result1]…ELSE [default] END:搜索函数可以写判断,并且搜索函数只会返回第一个符合条件的值,其他case被忽略

复习MySQL⑤查询、常用函数

匿名 (未验证) 提交于 2019-12-02 22:02:20
查询操作符列表 distinct操作符:用来消除重复记录。   - 例: 查询fruits表中所有不重复的s_id     select distinct s_id from fruits; 子查询:写在()中,把内层查询结果当做外层查询参照的数据表来用   例: 用in操作符与子查询语句来查询所有f_id对应的f_price在10元到20元之间的水果记录     select * from fruits where f_id in (select f_id from fruits where f_price between 10 and 20);   例: 用any操作符与子查询语句来查询所有f_id对应的f_price在10元到20元之间的水果记录     select * from fruits where f_id = any (select f_id from fruits where f_price between 10 and 20);   例: 用all操作符与子查询语句来查询所有f_price大于20元的水果记录     select * from fruits where f_price > all (select f_price from fruits where f_price < 20);   例: 用exists操作符与子查询语句来查询是否存在f

mysql数据库连接,No such file or directory 错误

匿名 (未验证) 提交于 2019-12-02 22:02:20
解决方法: 1、确定是mysqli_connect()和mysqli_pconnect()的问题,故障现象就是函数返回空,而mysqli_error()返回”No such file or directory”。 2、写个phpinfo页面,找到mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket。 3、启动mysql,执行命令 STATUS; 记下UNIX socket的值。 4、如果2和3的值不一样,则打开php.ini(可以从phpinfo页面中找到php.ini的位置,默认是/private/etc/php.ini),将2中提到的三个配置项的值改成3的值。 之后重启php-fpm问题解决

【原创】 PostgreSQL 实现MySQL 的auto_increment 字段

匿名 (未验证) 提交于 2019-12-02 22:02:20
2019独角兽企业重金招聘Python工程师标准>>> MySQL 里面有auto_increment 自增字段,PostgreSQL 没有自增字段这一说法,但是有单独的对象:序列。 我们可以用序列或者其他土方法来是实现这样的语法。 1. 用序列来实现 先来创建一个步长为2的序列,最大值为10000,每次产生100个值。 t_girl=# create sequence ytt.ytt_s1 start with 1 increment by 2 maxvalue 10000 ; CREATE SEQUENCE 创建一个测试表。 t_girl=# create unlogged table ytt.tmp_3 (id int not null, log_date date); CREATE TABLE 改变表tmp_3的列id 默认值是序列ytt_s1的下一个值。 t_girl=# alter table tmp_3 alter id set default nextval('ytt_s1'); ALTER TABLE t_girl=# \d tmp_3 Unlogged table "ytt.tmp_3" Column | Type | Modifiers ----------+---------+-----------------------------------------

【原创】MySQL 模拟PostgreSQL generate_series 表函数

匿名 (未验证) 提交于 2019-12-02 22:02:20
2019独角兽企业重金招聘Python工程师标准>>> MySQL 没有复杂的应用程序类型,该如何实现这样的功能呢? 我想到的三种方法如下: 1. 用存储过程来做。 缺点是写好多数据库不擅长的应用逻辑。 2. 我们想到MySQL提供了SESSION 变量这样的特性, 可以很方便的完成同样的功能。 3. MariaDB 提供了一种sequence 引擎,也可以方便的做这件事情。 第一种我就不实现了, 我来举例说明后两种。 表结构如下: ytt[love]>show create table test_series; +-------------+-------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------+-------------------------------------------------------------------------------------------------------------------------+ | test_series | CREATE TABLE `test

【原创】PostgreSQL 实现MySQL &quot;insert ignore&quot; 语法。

匿名 (未验证) 提交于 2019-12-02 22:02:20
2019独角兽企业重金招聘Python工程师标准>>> 对MySQL熟悉的人可能都知道,MySQL 有一个“insert ignore" 语法来忽略已经存在的记录。 PostgreSQL暂时不提供这样的语法,但是可以用其他方法来代替。 以下为本次演示的样例表结构以及数据。 t_girl=# \d insert_ignore Table "ytt.insert_ignore" Column | Type | Modifiers ----------+------------------------+----------- id | integer | not null log_time | time without time zone | Indexes: "insert_ignore_pkey" PRIMARY KEY, btree (id) t_girl=# select * from insert_ignore; id | log_time ----+---------------- 1 | 14:44:12.37185 (1 row) 我来演示下几种代替方法。 第一种方法, 用自带的规则(RULE)来实现。 t_girl=# create rule r_insert_ignore as on insert to insert_ignore where exists

在Centos 5.4上安装社区版Mysql5.1.41

匿名 (未验证) 提交于 2019-12-02 22:02:20
今天整理电脑的时候发现多年前的安装文档,share下。 安装Mysql服务,提供公司内部应用系统数据库服务。 PC机环境:IntelE5300 内存4G 硬盘500G 操作系统:Linux Centos 5.4 IP:192.168.0.23 shell>groupadd mysql shell>useradd -g mysql mysql shell>cd /tmp shell>wgethttp://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41.tar.gz/from/http://mirror.trouble-free.net/mysql_mirror/ shell>tar zxvf mysql-5.1.41.tar.gz shell>cd mysql-5.1.41 shell>./configure --prefix=/usr/local/mysql --without-debug--with-extra-charsets=all --with-charset=utf8 --exec-prefix=/usr/local/mysql--with-pthread --enable-assembler --enable-thread-safe-client--with-mysqld-user=mysql --with