深入浅出mysql(一):基础篇

安装与配置

1.Windows平台下安装

1.方式一:noinstall

解压即可使用

2.方式二:图形化安装

 

 

2.Linux平台下载以及安装

1.下载方式:

(1)直接进入官网下载,然后通过FTP等工具传送到Linux服务器上;

(2)通过命令行的方式下载:wget命令;

 

2.Linux平台下安装MySQL

在Linux下支持RPM包、二进制包、源码包三种安装方式;

 

安装RPM包需要切换到root下,分别安装MySQL Server 和MySQL Client。

最后运行MySQL ;

在Server安装过程中可能会提示缺少perl-DBI-1.40-8.i386.rpm,这时候需要先下载一个安装包;

 

3.MySQL的配置

1.Windows下的配置

修改配置文件;

 

2.Linux下的配置

修改配置文件

 

4.启动和关闭MySQL服务

1.windows下的启动和关闭MySQL服务

(方式1)使用命令行

(方式2)通过服务的方式启动和关闭;

2.在Linux平台下启动和关闭MySQL服务

服务的方式:(适用于RPM包安装方式)

service mysql start

service mysql restart

service mysql stop

命令行的方式:

启动服务:

starting mysqld daemon with databases from /var/lib/mysql

关闭服务:

mysqladmin -uroot shutdown

 



SQL基础

1.SQL分类

2.DDL语句

http://www.cnblogs.com/chengtai/articles/6539446.html

 

Data Definition Language:数据定义语言;定义了不同数据段,数据库、表、列、索引等数据库对象;常用的关键字:create drop alter;

3.DML语句

http://www.cnblogs.com/chengtai/articles/6540549.html

Data Manipulation  Language语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。

常用的关键字:insert update delete select;

【插入记录insert】

对于可空、非空但是有默认值的字段、自增字段可以不用在insert后的字段列表里面出现;

values后面只写对应字段名称的value;

【排序:ORDER BY 字段名DESC|ASC】

【限制:LIMIT offset_start,row_count】

【聚合】

聚合函数:sum、count、max、min

GROUP BY:表示要进行分类聚合的字段,

WITH ROLLUP:可选语法,表明是否对分类聚合之后的结果进行再次汇总

HAVING:表示对分类之后的结果再进行条件过滤;

having和where的区别:having是对聚合之后的结果进行条件的过滤,而where是在聚合之前就对记录进行过滤,如果逻辑允许,尽可能使用where先过滤记录,这样因为结果集减少,将对聚合的效率大大的提高,最后再根据逻辑查看是否使用having进行再次的过滤;

【表连接】

内连接:

内连接仅仅选出两张表中互相匹配的记录;

外连接:外连接会选出其他不匹配的记录;

外连接又分为:

左连接(表1 left join 表2 on):包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录;

