mysql函数

mysql语法笔记

冷暖自知 提交于 2020-04-08 13:59:49
SQL语法笔记 基础查询 distinct去除重复行; concat()使用concat包含多个字段作为一个字段输出; select concat(last_name ,',', first_name ,',',salary) as 员工工资 from employees; as 别名,as也可以省略但是加as可以提高可读性; ifnull()函数:如果连接查询某个字段包含null,会导致该列的数据显示为空,使用ifnull判断一下可以有效解决该问题 select concat(department_id,',',last_name,',',manager_id) from employees ; -- 上图是不加ifnull函数,返回的值中有null select concat(department_id,',',last_name,',',ifnull(manager_id,0)) as 奖金率 from employees ; limit 限制输出返回行输 字符型和日期型的常量值必须用单引号引起来,数值型不需要 isnull函数,判断某字段或表达式是否为null,如果是则返回1,否则返回0 select isnull(commission_pct), commission_pct from employees; 条件查询 select 查询字段 from 表名 where

php MySQL 创建数据表

孤人 提交于 2020-04-08 13:58:26
使用PHP脚本创建数据表 你可以使用 PHP 的 mysqli_query() 函数来创建已存在数据库的数据表。 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。 语法 mysqli_query(connection,query,resultmode); 参数 描述 connection 必需。规定要使用的 MySQL 连接。 query 必需,规定查询字符串。 resultmode 可选。一个常量。可以是下列值中的任意一个: MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个) MYSQLI_STORE_RESULT(默认) 实例 以下实例使用了PHP脚本来创建数据表: <?php $dbhost = 'localhost:3306'; // mysql服务器主机地址 $dbuser = 'root'; // mysql用户名 $dbpass = '123456'; // mysql用户名密码 $conn = mysqli_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('连接失败: ' . mysqli_error($conn)); } echo '连接成功<br />'; $sql = "CREATE TABLE runoob_tbl( ". "runoob_id INT

MySql 函数

孤人 提交于 2020-04-07 19:54:48
#函数 /* 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1、提高代码的重用性 2、简化操作 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 区别: 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新 函数:有且仅有1 个返回,适合做处理数据后返回一个结果 */ #一、创建语法 CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型 BEGIN 函数体 END /* 注意: 1.参数列表 包含两部分: 参数名 参数类型 2.函数体:肯定会有return语句,如果没有会报错 如果return语句没有放在函数体的最后也不报错,但不建议 return 值; 3.函数体中仅有一句话,则可以省略begin end 4.使用 delimiter语句设置结束标记 */ #二、调用语法 SELECT 函数名(参数列表) #------------------------------案例演示---------------------------- #1.无参有返回 #案例:返回公司的员工个数 CREATE FUNCTION myf1() RETURNS INT BEGIN DECLARE c INT DEFAULT 0;#定义局部变量 SELECT COUNT(*) INTO c#赋值 FROM employees;

MySql 流程控制

半世苍凉 提交于 2020-04-07 19:53:41
#流程控制结构 /* 顺序、分支、循环 */ #一、分支结构 #1.if函数 /* 语法:if(条件,值1,值2) 功能:实现双分支 应用在begin end中或外面 */ #2.case结构 /* 语法: 情况1:类似于switch case 变量或表达式 when 值1 then 语句1; when 值2 then 语句2; ... else 语句n; end 情况2: case when 条件1 then 语句1; when 条件2 then 语句2; ... else 语句n; end 应用在begin end 中或外面 */ #3.if结构 /* 语法: if 条件1 then 语句1; elseif 条件2 then 语句2; .... else 语句n; end if; 功能:类似于多重if 只能应用在begin end 中 */ #案例1:创建函数,实现传入成绩,如果成绩>90,返回A,如果成绩>80,返回B,如果成绩>60,返回C,否则返回D CREATE FUNCTION test_if(score FLOAT) RETURNS CHAR BEGIN DECLARE ch CHAR DEFAULT 'A'; IF score>90 THEN SET ch='A'; ELSEIF score>80 THEN SET ch='B'; ELSEIF score>60

MySQL 查询优化器(二)

谁都会走 提交于 2020-04-07 05:36:48
1.6多个查询字段(常量条件) 多个查询字段的查询处理逻辑如下所示: JOIN:prepare阶段 setup_tables():同1.1测试。 setup_fields():同1.1测试。 setup_conds():同1.4测试。 JOIN:optimize阶段 optimize_cond():类似1.4测试,不同之处在于查询的where条件中有恒等常量,在优化过程中会调用remove_eq_conds将1=1条件删除。 make_join_statistics():与1.4测试类似,由于where条件查询有两个,并且其中一个条件可以通过索引查询。因此首先通过调用update_ref_and_keys()(sql\sql_select.cc:3967)函数,查找可以使用索引的字段。 SQL_SELECT::test_quick_select():同1.5索引测试 get_key_scans_params():同1.5索引测试。 choose_plan():同1.3测试。 greedy_search():同1.3测试。 best_extension_by_limited_search():同1.5索引测试。 JOIN:exec阶段 以下操作同1.3测试。 通过测试可以看出,对于常量等式对查询优化器来说没有任何意义,会在optimize_conds时将常量等式删除

Mysql查询高级

