MYSQL 常用语法格式

2、检索数据
      检索一列:SELECT prod_name FROM products;
      检索多列:SELECT prod_name,prod_id FROM products;
      检索所有列:SELECT * FROM products;
      检索不同的行:SELECT DISTINCT prod_id FROM products;
      限定返回行数:SELECT * FROM products LIMIT 5;    返回前5行
         SELECT * FROM products LIMIT 3,2;    返回第3行开始的后2行
3、排序检索数据
      排序数据:SELECT prod_name FROM products ORDER BY prod_name;
      多个列排序:SELECT prod_name, prod_id FROM products ORDER BY prod_name,prod_id;
      指定排序顺序:SELECT prod_name FROM products ORDER BY prod_name DESC;    ASC关键字--升序(默认)/DESC--降序
4、过滤数据
       WHERE子句:SELECT prod_name FROM products WHERE prod_id = "JP1000";
      WHERE子句操作符:
         比较:=,<,>,>=,<=,<>,!=,!>,!<
         逻辑运算符:AND、OR、NOT、XOR
         范围检索:SELECT prod_name FROM products WHERE prod_name BETWEEN 5 AND 8;    | BETWEEN...AND、NOT BETWEEN...AND
         列表检索:SELECT prod_name FROM products WHERE prod_id IN (1,5,4,9);     | IN、NOT IN
          通配符匹配:SELECT prod_name FROM products WHERE prod_id LIKE "%NT2";     | LIKE、NOT LIKE     %匹配多个个数字符_匹配一个字符
         空值检索:SELECT prod_name FROM products WHERE prod_id IS NULL;    | IS NULL 、IS NOT NULL
5、正则表达式进行搜索
         SELECT prod_name FROM products WHERE prod_id REGEXP "00";      .匹配任意一个字符
6、计算字段
         拼接字段:SELECT Concat(prod_id,'(',prod_name,')') FROM products;
         别名:SELECT Concat(prod_id,'(',prod_name,')') AS "Concat" FROM products;
         算数运算:SELECT prod_price*prod_price FROM products;    结果为一列计算过的新计算列
7、数据处理函数
       (1)字符串处理函数
          返回串左边字符:Left()
         返回串右边字符:Right()
         返回串的长度:Length()
         找出串的一个字串:Locate()
         将串转换为小写:Lower()
         将串转换为大写:Upper()
         去掉串左边的空格:LTrim()
         去掉串右边的空格:RTrim()
         返回串的SOUNDEX值:Soundex()      soundex是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。
      (2)数学函数
         返回x的绝对值:ABS()
         返回0~1的随机数:RAND()
         返回x四舍五入到小数点后y位的结果:ROUND(x,y)
         x的y次幂:POW()
8、日期和时间处理函数
          增加一个日期(天、周等):AddDate()
         增加一个时间(时、分等):AddTime()
         返回当前日期:CurDate()
         返回当前时间:CurTime()
         返回当前日期和时间:Now()
         返回日期时间的日期部分:Date()
         返回日期时间的时间部分:Time()
         返回一个日期的年份部分:Year()
         返回一个日期的月份部分:Month()
         返回一个日期的天数部分:Day()
         返回一个时间的小时部分:Hour()
         返回一个时间的分钟部分:Minute()
         返回一个时间的秒部分:Second()
         计算两个日期之差:DateDiff()
         高度灵活的日期计算函数:Date_Add()
         返回一个格式化的日期或时间串:Date_Format()
9、汇总数据,聚集函数
         返回某列平均值:AVG()
         返回某列行数:COUNT()
         返回某列最大值:MAX()
         返回某列最小值:MIN()
         返回某列和:SUM()
    其他函数
          返回上一条SELECT语句(或show语句等)查询结果集的记录数:FOUND_ROWS()
         返回上一条SQL语句,对表数据进行修改操作后影响的记录数:ROW_COUNT()         (如果非修改操作语句,而是查询语句,会返回-1。如果上一条SQL语句是UPDATE语句,但是UPDATE后所有数据的值并没有改变,则返回 0)
10、联结表
      等值联结
         SELECT custom_name,custom_price,product_name FROM custom INNER JOIN product ON custom.vent_id=product.vent_id;
         SELECT custom_name,custom_price,product_name FROM custom,product
WHERE custom.vent_id=product.vent_id;
     外部联结
         SELECT customers_id,order_num FROM customers LEFT OUTER JOIN order ON sustomers.cust_id = order.cust_id;
         SELECT customers_id,order_num FROM customers RIGHT OUTER JOIN order ON sustomers.cust_id = order.cust_id;
     复合条件联结
         SELECT companyname,productname,price,sellordernumber FROM customer,product,sell_order
WHERE customer.customerid=sell_order.customerid AND product.productid=sell_order.productid AND companyname = "布丁科技有限公司";
11、子查询
         使用场景:查询的结果在一个表中,查询的条件在另一个表中
         SELECT departmentname FROM department WHERE departmentid IN (SELECT departmentid FROM employee WHERE employeename = "徐亮");
11、使用视图
         创建视图:CREATE VIEW viewName AS
         ...
         修改视图:ALTER VIEW viewName AS
         ... 
         创建或替换一个视图:CREATE OR REPLACE VIEW viewName AS 
         ...
         调用:SELECT * FROM viewName;
         删除视图:DROP VIEW viewName;
12、创建索引
         (1) UNIQUE | FULLTEXT | SPATIAL     唯一索引 | 全文索引 | 空间索引 
         (2) INDEX     普通索引
         建表时创建索引:
             ...
             name varchar(20) NOT NULL UNIQUE KEY,
             ...
         或:
              ...
              PRIMARY KEY index_name(id)
              FULLTEXT KEY index_name(name)
              );
         在已有表上创建索引:
              CREATE UNIQUE INDEX index_name
              ON table_name(name)
13、创建存储过程
         改变语句结束符号:DELIMITER $
         创建
             CREATE PROCEDURE proceduName(
             IN a int(11) //数据传入传出处理
             )
             COMMENT ""
             BEGIN
             ...
             END$
         调用:CALL procedureName[(传入参数)];
14、触发器
tips:1 声明变量:DECLARE a type
       2 new表与old表:在每次数据更新操作的时候,总会产生临时表(new表和old表),用以记录这条操作更改前后的变化
          在INSERT型的触发器中,new表存储将要before或已经after插入的新记录,old表不创建
          在DELETE型的触发器中,new表不创建,old表存储已经删除的记录
          在UPDATE型的触发器中,new表存储修改后的记录,old表存储修改前的记录
         创建触发器:
              CREATE TRIGGER tri_Name     --tri_Name代表触发器名称
              trigger_time trigger_event ON tableName     --trigger_time为触发时机,可选AFTER/BEFORE(之后/之前),trigger_event为触发事件,如INSERT/UPDATE/DELETE
              FOR EACH ROW      --这句在mysql是固定的,表示触发的执行间隔,每隔一行执行一次动作
              BEGIN 
                   ...
              END;;
原文地址:https://www.cnblogs.com/likoo/p/12054220.html