MYSQL 常用语法格式

时间:2022-06-09 06:38:14

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;;