[整理]MySql基本语法

显示所有数据库
SHOW DATABASES;
显示当前打开的数据库
SELECT DATABASE();

打开数据库
USE db_name;

创建表
CREATE TABLE [IF NOT EXISTS] table_name(
	col_name column_definition,
	...)

CREATE TABLE [IF NOT EXISTS] table_name(
	[column_definitions..]
	SELECT..
	)

表的存储引擎
			限制	事务	索引	锁颗粒	压缩	外键
+ MyISAM	256TB	-		√		表		√		-
+ InnoDB	64TB	√		√		行		-		√
- Memory	有		-		√		表		-		-
- Archive	无		-		-		行		√		-
- CSV 文本存储
	

显示数据库内的表
SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

显示表结构
SHOW COLUMNS FROM tbl_name
DESC tbl_name

显示创建表记录
SHOW CREATE TABLE tbl_name

修改数据表名
RENAME TABLE tbl_name TO new_tbl_name
	[,tbl_name2 TO new_tbl_name2 ...]

修改表
ALTER TABLE tbl_name
	表更名
	RENAME [TO|AS] new_tbl_name
	
	添加单列
	ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
	添加多列
	ADD [COLUMN] (col_name column_definition, ...)
	删除列
	DROP [COLUMN] col_name [,DROP [COLUMN] col_name2 ...] [ ADD|DROP...]
	
	添加约束
	ADD [CONSTRAINT [symbol] ]
		主键约束
		PRIMARY KEY [index_type] (index_col_name , ...)
		唯一约束
		UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name , ...)
		外键约束
		FOREIGN KEY [index_name] (index_col_name , ...) REFERENCES tbl_name(col_name)
	添加删除默认约束
	ALTER [COLUMN] col_name {SET DEFAULT value| DROP DEFAULT}
	删除主键约束
	DROP PRIMARY KEY
	删除唯一约束(索引)
	DROP {INDEX|KEY} index_name
	删除外键约束
	DROP FOREIGN KEY fk_symbol
	
	修改列定义
	MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]
	修改列名|列定义
	CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
	
插入记录
INSERT [INTO] tbl_name [(col_name,...)]
	{VALUES|VALUE}({expr|DEFAULT},...), (...), ...
	自增值可设置为 NULL,DEFAULT,0

INSERT [INTO] tbl_name
	SET col_name={expr|DEFAULT}, ...
	可使用子查询
	
表更新
UPDATE [LOW_PRIORITY] [IGNORE] table_references
	SET col_name1={expr1|DEFAULT} 
	[,col_name2={expr2|DEFAULT} ...]
	[WHERE where_condition]
	
表删除记录
DELETE FROM tbl_name [WHERE where_condition]

查找语句
SELECT select_expr[, select_expr ...]
[
	FROM table_references
	[WHERE where_condition]
	[GROUP BY {col_nameposition} [ASCDESC],...]
	[HAVING where_condition]
	[ORDER BY {col_nameexprposition} [ASCDESC], ...]
	[LIMIT {[offset,] row_countrow_count OFFSET offset}]
}

子查询
SELECT | INSERT | UPDATE | SET | DO | DELETE
	WHERE col_name1=(SELECT ...)
	
	使用比较运算符开始子查询
	>  >=  <  <=  =  <>  !=
	ANY或SOME|ALL
	IN 等同于  =ANY
	NOT IN 等同于 !=ALL或<>ALL
	
	使用[NOT]EXISTS开始子查询
	***************************************
	INSERT [INTO] tbl_name [(col_name,...)]
		SELECT ...
		
链接表
table_references1
	{[INNER|CROSS] JOIN|{LEFT|RIGHT}[OUTER] JOIN}
	table_references2
	ON conditional_expr
	可多次连接表 可链接自身

字符函数
	CONCAT( str...)
	CONCAT_WS(分隔符, str...)
	FORMAT(number,小数位数)  --千分位分隔
	LOWER(str)
	UPPER(str)
	LEFT(str,count)  左侧截取子字符串
	RIGHT(str,count) 右侧截取子字符串
	LENGTH(str) 字符串长度
	LTRIM(str) 删除左侧空格
	RTRIM(str) 删除右侧空格
	TRIM(str) 删除左右空格
	TRIM(LEADING 'char' FROM 'str') 删除左侧char字符
	TRIM(TRAILING 'char' FROM 'str') 删除右侧char字符
	TRIM(BOTH 'char' FROM 'str') 删除左右char字符
	REPLACE(str, replace_ment, replace_to) 替换
	SUBSTRING(str,start[,count])
		start从1开始,截取字符串
		start取负值为倒数
	[NOT] LIKE 模式匹配 %任意个字符  (ESCAPE ' ')
数值函数
	CEIL(num) FLOOR(num) 取整
	DIV 整除
	MOD 取余 等价于 %
	POWER(num,num) 幂运算
	ROUND(num,小数位数) 四舍五入
	TRUNCATE(num,小数位数) 数字截取
	[NOT] BETWEEN num1 AND num2 是否在范围内
	[NOT] IN(num ...) 是否在列出值中存在
	IS [NOT] NULL 是否为空
日期时间函数
	NOW() 当前日期时间
	CURDATE() 当前日期
	CURTIME() 当前时间
	DATE_ADD(date,INTERVAL num DAY) 日期变更
		DAY天 YEAR年 WEEK星期 
	DATEDIFF(date,date) 日期差
	DATE_FORMAT('2016-08-26','%Y年%m月%d日')
