Mysql必知必会学习笔记:
1、了解sql:
1,1、术语:
数据库:保存有组织的数据的容器;
主键使用:1.不更新主键列中的值;2:不使用可能会更改的值
1.2、sql是结构化的查询语言的缩写,是一种专门用来与数据库通讯的语言
2、MySQL简介:
2.1、DBMS可分为两类:一类基于共享文件的系统的DBMS,另一类基于客户机—服务器的DBMS
3、使用SQL:
3.1、使用SQL需使用use打开数据库,才能获取数据
3.2、了解数据库和表,show databases/tables/columns(show columns from customs可用describe customs代替)/show errors / show wainings /show grants(现实授予用户的安全权限)
4、检索数据
4.1 、select
4.1.1、多条SQL语句需要(;)分隔,加上没坏处 /筛选多个select用(,)隔开;/select * (除非需要,尽量不用,占内存,降低效率,搜索出来顺序可能不一样,也有优点,可能选出名字未知的列
4.1.2、distinct 返回唯一的值:select distinct vend,prod应用于两列的唯一值(单个列可能有一样的,多列组合不一样)
4.1.3、limit 限制结果:limit 5/limit 5,7 第一个数为开始的位置,第二个为行数(limit1,1显示的是第二行)(limit 7 offset 5可用来代替上一种写法)
4.1.4、使用完全限制的表名 select world.city.name from world.city;
4.2、SQL不区分大小写,但是可以关键字使用大写,列和表名使用小写,便于阅读和调试;
5、排序
1,order by /asc /desc
2,每一句,不指定的默认升序asc,制定了就desc,故倒序的都要加desc,asc其实没用
6、过滤数据
1,where 可用where prod_price BETWEEN 5 AND 10; /where price is null :筛选是否为空值
7、数据过滤
where (price = 3 and price = 4 ) or price = 8
where price in (3,10) 执行速度快
相应的 where price not in (3,10)
8、 通配符
% / –的区别,以及注意空格 trim(),rtrim()
不要过度使用通配符,搜索起来慢
9、 用正则表达式进行搜索
1、基本字符搜索 select name,COUNTRYCODE
from world.city
where CountryCode regexp ‘.FG’
2、or 使用select name,POPULATION
from world.city
where POPULATION regexp ‘[12]2’ 【】代表或,也可匹配一个范围
3、匹配特殊字符 用\为前导,也有含特殊含义的字符元 :字 符 说 明 \f 换页 \n 换行 \r 回车 \t 制表 \v 纵向制表
where vend_name regexp’\.’ 检索出含. 的列
4,匹配字符类,匹配多个实例 where pord_name regexp ‘\([0-9] sticks:\)’ [0-9]匹配任意数字
10、计算字段
1 、concat select concat(rtrim(vend),’(‘,name,’)’) 使用拼接最好先使用去空格
2、算术计算 select pod,id,comf*fany 直接可以相乘
11、数据处理函数
1、Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找出串的一个子串
Lower() 将串转换为小写
LTrim() 去掉串左边的空格
Right() 返回串右边的字符
RTrim() 去掉串右边的空格
Soundex() 返回串的SOUNDEX值 where cust_concat= ‘y.lie’ 含y.lee的词也能被选进来
SubString() 返回子串的字符
Upper() 将串转换为大写
2、日期和事件处理函数
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分 select ID,name from orders where data(order_date) = ‘2005-01-02’
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回一个格式化的日期或时间串
Day() 返回一个日期的天数部分
DayOfWeek() 对于一个日期,返回对应的星期几
Hour() 返回一个时间的小时部分
Minute() 返回一个时间的分钟部分
Month() 返回一个日期的月份部分
Now() 返回当前日期和时间
Second() 返回一个时间的秒部分
Time() 返回一个日期时间的时间部分
Year() 返回一个日期的年份部分
3、数值处理函数
Abs() 返回一个数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切
12、汇总数据
AVG() 返回某列的平均值
COUNT() 返回某列的行数 count(*) 和count(name)返回的值不一定一样的
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和
13、分组数据
1、group by having
2、使用ROLLUP 使用WITH ROLLUP关键字,可以得到每个分组以 及每个分组汇总级别(针对每个分组)的值