ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL常用SQL语句|函数|存储过程

2020-06-04 14:52:21  阅读:282  来源: 互联网

标签:语句 name runoob CREATE MySQL SQL table WHERE SELECT


【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

一句话总结

SELECT count(*) FROM user WHERE id>0 GROUP BY name HAVING count(*)>1 ORDER BY count(*)DESC;<br />

看懂了吗?

1.数据库

/*查看已有数据库*/
SHOW DATABASES;
/*创建数据库*/
CREATE DATABASE table_name;
/*查看表结构*/
SHOW COLUMNS FROM table_name;
/*使用数据库*/
SE dataBase_name;
/*删除数据库*/
DROP DATABASE table_name;

2.数据表

/*查看已有数据表*/
SHOW TABLES;
/*删除数据表*/
DROP TABLE table_name ;
/*创建数据表*/
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40),
   `submission_date` DATETIME,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.增删改查

如果数据是字符型,必须使用单引号或者双引号,如:”value”

/*插入语句*/
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );
/*查询语句*/
SELECT column_name,column_name
FROM table_name
WHERE clause
LIMIT n OFFSET m

LIMIT 限制条数 OFFSET 起始位置

/*更新语句*/
UPDATE table_name 
SET field1=new-value1, field2=new-value2
[WHERE clause]
/*删除语句*/
DELETE FROM table_name 
[WHERE Clause]

4.where子句

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 ='somevalue1' [AND [OR]] filed2 = 'somevalue'

实例

SELECT * from runoob_tbl  WHERE runoob_author = 'Mary';

5.Order by排序

你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...][ASC [DESC]]

实例

SELECT * from runoob_tbl ORDER BY submission_date ASC;

6.Like子句

SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。
如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。LIKE '%ABC'

SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

实例

SELECT * from runoob_tbl  WHERE runoob_author LIKE '%Mary';

7.GROUP BY分组

【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

GROUP BY 语句根据一个或多个列对结果集进行分组。

在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

实例

SELECT name, COUNT(*) FROM   tablename GROUP BY name;

8.事务

BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认

9.索引

/*创建表的时候指定*/
CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
INDEX [indexName] (username(length))  
);  
/*单独指定*/
CREATE INDEX indexName ON mytable(username(length)); 
/*修改表结构(添加索引)*/
ALTER table tableName ADD INDEX indexName(columnName)

删除索引的语法

DROP INDEX [indexName] ON mytable; 

唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
创建索引

CREATE UNIQUE INDEX indexName ON mytable(username(length)) 

修改表结构

ALTER table mytable ADD UNIQUE [indexName] (username(length))

创建表的时候直接指定

CREATE TABLE mytable(  
ID INT NOT NULL,   
username VARCHAR(16) NOT NULL,  
UNIQUE [indexName] (username(length))  
);  

10.自定义函数

创建

  CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,
     [parameter_name type,...])
 
  RETURNS {STRING|INTEGER|REAL}

  runtime_body

删除

DROP FUNCTION function_name

示例

DELIMITER //  /*这句话设置//为sql语句结束符,更改原先的; */
CREATE FUNCTION addTwoNumber(x SMALLINT UNSIGNED, Y SMALLINT UNSIGNED) 
RETURNS SMALLINT
BEGIN   
DECLARE a, b SMALLINT UNSIGNED DEFAULT 10;  /*定义变量a,b类型smallInt无符号默认值10*/
SET  a = x, b = y;  /*赋值语句*/
RETURN a+b;
END//

更多自定义函数方面的知识推荐:http://blog.csdn.net/rzq228/article/details/73498172

11.存储过程

语法
CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型&hellip;]]) [特性 ...] 过程体

DELIMITER // /*这句话设置//为sql语句结束符,更改原先的; */
  CREATE PROCEDURE myproc(OUT s int)
    BEGIN
      SELECT COUNT(*) INTO s FROM students;  /*过程体*/
    END
    //
DELIMITER ; /*恢复*/

更多SQL教程参考请阅读:Mysql中文教程

版权声明

【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

标签:语句,name,runoob,CREATE,MySQL,SQL,table,WHERE,SELECT
来源: https://www.cnblogs.com/ystblog/p/13043522.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有