信息函数
	CONNECTION_ID() 连接id
	DATABASE() 当前数据库
	LAST_INSERT_ID() 最后插入的自动编号
	USER() 当前用户
	VERSION() 版本信息
聚合函数
	AVG( column ) 取平均值
	COUNT( column ) 计数
	MAX( column ) 最大值
	MIN( column ) 最小值
	SUM( column ) 求和
加密函数
	MD5(str) MD5加密

流程控制
	--if语句
	IF search_condition THEN statement_list 
	[ELSEIF search_condition THEN statement_list] ... 
	[ELSE statement_list] 
	END IF
	
	--switch语句
	CASE case_value 
	WHEN when_value THEN statement_list 
	[WHEN when_value THEN statement_list] ... 
	[ELSE statement_list] 
	END CASE 
	
	--loop语句
	[label:] LOOP 
		statement_list 
		LEAVE label; --break
		ITERATE label; --continue
	END LOOP [label] 
	
	--while语句
	[label:] WHILE search_condition DO 
	statement_list 
	END WHILE [label] 
	
	--do...while语句
	[label:] REPEAT 
		statement_list 
		UNTIL search_condition 
	END REPEAT [label]
	
	

自定义函数
CREATE FUNCTION function_name ( params... )
	RETURNS {STRING|INTEGER|REAL|DECIMAL}
	routine_body 由sql语句组成  BEGIN  END

DROP FUNCTION function_name; 删除函数

***************************************
	示例:
	CREATE FUNCTION dates() RETURNS VARCHAR(30)
		RETURN DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s');
		
	CREATE FUNCTION avg_num(i1 INT,i2 INT)
		RETURNS DECIMAL(10,2)
		RETURN (i1+i2)/2;
		
	DELIMITER //     --定义 // 为语句结束符
	CREATE FUNCTION hero.addhero(heroname VARCHAR(30),level TINYINT UNSIGNED)
		RETURNS INT UNSIGNED
		BEGIN
			DECLARE x INT UNSIGNED;
			INSERT hero(name,level) VALUES (heroname,level);
			SET x=LAST_INSERT_ID();
			RETURN x;
		END
***************************************
创建存储过程
	CREATE
	[DEFINER = {user | CURRENT_USER}]
	PROCEDURE sp_name ([proc_parameter[,...]]) //可以带0到多个参数
	[characteristic ...] routine_body
	其中参数
	proc_parameter:
	[IN | OUT | INOUT] param_name type
		IN, 表示该参数的值必须在调用存储过程时指定
		OUT, 表示该参数的值可以被存储过程改变,并且可以返回
		INOUT, 表示该参数的值调用时指定,并且可以被改变和返回
	characteristic:
		COMMENT 'string'
			--注释
		| {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}
			--CONTAINS SQL表明子程序包含SQL语句,但是不包含读写数据的语句;
			--NO SQL表明子程序不包含SQL语句;
			--READS SQL DATA:说明子程序包含读数据的语句;
			--MODIFIES SQL DATA表明子程序包含写数据的语句。
			--默认情况下,系统会指定为CONTAINS SQL
		| SQL SECURITY{DEFINER | INVOKER}
			-- INVOKER 表示拥有权限的调用者可以执行。默认情况下,系统指定为DEFINER
			-- DEFINER 表示只有定义者才能执行
		| [NOT] DETERMINISTIC 
			--指明存储过程执行的结果是否正确。
			--DETERMINISTIC 表示结果是确定的。每次执行存储过程时,
			--相同的输入会得到相同的输出。
			
修改存储过程		
ALTER PROCEDURE sp_name [characteristic]
COMMENT 'string'
{CONTAINS SQLNO SQLREADS SQL DATAMODIFIES SQL DATA}
SQL SECURITY{DEFINERINVOKER}

删除存储过程
DROP PROCEDURE [IF EXISTS] sp_name;

创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    VIEW view_name [(column_list)]
    AS select_statement  --参照列
    [WITH [CASCADED | LOCAL] CHECK OPTION]
	FROM tbl_name
	[WHERE where_condition]
--REPLACE:表示替换已有视图
--ALGORITHM :表示视图选择算法
------ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。
------如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。
------对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
------对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
------对于UNDEFINED,MySQL自己选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,
------这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
--view_name :视图名
--column_list:属性列
--select_statement:表示select语句
--[WITH [CASCADED | LOCAL] CHECK OPTION]参数表示视图在更新时保证在视图的权限范围之内
------LOCAL和CASCADED为可选参数,决定了检查测试的范围,默认值为CASCADED。

修改视图
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
	VIEW view_name [(column_list)]
	AS select_statement
	[WITH [CASCADED | LOCAL] CHECK OPTION]

查看视图
查看视图必须要有SHOW VIEW权限
查看视图的方法包括:DESCRIBE|DESC、SHOW TABLE STATUS、SHOW CREATE VIEW
DESC 视图名
DESC stu_class

创建触发器
CREATE TRIGGER trigger_name {BEFORE|AFTER} {INSERT|UPDATE|DELETE}
	ON tbl_name 
	FOR EACH ROW
	trigger_stmt
	-----关键字 new

删除触发器
DROP TRIGGER [schema_name.]trigger_name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值