右连接(表1 right join 表2 on:包含所有右边表中的记录甚至是左边表中没有和它匹配的记录;

【子查询】

用于子查询的关键字主要包括:in、not in、= 、!=、exists、not exists等;

【记录联合】

使用union和union all 关键字来实现将两个表中的数据按照一定的查询条件之后合并到一起显示;

 

UNION和UNION ALL的主要区别是UNION ALL是将结果集直接合并在一起,而UNION是将UNION ALL后的结果进行一次DISTINCT, 去除重复记录之后的结果;

4.DCL语句

Data Control Language :数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字:grant 、revoke等;

3.帮助的使用

【显示所有可供查询的分类】

mysql> ? contents

【显示具体命令的使用方法】

mysql > ? 命令

4.查询元数据信息

MySQL 5.0提供的数据库information_schema,用来记录MySQL中元数据信息;

元数据信息指的是数据的数据,比如:表明、列名、列类型、索引名等表的各种属性名称;

该库是一个视图,并不是一个真实的数据库;



3.SQL中的运算符

MySQL中的运算符

1.算术运算符

加、减、乘、除和模运算;

 

2.比较运算符

运算符

作用

=

等于;NULL不能用于=比较

<>或!=

不等于;NULL不能用于<>比较

<=>

NULL 安全的等于;即使值为null也可以比较

<

小于

<=

小于等于

>

大于

>=

大于等于

BETWEEN

存在于指定的范围

IN

存在于指定的集合

IS NULL

为null

IS NOT NULL

不为null

LIKE

通配符匹配

REGEXP或这RLIKE

正则表达式

3.逻辑运算符

运算符

作用

NOT或!

逻辑非

AND 或者 &&

逻辑与

OR 或者 ||

逻辑或

XOR

逻辑异或

任何逻辑运算符与NULL运算之后,均为null

4.位运算符

运算符

作用

&

位与

|

位或

^

位异或

~

取反

>>

位右移

<<

位左移

 

 

 

5.位运算符的优先级

很多情况下,都是使用()来将需要优先的操作括起来;

这样既起到了优先的作用,又使得看起来更加容易理解



4.常用函数

1.字符串函数

ASCII(char)               返回字符的ASCII码值
BIT_LENGTH(str)          返回字符串的比特长度
CONCAT(s1,s2...,sn)        将s1,s2...,sn连接成字符串
CONCAT_WS(sep,s1,s2...,sn) 将s1,s2...,sn连接成字符串,并用sep字符间隔
INSERT(str,x,y,instr)        将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
FIND_IN_SET(str,list)       分析逗号分隔的list列表,如果发现str,返回str在list中的位置
LCASE(str)或LOWER(str)   返回将字符串str中所有字符改变为小写后的结果
LEFT(str,x)               返回字符串str中最左边的x个字符
LENGTH(s)              返回字符串str中的字符数
LTRIM(str)              从字符串str中切掉开头的空格
POSITION(substr,str)      返回子串substr在字符串str中第一次出现的位置
QUOTE(str)             用反斜杠转义str中的单引号
REPEAT(str,srchstr,rplcstr) 返回字符串str重复x次的结果
REVERSE(str)           返回颠倒字符串str的结果
RIGHT(str,x)            返回字符串str中最右边的x个字符
RTRIM(str)             返回字符串str尾部的空格
STRCMP(s1,s2)          比较字符串s1和s2
TRIM(str)              去除字符串首部和尾部的所有空格
UCASE(str)或UPPER(str) 返回将字符串str中所有字符转变为大写后的结果

2.数值函数

ABS(x)   返回x的绝对值
BIN(x)   返回x的二进制(OCT返回八进制,HEX返回十六进制)
CEILING(x)   返回大于x的最小整数值
EXP(x)   返回值e(自然对数的底)的x次方
FLOOR(x)   返回小于x的最大整数值
GREATEST(x1,x2,...,xn)返回集合中最大的值
LEAST(x1,x2,...,xn)      返回集合中最小的值
LN(x)                    返回x的自然对数
LOG(x,y)返回x的以y为底的对数
MOD(x,y)                 返回x/y的模(余数)
PI()返回pi的值(圆周率)
RAND()返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
ROUND(x,y)返回参数x的四舍五入的有y位小数的值
SIGN(x) 返回代表数字x的符号的值
SQRT(x) 返回一个数的平方根
TRUNCATE(x,y)            返回数字x截短为y位小数的结果

CEIL(x)函数:返回大于x的最小整数;

FLOOR(x):返回小于x的最大整数,和CEIL的用法刚好相反;

3.日期和时间函数

CURDATE()或CURRENT_DATE() 返回当前的日期
CURTIME()或CURRENT_TIME() 返回当前的时间
DATE_ADD(date,INTERVAL int keyword)返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECTDATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH);
DATE_FORMAT(date,fmt)  依照指定的fmt格式格式化日期date值
DATE_SUB(date,INTERVAL int keyword)返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELECTDATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH);
DAYOFWEEK(date)   返回date所代表的一星期中的第几天(1~7)
DAYOFMONTH(date)  返回date是一个月的第几天(1~31)
DAYOFYEAR(date)   返回date是一年的第几天(1~366)
DAYNAME(date)   返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);
FROM_UNIXTIME(ts,fmt)  根据指定的fmt格式,格式化UNIX时间戳ts
HOUR(time)   返回time的小时值(0~23)
MINUTE(time)   返回time的分钟值(0~59)
MONTH(date)   返回date的月份值(1~12)
MONTHNAME(date)   返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE);
NOW()    返回当前的日期和时间
QUARTER(date)   返回date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE);
WEEK(date)   返回日期date为一年中第几周(0~53)
YEAR(date)   返回日期date的年份(1000~9999)

