MySQL-自定义函数

发表于 MySQL 分类,标签: MySQL
-- 创建和调用函数-- 创建语法:-- create function 函数名(参数列表) return 返回值类型-- [特性...] 函数体-- 函数的参数形式:参数类型DELIMITER $$CREATE FUNCTION 函数名(参数列表) RETURNS 返回值类型BEGIN-- 有效的SQL语句...END $$DELIMITER ;-- 示例DELIMITER $$CREATE FUNCTION func1(s CHAR(20)) RETURNS CHAR(50...

MySQL-存储过程

发表于 MySQL 分类,标签: MySQL
-- 存储过程和函数介绍-- 存储过程和函数是实现经过编译并存储在数据库中的一段sql语句的集合。-- 存储过程和函数的区别:-- 函数必须有返回值,而存储过程没有。-- 存储过程的参数可以是in,out,inout类型;函数的参数只能是in。-- 存储过程的优点:-- 存储过程只在创建时进行编译,sql语句没执行一次就编译一次,所以使用存储过程可提高数据库执行速度。-- 简化复杂操作,结合事务仪器封装。-- 复用性-- 安全性高,可指定存储过程的使用权。-- 创建和调用存储过程-- 用MySql客户端delimiter命令来把语句定界符从;变为//。这就允许用在程序体中的;定界符被传递到服务器而不是被MySql自己来解...

MySQL-子查询

发表于 MySQL 分类,标签: MySQL
-- 子查询-- 某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询。-- 为了给主查询(外部查询)提供数据而首先执行的查询(内部查询)被叫做子查询。-- 用于子查询的关键字主要包括:IN,NOT IN,EXISTS,NOT EXISTS,=,>,<,<>等-- 一般说子查询的效率低于连接查询。表连接都可以用子查询替换,但是反过来就不一定--  (就是说连接查询能干的事,子查询全能干,但是子查询能干的事,连接查询不一定能干)SELECT * FROM emp WHERE salary IN (SELECT salary&n...

MySQL-外链接

发表于 MySQL 分类,标签: MySQL
-- 2.外连接-- 语法SELECT ... FROM join_table (LEFT|RIGHT|FULL) [OUTER] JOIN join_table2 ON join_condtion WHERE where_definition-- 不仅列出与连接条件想匹配的行,还列出左表(左外连接)、右表(右外连接)或两个表(全外连接)中所有符合where过滤条件的数据行。-- 外连接分类-- 左外连接(left[outer]join)-- 右外连接(LEFT[OUTER]JOIN)-- 全外连接(FULL[OUTER]JOIN)-- 5.1版本MySql暂时还...

MySQL-内连接

发表于 MySQL 分类,标签: MySQL
-- 1.内连接-- 语法SELECT ... FROM join_table [INNER] JOIN join_table2 [ON join_condition] WHERE where_definition-- 只列出这些连接表中与连接条件相匹配的数据行。SELECT * FROM emp INNER JOIN dept ON emp.dept_id = dept.id;   -- 标准完整写法SELECT * FROM emp,dept WHERE&n...

MySQL-外键

发表于 MySQL 分类,标签: MySQL
CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, ren_name VARCHAR(50) NOT NULL, description VARCHAR(100));CREATE TABLE emp( id INT PRIMARY KEY AUTO_INCREMENT, ren_name VARCHAR(50) NOT NULL, gender CHAR(2) NOT NULL, salary&nb...

MySQL-基础日期时间函数

发表于 MySQL 分类,标签: MySQL
SELECT DAYOFWEEK('2015-08-14');  -- 范围1-7,周日=1SELECT DAYOFYEAR('2015-08-14');SELECT DAYOFMONTH('2015-08-14');SELECT DAY('2015-08-14');SELECT DATE_FORMAT('2015-08-01 12:46:11','%H%i%S') a,DATE_FORMAT('2015-08-01 12:46:11','%H:%i:%S') b,DATE_FORMAT('2015-08-01&nbs...

MySQL-字符串处理函数

发表于 MySQL 分类,标签: MySQL
-- 1、CHAR_LENGTH(exp1,exp2) 返回值为字符创的长度,长度的单位为字符,一个汉字也是一个字符。SELECT CHAR_LENGTH('vince_小白');SELECT ren_name,CHAR_LENGTH(ren_name) FROM test_table;-- 2、FORMAT(X,D) 将数字X以四舍五入的方式保留小数点后D位,并将结果以字符创的形式返回。--  D为0,则返回结果不带小数点,或者不含小数部分。SELECT FORMAT(1231321.564564,4);SELECT FORMAT(1231321.564564,5);SELECT FORMAT(1231321.5...

MySQL-IF语句用法

发表于 MySQL 分类,标签: MySQL
SELECT IF(1>2,'yes','no');--  ifnull,如果第一个值不为空,则返回第一个值,为空则返回第二个值SELECT IFNULL('bushikong',2);SELECT IFNULL(NULL,2);SELECT IFNULL(NULL,0);-- 如果两个值相等返回null,不相等返回第一个值SELECT NULLIF(1,2);...

MySQL-case语句用法

发表于 MySQL 分类,标签: MySQL
SELECT CASE 1 WHEN 1 THEN '男人' WHEN 2 THEN '女人' END;SELECT CASE 1 WHEN 1 THEN '男人' WHEN 2 THEN '女人' END AS result;SELECT CASE 2 WHEN 1 THEN '男人' WHEN 2 THEN '女人' END AS...

MySQL-聚合函数

发表于 MySQL 分类,标签: MySQL
SELECT AVG(age) FROM test_table;    -- 平均值SELECT COUNT(*) FROM test_table;     -- 包含null值SELECT COUNT(sid) FROM test_table;   -- 不包含null值SELECT MIN(age) AS 最小值,MAX(age) AS 最大值 FROM test_table;    --  最小最大值SE...

MySQL-IS NULL 、IS NOT NULL、ASC、DESC、模糊查询、通配符、having、limit

发表于 MySQL 分类,标签: MySQL
SELECT * FROM test_table;SELECT 1=1 FROM DUAL;  -- 在没有表被引用的情况下,允许您指定DUAL作为一个假的表名SELECT * FROM test_table WHERE sid=1;SELECT * FROM test_table WHERE age IS NULL;SELECT * FROM test_table WHERE age IS NOT NULL;SELECT ren_name,gender FROM&...

MySQL-增删查改基本语句

发表于 MySQL 分类,标签: MySQL
INSERT INTO test_table (ren_name,age,gender,birth)VALUES('张三',24,'男',NOW());SELECT * FROM test_table;UPDATE test_table SET 字段='值',字段='值',字段='值' WHERE 字段='值';DELETE FROM test_table;   -- 删除表里面所有数据DELETE FROM test_table WHERE sid=1...

MySQL-修改表结构、增加删除修改字段列、

发表于 MySQL 分类,标签: MySQL
ALTER TABLE test_table ADD COLUMN column_name VARCHAR(10);  -- 增加字段列ALTER TABLE test_table RENAME test_table1;     --  修改表名ALTER TABLE test_table DROP COLUMN column_name;  -- 删除字段列ALTER TABLE test_table MODIFY column_name CHAR(10...

MySQL-创建、删除表、显示表结构

发表于 MySQL 分类,标签: MySQL
CREATE TABLE test_table    -- 创建表,结构如下( sid INT PRIMARY KEY AUTO_INCREMENT, ren_name VARCHAR(20) NOT NULL, age INT(2), gender CHAR(1), birth DATE);DROP TABLE test_table;   --  删除表结构和所有数据,谨慎操作DESC test_table;  --  ...