mysql实操总结(进阶篇-上)

进阶篇--MySQL服务安装及命令使用
1)Windows下安装:
1.1.基本安装:类似于mysql-essential-5.1.2-alpha-win32.msi
1.2.完全安装:类似于mysql-5.1.2-alpha-win32.zip

2)Linux下安装:
建议在Linux中使用RPM(RedHat系列)或者DEB(Debian/Ubuntu系列)包来安装MySQL。在大多数情况下,只需通过命令行的方式apt-get安装MySQL-server和MySQL-client来安装MySQL。

进阶篇--MySQL操作详解
1)查看TABLE各项的数据类型等信息:
mysql > DESCRIBE 表名字;

2)在TABLE中新增一行:
mysql > INSERT INTO pet VALUES ('Puffball', 'Diane', 'f', '1999-03-30', NULL);

3)用UPDATE更新数据:
mysql > UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

4)增加关键字DISTINCT去重:
mysql > SELECT DISTINCT owner FROM pet;

5)使用ORDER BY排序(默认为升序,可使用DESC实现降序):
mysql > SELECT name, birth FROM pet ORDER BY birth DESC; 注:DESC仅影响在它前面的列名

6)日期计算:
6.1.使用函数TIMESTAMPDIFF()计算当前日期的年和出生日期之间的差
6.2.直接使用语句(YEAR(CURRDATE()) - YEAR(birth)计算
mysql > SELECT name, birth, CURRDATE(),
     -> TIMESTAMPDIFF(YEAR, CURDATE(), birth) AS age
     -> FROM pet;
6.3.日期提取函数YEAR()、MONTH()、DAYOFMONTH()
6.4.DATE_ADD()允许在一个给定的日期上加上时间间隔
mysql > SELECT name, birth FROM pet
     -> WHERE MONTH(birth) = MONTH(DATE_ADD(CURRDATE(), INTERVAL 1 MONTH));

7)模式匹配:
使用LIKE或NOT LIKE比较操作符

8)分组(GROUP BY):
mysql > SELECT owner, COUNT(*) FROM pet GROUP BY owner;
mysql > SELECT species,sex,COUNT(*) FROM pet
     -> GROUP BY species,sex;

进阶篇--MySQL常用查询
1)寻找列的最大值:
mysql > SELECT MAX(article) AS max_article FROM shop;

2)查询某列最大值所在的行:
mysql > SELECT article, MAX(price) AS price FROM shop
     -> WHERE price = (SELECT MAX(price) FROM shop);

3)按组显示列的最大值:
mysql > SELECT article, MAX(price) AS price FROM shop
     -> GROUP BY article;

4)使用用户变量:
通过使用用户变量找出价格最高或者最低的物品
mysql > SELECT @min_price:=MIN(price), @max_price:=MAX(price) FROM shop;
mysql > SELECT * FROM shop WHERE price=@min_price OR price = @max_price;

5)使用两个关键字进行搜索:
5.1.使用"OR"与"AND"连接
5.2.使用UNION连接

6)计算每月的访问量:
使用BIT_COUNT函数计算每个月某用户访问网页的天数
mysql > SELECT year, month, BIT_COUNT(BIT_OR(1<<day)) AS day
     -> FROM t1
     -> GROUP BY year, month;

7)AUTO_INCREMENT
在定义列属性的时候添加ATUO_INCREMENT 语句可以使得每条记录都能被唯一标识。
mysql > CREATE TABLE animals (id MEDIUMINT NOT NULL AUTO_INCREMENT,
     -> name, CHAR(30) NOT NULL,
     -> PRIMARY KEY (id, );
mysql > INSERT INTO animals (name) VALUES ('dog'), ('cat'), ('pengain'), ('lax'), ('whale'), ('ostrich');
查询后可见id是自动生成的

要想AUTO_INCREMENT语句生成的起始值不是1,可以通过CREATE TABLE或ALTER TABLE来设置改值:
mysql > ALTER TABLE 表名字 ATUO_INCREMENT = 100;

进阶篇--MySQL语言结构
1)字符串:用单引号或双引号引用起来的字符序列;
2)数值型
3)日期类型
4)十六进制:可以用HEX()函数将一个字符串或者数字转换为十六进制格式的字符串
5)布尔值:常量TRUE等于1,常量FALSE等于0;
6)NULL值:导入或导出文件中NULL用序列\N表示;
7)用户自定义变量:
可以先在用户自己定义的变量中存储一个值然后在后面引用它,这样该值可以一个语句传递到另一个语句。
用户变量的形式为 @var_name
mysql > SET @var_name = expr[,@var_name=expr]...
对于SET语句,可以用=或:=作为通配符(非SET语句则必须用:=),分配给每个变量的expr可以为整数,实数、字符串或者NULL值。
8)注释语句
8.1.以#字符开始到尾
8.2.以/#开始到#/结束