4.流程函数

CASE WHEN[test1] THEN [result1]...ELSE [default] END如果testN是真,则返回resultN,否则返回default
CASE [test] WHEN[val1] THEN [result]...ELSE [default]END  如果test和valN相等,则返回resultN,否则返回default
IF(test,t,f)   如果test是真,返回t;否则返回f
IFNULL(arg1,arg2) 如果arg1不是空,返回arg1,否则返回arg2
NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1
这些函数的第一个是IFNULL(),它有两个参数,并且对第一个参数进行判断。如果第一个参数不是NULL,函数就会向调用者返回第一个参数;如果是NULL,将返回第二个参数。

如:SELECT IFNULL(1,2), IFNULL(NULL,10),IFNULL(4*NULL,'false');
NULLIF()函数将会检验提供的两个参数是否相等,如果相等,则返回NULL,如果不相等,就返回第一个参数。

如:SELECT NULLIF(1,1),NULLIF('A','B'),NULLIF(2+3,4+1);
和许多脚本语言提供的IF()函数一样,MySQL的IF()函数也可以建立一个简单的条件测试,这个函数有三个参数,第一个是要被判断的表达式,如果表达式为真,IF()将会返回第二个参数,如果为假,IF()将会返回第三个参数。

如:SELECTIF(1<10,2,3),IF(56>100,'true','false');

 

5.其他常用的函数

【系统信息函数】

DATABASE()   返回当前数据库名
BENCHMARK(count,expr)  将表达式expr重复运行count次
CONNECTION_ID()   返回当前客户的连接ID
FOUND_ROWS()   返回最后一个SELECT查询进行检索的总行数
USER()或SYSTEM_USER()  返回当前登陆用户名
VERSION()   返回MySQL服务器的版本

【格式化函数】

DATE_FORMAT(date,fmt)  依照字符串fmt格式化日期date值
FORMAT(x,y)   把x格式化为以逗号隔开的数字序列,y是结果的小数位数
INET_ATON(ip)   返回IP地址的数字表示
INET_NTOA(num)   返回数字所代表的IP地址
TIME_FORMAT(time,fmt)  依照字符串fmt格式化时间time值
其中最简单的是FORMAT()函数,它可以把大的数值格式化为以逗号间隔的易读的序列。

【加密函数】

AES_ENCRYPT(str,key)  返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,以BLOB类型存储
AES_DECRYPT(str,key)  返回用密钥key对字符串str利用高级加密标准算法解密后的结果
DECODE(str,key)   使用key作为密钥解密加密字符串str
ENCRYPT(str,salt)   使用UNIXcrypt()函数,用关键词salt(一个可以惟一确定口令的字符串,就像钥匙一样)加密字符串str
ENCODE(str,key)   使用key作为密钥加密字符串str,调用ENCODE()的结果是一个二进制字符串,它以BLOB类型存储
MD5(str)    计算字符串str的MD5校验和
PASSWORD(str)   返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。注意:此函数只是用来设置系统用户的密码,但是不能用来对应用中的数据加密。如果应用方面有加密的需求,可以使用MD5等加密函数来实现;
SHA()    计算字符串str的安全散列算法(SHA)校验和



图形化工具的使用

图形化工具的使用

1.MySQL Workbench

1.SQL开发

SQL Development(SQL开发工具)

2.数据建模

Data Modeling(数据建模)

3.服务器管理

Server Administration(服务器管理)

4.MySQL Utilities

2.phpMyAdmin

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_36807862/article/details/81289469