MySQL 总结:
数据类型
整型
INT TINYINT
小数
FLOAT(M,D)DOUBLE(M,D)浮点型
DEC(M,D)DECIMAL(M,D)定点数D:小数点后保留几位M:整数的位数与小数的位数的总长度
字符型
CHAR VARCHAR
TEXT BLOB(较大的二进制数据可用来保存图片)
binary()二进制数据定义了10个二进制空间,不管存没存够够会用10个二进制空间
varbinary()可变的二进制数据存了2个二进制数就用2位来存储
日期型
DATETIME
创建完后记得要刷新
CREATE TABLE config_table(
PAGE INT UNSIGNED NOT NULL,//无符号整数
`INDEX `TINYINT NOT NULL,
EXIST BOOL NOT NULL,
PATH VARCHAR(256),
TITLE VARCHAR(256)//显示256个字符多了的显示....
);
约束
NOT NULL不为空
DEFAULT有默认值
PRIMARY KEY主键并且非空
UNIQUE跟PRIMARY KEY一样但能为空
FOREIGN KEY外键在从表添加外键约束,用于引用主表中某列的值
标识列必须是一个key(主键/唯一键/外键)
auto_increment
AUTO_INCREMENT自增长默认为1次增加1
一个表只能有一个标识列
标识列的类型只能是数值类型
插入多行数据
INSERT INTO config_table
VALUES
(0,0,TRUE,“dfdfdf”,“dfdgdgf”) ,
(1,1,TRUE,“dfdfdf”,“dfdgdgf”),
(2,2,TRUE,“dfdfdf”,“dfdgdgf”);
表的修改
修改列名
ALTER TABLE 表名 CHANGE(COLUMN)旧列名 新列名 类型;
修改列表的类型或约束
ALTER TABLE 表名 MODIFY COLUMN 旧列名 新类型;
添加新列
ALTER TABLE 表名 ADD 列新名 类型 [after | fisrt字段名];
删除列
ALTER TABLE 表名 DROP COLUMN 列名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
表的删除
DROP TABLE(IF EXISTS)表名;
表的复制仅
复制表的结构
CREATE TABLE 新表 LIKE 要复制的表
复制表的结构与数据过来(限制条件自己加)
CREATE TABLE 新表
SELECT * FROM 旧表;仅
复制某些字段
CREATE TABLE新表
SELECT id,au_name //要的字段
FROM旧表
WHERE 0;
修改表的记录
UPDATE表名SET字段=值WHERE条件;
删除表的记录
DELETE FROM表名WHERE条件;
FROM 1
INNER |左| RIGHT JOIN 2
ON 3
WHERE 4
和 5
GROUP BY 6
HAVING 7
ORDER BY DESC / ASC; 9
限制 10
BEGIN
存储过程体(一组合法的SQL语句)
END
参数列表
参数模型 参数名 参数类型
IN stume VARCHAR(20)
参数模式
IN:该参数可以作为输入
OUT:该参数可以作为输入OUT:参数可以作为返回值相当于C语言的函数的返回
INOUT:
如果存储过程体仅仅只有一句话BEGIN END可以省略
存储过程体中的每条SQL语句的结尾要求必须加分号
存储过程的结尾可以使用DELIMITER重新结尾符号
调用
CALL 存储过程名(参数);
DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO管理员(用户名,`password` )// ESC下面的符号
VALUES('DFDSF','ERFER'), //单引号
('ZCVG','ERFER'),
('TGGGS','ERFER');
END $
带参数调用
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo。*
FROM boys bo
RIGHT JOIN beauty b on bo.id = b.boyfriend_id
WHERE b.name = beautyName;
END $
CALL myp2('柳岩')$
//用户是否登录成功
CREATE PROCEDURE myp3(IN usrename VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGIN
//定义变量
DECLARE result INT DEFAULT 0;
SELECT COUNT(*)INTO result //赋值给用户自定义的局部变量result
FROM admin
WHERE admin.username = username
AND admin.passeord = PASSWORD;
CREATE PROCEDURE myp4(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyName INTO boyName //查询的结果赋值给OUT的boyName
FROM boys.bo
INNER JOIN beauty b ON bo.id = b。 boyfrined_id
WHERE b.name = beautyName;
END $
用户变量存储返回值
CALL myp4('小巨款',@ bName)$
SELECT @ bName $
两个返回
CREATE PROCEDURE myp5(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT userCP INT)
BEGIN
SELECT bo.boyName,bo.userCP INTO boyName,userCP
FROM boys.bo
INNER JOIN beauty b ON bo.id = b.boyfrined_id
WHERE b.name = beautyName;
END $
用户变量存储返回值
CALL myp4('小巨款',@ bName,@ userCP)$
SELECT @ bName,@ userCP $
//输入又输出 传入的参数有值的参数
CREATE PROCEDURE myp6(INOUT a INT,INOUT b INT)
BEGIN
SET a = a * 2;
SET b = b * 2;
END $
set @ m = 10 $
set @ n = 20 $
CALL myp6(@ m,@ n)$
SELECT @ m,@ n $
删除存储过程
DROP PROCEDURE 存储过程名$
BEGIN
函数体
retunr值;
END
参数列表:
参数名 参数类型
调用
SELECT 函数名(参数列表)
//定义结束标志要在控制台也设置以后的语句结束全用$
CREATE FUNCTION myf1()RETURNS INT
BEGIN
DECLAR c INT DEFAULT 0;
SELECT COUNT(*)INTO c;
FROM表名
返回c;
END $
SELECT myf1()$
有参返回先前数字
再类型
CREATE FUNCTION myf2(empName VARCHAR(20))RETURNS DOUBLE
BEGIN
SET @ sal = 0; //定义用户变量
SELECT salary INTO @sal //赋值
FROM employees
WHERE last_name = empName;
RETURN @sal; //只能返回一个值
END $
SELECT myf2('king')$
查看函数
SHOW CREATE FUNCTION 函数名;
删除函数
DROP FUNCTION 函数名;
leave==break
数据类型
整型
INT TINYINT
小数
FLOAT(M,D)DOUBLE(M,D)浮点型
DEC(M,D)DECIMAL(M,D)定点数D:小数点后保留几位M:整数的位数与小数的位数的总长度
字符型
CHAR VARCHAR
TEXT BLOB(较大的二进制数据可用来保存图片)
binary()二进制数据定义了10个二进制空间,不管存没存够够会用10个二进制空间
varbinary()可变的二进制数据存了2个二进制数就用2位来存储
日期型
DATETIME
TIMESTAMP时间戳跟时区有关比如在北京东八区存的时间换到东九区时间戳会跟着变更准确些
库操作
库的创建
CREATE DATABASE(如果不存在)库名;
删库跑路
DROP DATABASE(IF EXISTS)库名;
修改库的字符集
ALTER DATABASE 库名 CHARACTER SET utf8;
表操作
表的创建
在创建表格时如果字段名使用了SQL关键字时,我们要使用Esc键下面的`引起来创建完后记得要刷新
CREATE TABLE config_table(
PAGE INT UNSIGNED NOT NULL,//无符号整数
`INDEX `TINYINT NOT NULL,
EXIST BOOL NOT NULL,
PATH VARCHAR(256),
TITLE VARCHAR(256)//显示256个字符多了的显示....
);
约束
NOT NULL不为空
DEFAULT有默认值
PRIMARY KEY主键并且非空
UNIQUE跟PRIMARY KEY一样但能为空
FOREIGN KEY外键在从表添加外键约束,用于引用主表中某列的值
标识列必须是一个key(主键/唯一键/外键)
auto_increment
AUTO_INCREMENT自增长默认为1次增加1
一个表只能有一个标识列
标识列的类型只能是数值类型
插入多行数据
INSERT INTO config_table
VALUES
(0,0,TRUE,“dfdfdf”,“dfdgdgf”) ,
(1,1,TRUE,“dfdfdf”,“dfdgdgf”),
(2,2,TRUE,“dfdfdf”,“dfdgdgf”);
表的修改
ALTER TABLE 表名 CHANGE | MODIFY | ADD | DROP | 重新命名为...;
ALTER TABLE 表名 CHANGE(COLUMN)旧列名 新列名 类型;
修改列表的类型或约束
ALTER TABLE 表名 MODIFY COLUMN 旧列名 新类型;
添加新列
ALTER TABLE 表名 ADD 列新名 类型 [after | fisrt字段名];
删除列
ALTER TABLE 表名 DROP COLUMN 列名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
表的删除
DROP TABLE(IF EXISTS)表名;
表的复制仅
复制表的结构
CREATE TABLE 新表 LIKE 要复制的表
复制表的结构与数据过来(限制条件自己加)
CREATE TABLE 新表
SELECT * FROM 旧表;仅
复制某些字段
CREATE TABLE新表
SELECT id,au_name //要的字段
FROM旧表
WHERE 0;
修改表的记录
UPDATE表名SET字段=值WHERE条件;
删除表的记录
DELETE FROM表名WHERE条件;
查询
SELECT * 8FROM 1
INNER |左| RIGHT JOIN 2
ON 3
WHERE 4
和 5
GROUP BY 6
HAVING 7
ORDER BY DESC / ASC; 9
限制 10
存储过程
CREATE PROCEDURE 存储过程名(参数列表)BEGIN
存储过程体(一组合法的SQL语句)
END
参数列表
参数模型 参数名 参数类型
IN stume VARCHAR(20)
参数模式
IN:该参数可以作为输入
OUT:该参数可以作为输入OUT:参数可以作为返回值相当于C语言的函数的返回
INOUT:
如果存储过程体仅仅只有一句话BEGIN END可以省略
存储过程体中的每条SQL语句的结尾要求必须加分号
存储过程的结尾可以使用DELIMITER重新结尾符号
调用
CALL 存储过程名(参数);
在控制台定义
//定义结束标志要在控制台也设置以后的语句结尾全用$DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO管理员(用户名,`password` )// ESC下面的符号
VALUES('DFDSF','ERFER'), //单引号
('ZCVG','ERFER'),
('TGGGS','ERFER');
END $
在控制台
调用CALL myp1()$ //以后的结束标记以后都得用$带参数调用
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo。*
FROM boys bo
RIGHT JOIN beauty b on bo.id = b.boyfriend_id
WHERE b.name = beautyName;
END $
CALL myp2('柳岩')$
//用户是否登录成功
CREATE PROCEDURE myp3(IN usrename VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGIN
//定义变量
DECLARE result INT DEFAULT 0;
SELECT COUNT(*)INTO result //赋值给用户自定义的局部变量result
FROM admin
WHERE admin.username = username
AND admin.passeord = PASSWORD;
SELECT IF(result> 0,'成功','失败');
END $
CALL myp3('柳岩','dfdf')$ 返回值
CREATE PROCEDURE myp4(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyName INTO boyName //查询的结果赋值给OUT的boyName
FROM boys.bo
INNER JOIN beauty b ON bo.id = b。 boyfrined_id
WHERE b.name = beautyName;
END $
用户变量存储返回值
CALL myp4('小巨款',@ bName)$
SELECT @ bName $
两个返回
CREATE PROCEDURE myp5(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT userCP INT)
BEGIN
SELECT bo.boyName,bo.userCP INTO boyName,userCP
FROM boys.bo
INNER JOIN beauty b ON bo.id = b.boyfrined_id
WHERE b.name = beautyName;
END $
用户变量存储返回值
CALL myp4('小巨款',@ bName,@ userCP)$
SELECT @ bName,@ userCP $
//输入又输出 传入的参数有值的参数
CREATE PROCEDURE myp6(INOUT a INT,INOUT b INT)
BEGIN
SET a = a * 2;
SET b = b * 2;
END $
set @ m = 10 $
set @ n = 20 $
CALL myp6(@ m,@ n)$
SELECT @ m,@ n $
删除存储过程
DROP PROCEDURE 存储过程名$
函数
CREATE FUNCTION函数名(参数列表)RETURNS返回类型BEGIN
函数体
retunr值;
END
参数列表:
参数名 参数类型
调用
SELECT 函数名(参数列表)
//定义结束标志要在控制台也设置以后的语句结束全用$
DELIMITER $
CREATE FUNCTION myf1()RETURNS INT
BEGIN
DECLAR c INT DEFAULT 0;
SELECT COUNT(*)INTO c;
FROM表名
返回c;
END $
SELECT myf1()$
有参返回先前数字
再类型
CREATE FUNCTION myf2(empName VARCHAR(20))RETURNS DOUBLE
BEGIN
SET @ sal = 0; //定义用户变量
SELECT salary INTO @sal //赋值
FROM employees
WHERE last_name = empName;
RETURN @sal; //只能返回一个值
END $
SELECT myf2('king')$
查看函数
SHOW CREATE FUNCTION 函数名;
删除函数
DROP FUNCTION 函数名;
循环
iterate==continueleave==break