进阶篇--MySQL数据类型
1)数值类型
2)日期和时间类型
2.1.DATETIME:日期和时间的组合
2.2.TIMESTAMP:时间戳,用于执行INSERT或UPDATE操作的记录
2.3.TIME:时间 HH:MM:SS
2.4.DATE
2.5.YEAR[(2|4)]:两位或四位格式的年

3)字符串类型
3.1.CHAR
3.2.VARCHAR
3.3.TEXT[(M)]:可选长度为(最大长度65535)
3.4.MEDIUMTEXT:最长长度为(6,777,215的TEXT列)
3.5.ENUM('value1','value2',...):枚举类型,只能从多个value中选取一个值

进阶篇--MySQL函数与操作符
1)COALESCE(value, ...):返回列表中第一个非NULL值;
2)GREATEST(value1, value2, ...):返回最大值;
3)控制流程函数:
3.1. case value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
3.2. IF(expr1, expr2, expr3)
如果expr2是TURE, 则IF()返回值为expr2,否则返回值为expr3.
3.3.IFNULL(expr1, expr2)
假如expr1不为NULL,则IFNULL()返回值为expr1,否则返回值为expr2.
3.4.NULLIF(expr1, expr2)
如果expr1=expr2,那么返回值为NULL,否则返回值为expr1.

4)字符串函数:
4.1.CONCAT(str1, str2, ...):返回值为连接参数产生的字符串;
4.2.CONCAT_WS(separator, str1, str2, ...):第一个参数是其它参数的分隔符,分隔符的位置放在要连接的两个字符串之间。分割符可以是一个字符串,也可以是其他参数。
4.3.ELT(N, str1, str2, str3, ...):若N=1,则返回str1,若N=2,则返回str2,以此类推;
4.4.EXPORT_SET
4.5.FIELD(str, str1, str2, str3, ...):返回值为str在列表中所在的位置,在找不到str的情况下返回值为0
4.6.FIND_IN_SET(str, strlist):假如字符串str在由N子字符串组成的字符串列表strlist中,则返回值为1到N之间
4.7.INSERT(str, pos, len, newstr):返回字符串str中起始于pos位置被字符串newstr替换为长度为len后的字符串:
4.7.1.如果pos不在字符串长度范围内,则返回值为原始字符串
4.7.2.假如len的长度大于剩下的字符串长度,则从位置pos开始替换
4.8.INSTR(str, substr):返回字符串str中子字符串substr第一次出现的位置
4.9.LEFF(str, len)/RIGHT(str, len)
4.10.LENGTH(str):返回str的长度
4.11.LPAD(str, len, padstr):返回字符串str的左边由字符串padstr填补到len字符长度的字符串,假如str长度大于len,则返回值从右边开始被缩短至len字符。
4.12.LTRIM(str):删除字符串左侧空格
4.13.REPEAT(str, COUNT):字符串str重复的次数为COUNT
4.14.REPLACE(str, from_str, to_str):返回所有被字符串to_str替代成字符串from_str后的str
4.15.REVERSE(str):返回和字符正常顺序相反的str
4.16.SUBSTRING(str, pos, len):用str的pos起截取len长度
4.17.SUBSTRING_INDEX(str, delim, count):
4.17.1.若count>0,则返回str中第count个delim(从左开始数)左边的一切内容
4.17.2.若count<0,则改为从右边开始的第count个delim右边的一切内容
4.18.TRIM
4.18.1.TRIM('   bar   '):bar
4.18.2.TRIM(LEADING 'x' FROM 'xxxbarxxx'):barxxx
4.18.3.TRIM(BOTH 'x' FROM 'xxxbarxxx'):bar
4.18.4.TRIM(TRAILING 'x' FROM 'xxxbarxxx'):xxxbar

5)数值函数:
5.1.DIV整数整除  SELECT 5 DIV 2;
5.2.MOD(N, M):返回N被M除后的余数(或直接写成 N%M)
5.3.POW(X, Y):返回X的Y乘方的值

6)日期和时间函数:
6.1.SELECT ADDDATE('1998-01-02', 31);
6.2.ADDTIME(expr, expr2):将expr2添加至expr然后再返回结果,expr是一个时间或者日期表达式,expr2是一个时间表达式
6.3.CURDATE():显示当前日期/NOW():当前日期+时间
6.4.DATEDIFF(expr, expr2):返回起始时间expr和结束时间expr2之间的天数
6.5.Last_DAY(date):返回date该月的最后一天
6.6.MAKETIME(hour, minute, second):返回hour:minute:sencond
6.7.QUARTER(date):返回date对应的季度值,范围是从1到4
6.8.WEEK(date):返回date对应的星期数

猜你喜欢

转载自blog.csdn.net/zhaocen_1230/article/details/80823744