与世无争的帅哥 提交于 2020-04-06 21:43:34
一、SELECT的子句 /* 基本查询: select * from 表名称 【where 条件】; select 字段列表 from 表名称 【where 条件】; 扩展查询,select语句的5个子句: (1)where where 条件 用于从表中筛选出符合条件的记录(行) (2)group by (3)having (4)order by (5)limit 这5个子句可以同时出现,也可以只出现其中的一部分,其中如果有having前面得有group by,但是有group by不一定有having 如果5个子句有多个同时出现的,那么必须按照(1)-(5)的顺序 例如:要分组统计之前,需要把满足条件的行先筛选出来,或者说把不满足条件的行排除掉才能统计 */ #查询所有的女员工 SELECT * FROM t_employee WHERE gender = '女'; #查询所有女员工的姓名和薪资 SELECT ename,salary FROM t_employee WHERE gender = '女'; 1、分组函数 /* 分组函数 (1)sum (2)count (3)avg (4)max (5)min */ #查询全公司本月要发多少钱,暂时不考虑奖金和扣除的钱 #即查询全公司所有员工的工资总数 SELECT SUM(salary) AS "工资总数" FROM t

MySQL 加密和压缩函数问题

限于喜欢 提交于 2020-04-06 16:58:05
在MySQL中,加密和压缩函数返回二进制串。对其中的许多函数而言,结果可能包含任意的字节值,如果想存储这些结果,你应该使用一个具有varbinary或者blob二进制串数据类型的列,这可避免潜在的删除尾部空白问题或者字符集转换问题。这些问题可能导致数据值的改变。一般而言,上述问题可能在你使用非二进制串数据类型(如char,varchar,text等数据类型)的情况下发生。 AES_ENCRYPT()和AES_DECRYPT() AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES算法的数据。该算法使用128位密钥来编码,但用户可以将其扩展到256位。MySQL选用128位密钥,因为这样算法实现更快,而且对大多数用户而言它也足够安全了。 AES_ENCRYPT(str,key_str)函数加密一个字符串并返回一个二进制串。AES_DECRYPT(crypt_str, key_str) 函数可以解密使用官方AES(Advanced Encryption Standard)算法加密的数据并返回原有字符串,输入变量可以是任意长度。如果输入变量为NULL,那么该函数返回结果也为NULL。 因为AES是一个块级算法,需要使用补白来编码非偶数长度的字符串。 ENCODE()和DECODE() ENCODE(str, pass_str):该函数使用pass

MySQL集锦---IF()、IFNULL()、NULLIF()、ISNULL()函数的使用

旧街凉风 提交于 2020-04-06 13:54:43
在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函数进行流程的控制。 1、IF()函数的使用 IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。 SELECT IF(TRUE,'A','B'); -- 输出结果:A SELECT IF(FALSE,'A','B'); -- 输出结果:B 2、IFNULL()函数的使用 IFNULL(expr1,expr2),如果expr1的值为null,则返回expr2的值,如果expr1的值不为null,则返回expr1的值。 SELECT IFNULL(NULL,'B'); -- 输出结果:B SELECT IFNULL('HELLO','B'); -- 输出结果:HELLO 3、NULLIF()函数的使用 NULLIF(expr1,expr2),如果expr1=expr2成立,那么返回值为null,否则返回值为expr1的值。 SELECT NULLIF('A','A'); -- 输出结果:null SELECT NULLIF('A','B'); -- 输出结果:A 4、ISNULL()函数的使用 ISNULL(expr),如果expr的值为null,则返回1,如果expr1的值不为null,则返回0。

mysql(1)

心不动则不痛 提交于 2020-04-05 16:45:32
概念: 数据库(DataBase,DB): 指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的 数据集合 。(文件系统) 数据库:存储、维护和管理数据的集合。 登陆: mysq -u root -p 123 sql分类: DDL**(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP create tables mydb1; show tables; alter tables mydb1 character set utf8; drop tables mydb1; use mydb1; create table 表名( 字段1 字段类型, 字段2 字段类型, ... 字段n 字段类型 ); 常用数据类型: int:整型 double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99; char:固定长度字符串类型; char(10) 'abc ' varchar:可变长度字符串类型;varchar(10) 'abc' text:字符串类型; blob:字节类型; date:日期类型,格式为:yyyy-MM-dd; time:时间类型,格式为:hh:mm:ss timestamp:时间戳类型 yyyy-MM-dd hh:mm

Mysql 基础学习

萝らか妹 提交于 2020-04-04 18:36:29
-- 1 查询表中单个字段 SELECT `last_name` FROM `employees`; -- 2 查询表中多个字段 SELECT `last_name`,`email`,`department_id` FROM `employees`; # 3.查询表中所有字段 SELECT * FROM `employees`; # 4. 查询表中的常量值 SELECT 100; # 5. 查询表达式 SELECT 100%98; # 6.查询函数 SELECT VERSION(); # 7.起别名 SELECT 100%98 AS 结果; SELECT `last_name` AS 姓 FROM `employees`; # 8. 去重复--查询员工表中涉及到的部门编号 SELECT DISTINCT `department_id` FROM `employees`; # 9.+号的作用--查询员工名和姓连接成一个字段,并显示为 姓名 SELECT CONCAT(`last_name`,`first_name`) AS 姓名 FROM `employees`; # (二)条件查询 /* 语法 selcet 查询列表 from 表名 where 筛选条件 分类 一、按条件表达式筛选 条件运算符:<;>;!=;<=;>=; 二、按逻辑运算符,与或非 and or not