Mysql数据库的sql语句:
一.基本操作
1.连接数据库 mysql -uroot -proot -hlocalhost -P3306 (-u表示用户名,-p密码,-h主机,-P端口号)
2.选择和使用数据库 查看数据库列表: SHOW DATABASES; 选择数据库: USE 数据库名;
3.查看数据库中的所有表 SHOW TABLES; 4.查看表结构: 方式一:SHOW COLUMNS FROM 表名; 方式二:DESCRIBE(DESC) 表名;
5.SHOW STATUS ,显示广泛的服务器信息 SHOW GRANTS ,查看用户权限 SHOW ERROR和SHOW WARNINGS ,显示服务器错误或警告信息
二.检索数据 SELECT stu_name FROM students;
-----------------------------------------------------------
SELECT stu_name,stu_sex,stu_age FROM students;
----------------------------------------------------------------------- SELECT * FROM students;
---------------------------------------------------------------------
SELECT DISTINCT class_id --唯一性关键字distinct FROM students;
------------------------------------------------------------------
SELECT stu_name --limit关键字实现分页查询(一个参数) FROM students LIMIT 5; ---------------------------------------------------------------------- SELECT stu_name --limit关键字实现分页查询(两个参数) FROM students LIMIT 0,5;
--------------------------------------------------------------------------- SELECT stu_name --limit关键字实现分页查询 FROM students LIMIT 5,5;
-------------------------------------------------------------------------
SELECT stu_name --limit关键字实现分页查询 FROM students LIMIT 5 OFFSET 0; --mysql5的新替代方法(取o行开始的5行)
三:排序检索数据(ORDER BY)
SELECT prod_name --单列排序 FROM products ORFER BY prod_name; ----------------------------------------------------------- SELECT prod_id,pro_price,prod_name --多列排序 FROM products ORFER BY prod_price,prod_name; --排序顺序按照指定顺序排序,先对prod_price排序,后对prod_name排序,如果prod_price列的所有值都是唯一的,则不会对prod_name排序 --------------------------------------------------------- SELECT prod_id,pro_price,prod_name --多列排序 FROM products ORFER BY prod_price DESC,prod_name; --指定排序规则(DESC降序,ASC升序,Mysql默认升序排序)
注意:在字典(dictionary)排序中,A和a默认相同,这是Mysql的默认行为 --------------------------------------------------------- ORDER BY 和 LIMIT 组合实现查询一个列的中的最高或最低的值。 找出最珍贵物品的值: SELECT prod_price FROM products PRDER BY prod_price DESC LIMIT 1; -------------------------------------------
四.过滤数据
WHERE字句实现过滤 SELECT prod_price,prod_name FROM product WHERER prod_price = 2.5; ----------------------------------- WHERE字句操作符 操作符 说明 = 等于 <> 不等于 != 不等于 > 大于 >= 大于等于 < 小于 <= 小于等于 BETWEEN 在指定的两个值之间 ---------------------------------------------------------- SELECT prod_price,prod_name FROM product WHERER prod_name = 'fuses'; 因为Mysql在执行匹配时默认不区分大小写,所以Fuses也会被返回 ---------------------------------------------------------- 空值检查 查询价格为空值的产品的名称: SELECT prod_name FROM prodects WHERE prod_price IS NULL; ------------------------------------------
IN关键字(实现的效果和 OR 相同) SELECT prod_name,prod_price FROM products WHERE vend_id in (1002,1003) ORDER BY prod_name;
相当于: SELECT prod_name,prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 ORDER BY prod_name;
为什么使用IN ? IN操作符的语法更清楚且直观。 使用IN,计算的次序更加容易管理。 IN操作符一般比OR操作符执行更快。 IN最大的优点是可以包含其他SELECT语句,是的能够动态的建立WHERE字句。
-------------------------------------------------------------------------
NOT关键字 用来否认后面的条件可以对 IN ,BETWEEN ,EXISTS字句取反。 SELECT prod_name,prod_price FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name; ---------------------------------------------------------------------------
五:通配符 LIke 用来只是Mysql说明后面的检索条件是使用通配符 通配符有两种: % 匹配任意个数的字符 _ 匹配单个字符
select prod_id,prod_name from products where prod_name like '%jes%';
使用通配符的技巧:除非非常需要,否则不使用。 尽量不要在搜索模式的开始处使用,把通配符至于搜索的开始处,搜索起来是最慢的。
-------------------------------------------------------------------------------
六:正则表达式 检索出列prod_mame包含文本1000的所有的行: SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;
跟LIKE的语句很像 SELECT prod_name FROM products WHERE prod_name LIKE '%1000%' ORDER BY prod_name;
---------------------------------------------
SELECT prod_name --匹配多个字符之一(进行OR匹配) FROM products WHERE prod_name REGEXP '1000|2000|3000' ORDER BY prod_name; ------------------------------------------------ SELECT prod_name --[] 匹配[]中单个字符 FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name; ------------------------------------------------------- SELECT prod_name --[|||] 匹配[]中单个字符,效果如上面 FROM products WHERE prod_name REGEXP '[1|2|3] Ton' --1 Ton ,2 Ton,3 Ton ORDER BY prod_name; --------------------------------------------------------------- SELECT prod_name --注意 FROM products WHERE prod_name REGEXP '1|2|3 Ton' --这里匹配的是1 ,2,3 Ton ORDER BY prod_name; ----------------------------------------------------------------- 匹配范围:[3-6]匹配3-6 [a-z]匹配a-z SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' --匹配 1 Ton ,2 Ton, 3 Ton, 4 Ton ,5 Ton ORDER BY prod_name; --------------------------------------------------------------------------------- 匹配特殊字符 . | [] - (注意Mysql使用\\) SELECT prod_name FROM prodects WHERE prod_name REGEXP '\\.' --匹配含有.的行 ORDER BY prod_name; ------------------------------------------------------------ 空白元字符 元字符 说明 \\f 换页 \\n 换行 \\r 回车 \\t 制表 \\v 纵向制表 ------------------------------------------------------------- 匹配字符类 字符类 类 说明 [:alnum:] 任意字母和数字(同[a-zA-Z0-9]) [:alpha:] 任意字母(同[a-zA-Z]) [:blank:] 空格和制表(同[\\t]) [:cotrl:] ASCII码控制字符(ASCII0-31和127) [:digit:] 任意数字(同[0-9]) [:graph:] 与print相同,但不包含空格 [:lower:] 任意小写字母(同[a-z]) [:upper:] 任意大写字母 [:print:] 任意可打印字符 [:punct:] 既不在[:alnum:]也不在[:cotrl:]中的字符 [:space:] 包括空格在内的任意空白字符(同[\\t\\f\\r\\n\\v]) [:xdigit:] 任意十六进制数字(同[a-fA-F0-9]) ------------------------------------------------------------- 匹配多个实例 重复元字符 元字符 说明 * 0个或多个匹配 + 一个或多个匹配(相当于{1,}) ? 0个或者1个匹配(相当于{0,1}) {n} 指定数目的匹配 {n,} 不少于指定数目的匹配 {n,m} 指定数目的范围(m不超过255) 下面例子匹配:\\( 匹配),[0-9]匹配任意数字,stick?匹配stick和stick(后面有任意字符),\\)匹配 ) SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] stick?\\)' ORDER BY prod_name;
下面例子:匹配连在一起的四个字符 SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]{4}]' ORDER BY prod_name; -------------------------------------------------------------- 定位符 定位元字符 元字符 说明 ^ 文本的开始 $ 文本的结束 [[:<:]] 词的开始 [[:<:]] 词的结束 匹配产品名称以数字或者.开头产品 SELECT prod_name FROM prodducts WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name; ---------------------------------------------------------------
LIKE 和 REGEXP的区别? LIKE和REGEXP起类似的作用,但LIKE匹配的是整个串,而REGEXP匹配的是字串 REGEXP加入^ 和 $ 家可以实现与LIKE一样的作用 -----------------------------------------------------------------