MYSQL 常用语法格式
Posted 李凯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
...
修改视图: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;;
以上是关于MYSQL 常用语法格式的主要内容,如果未能解决你的问题,请参考以下文章