Mysql快速入门

MySQL简介:MySQL是开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL5.5版本以后都是由Oracle发布的版本,MySQL以前被SUN公司收购,而SUN公司如今又被Oracle公司收购,因此如今MySQL也是属于Oracle旗下的一款产品。mysql

1.什么是MySQL?linux

维基百科上这么解释:sql

MySQL本来是一个开放源码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被昇阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购昇阳微系统公司,MySQL成为Oracle旗下产品。
MySQL在过去因为 性能高、成本低、可靠性好,已经成为最流行的开源数据库,所以被普遍地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用
但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司再也不支持另外一个自由软件项目OpenSolaris的发展,所以致使自由软件社群们对于Oracle是否还会持续支持 MySQL社群版(MySQL之中惟一的免费版本 有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库数据库

2.为何要使用MySQL?centos

主要有如下几点:服务器

(1).mysql性能卓越,服务稳定,不多出现异常宕机。网络

(2).mysql开放源代码且无版权制约,自主性及使用成本低。架构

(3).mysql历史悠久,社区及用户很是活跃,遇到问题,能够寻求帮助。ide

(4).mysql软件体积小,安装使用简单,而且易于维护,安装及维护成本低。函数

(5).mysql品牌口碑效应,使得企业无需考虑就直接用之,lamp,lnmp流行架构。

(6).mysql支持多种操做系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持。

3.MySQL安装

 

 首先在这里咱们来教你们用linux来安装咱们的MySQL,在linux里有两种方式一:rpm软件包管理,rpm至关于咱们的本地安装,二:yum安装,yum安装就至关于在线安装,好了如今来进入咱们的安装教程:

在线安装方式

1.打开虚拟机:

查看是否有MySQL软件:rpm -qa|grep mysql

有的话咱们可使用卸载方式:

yum remove mysql mysql-server mysql-libs mysql-common

rm -rf /var/lib/mysql

rm /etc/my.cnf

查看是否还有mysql软件,有的话继续删除。

软件卸载完毕后若是须要能够删除mysql的数据库:/var/lib/mysql

2.下载rpm包:

要使用yum 安装mysql,要使用mysqlyum仓库,先从官网下载适合你系统的仓库

http://dev.mysql.com/downloads/repo/yum/

咱们是centos6.4对应的rpm包为:mysql-community-release-el6-5.noarch.rpm

 而后将mysql-community-release-el6-5.noarch.rpm上传到linux系统。

 3.安装仓库列表:

注意:在上传的mysqlrpm包当前目录下,执行如下命令:

yum localinstall mysql-community-release-el6-5.noarch.rpm 

4.安装mysql

yum install mysql-community-server

Rpm本地安装方式

若是没有网络环境可使用参考资料中的mysql-rpm文件夹下的mysql安装包来安装。

第一步:将如下文件上传到linux系统

 

 

 第二步:使用rpm命令进行安装

[root@bogon mysql-rpm]# rpm -ivh mysql-community-*

安装后,启动服务、设置密码、远程受权后既可使用

启动mysql

service mysqld start

设置root用户密码

mysql数据库安装完之后只会有一个root管理员帐号,可是此时的root帐号还并无为其设置密码,在第一次启动mysql服务时,会进行数据库的一些初始化工做,在输出的一大串信息中,咱们看到有这样一行信息 :

/usr/bin/mysqladmin -u root password 'new-password'  // root帐号设置密码

mysql远程链接受权

 

mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

 

注意:'myuser''mypassword' 须要替换成实际的用户名和密码。

关闭linux的防火墙

[root@bogon linux]# service iptables stop

iptables:清除防火墙规则:               [肯定]

iptables:将链设置为政策 ACCEPTfilter                      [肯定]

iptables:正在卸载模块:                [肯定]

SQL语句使用

1.数据库操做:database

建立数据库

语法:

  * create database 数据库名;

  * create database 数据库名 character set 字符集;  

 

 

查看数据库

查看数据库服务器中全部的数据库:show database;

查看某个数据库定义的信息:show create database 数据库名;

删除数据库

drop database 数据库名称;

其余的数据库操做命令

 

切换数据库: use 数据库名;

查看正在使用的数据库:select database();

表操做: table

字段类型

经常使用的类型有:

数字型int

浮点型double

字符型varchar(可变长字符串)

日期类型date(只有年月日,没有时分秒)

       datetime(年月日,时分秒)

boolean类型不支持

分类

类型名称

说明

整数类型

tinyInt

很小的整数

smallint

小的整数

mediumint

中等大小的整数

int(integer)

普通大小的整数

小数类型

float

单精度浮点数

double

双精度浮点数

decimal(m,d)

压缩严格的定点数------开发时用

日期类型

year

YYYY  1901~2155

time

HH:MM:SS  -838:59:59~838:59:59

date

YYYY-MM-DD 1000-01-01~9999-12-3

datetime-开发用

YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59

timestamp

YYYY-MM-DD HH:MM:SS  1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC

文本、二进制类型

CHAR(M)

M为0~255之间的整数

VARCHAR(M)

M为0~65535之间的整数

TINYBLOB

容许长度0~255字节

BLOB

容许长度0~65535字节

MEDIUMBLOB

容许长度0~167772150字节

LONGBLOB

容许长度0~4294967295字节

TINYTEXT

容许长度0~255字节

TEXT

容许长度0~65535字节

MEDIUMTEXT

容许长度0~167772150字节

LONGTEXT

容许长度0~4294967295字节

VARBINARY(M)

容许长度0~M个字节的变长字节字符串

BINARY(M)

容许长度0~M个字节的定长字节字符串

建立表

create table 表名(

  字段名 类型(长度) 约束,

  字段名 类型(长度) 约束

);

查看表

查看数据库中的全部表: show tables;

查看表结构: desc 表名;

删除表

drop table 表名;

修改表

alter table 表名 add 列名 类型(长度) 约束;    --修改表添加列.

alter table 表名 modify 列名 类型(长度) 约束;       --修改表修改列的类型长度及约束.

alter table 表名 change 旧列名 新列名 类型(长度) 约束;     --修改表修改列名.

alter table 表名 drop 列名;      --修改表删除列

rename table 表名 to 新表名;   --修改表名

alter table 表名 character set 字符集;  --修改表的字符集

插入记录

语法:

insert into 表(列名1,列名2,列名3..)values (值1,值2,值3..);  --向表中插入某些列

insert into 表 values(值1,值2,值3..);   --向表中插入全部列

insert into 表(列名1,列名2,列名3..) values select (列名1,列名2,列名3)from 表

insert into 表 values select *from 表

注意:

1.  列名数与values后面的值的个数相等

2.  列的顺序与插入的值得顺序一致

3.  列名的类型与插入的值要一致.

4.  插入值得时候不能超过最大长度.

5.  值若是是字符串或者日期须要加引号’’ (通常是单引号)

更新记录

语法:

update 表名 set 字段名=值,字段名=值;

update 表名 set 字段名=值,字段名=值 where 条件;

注意:

1.  列名的类型与修改的值要一致.

2.  修改值得时候不能超过最大长度.

  3.值若是是字符串或者日期须要加’’.

删除记录

delete from 表名 [where 条件];

sql查询

1.查询商品名称为十三香的商品全部信息:

    * select * from product where pname = '十三香';

2.查询商品价格>60元的全部的商品信息:

    * select * from product where price > 60;

where后的条件写法:

    * > ,<,=,>=,<=,<>

    * like 使用占位符 _ 和 %  _表明一个字符 %表明任意个字符.

        * select * from product where pname like '%新%';

    * in在某个范围中得到值(exists.

        * select * from product where pid in (2,5,8);

比较运算符

>  <  <=   >=   =  <>

大于、小于、大于(小于)等于、不等于

BETWEEN  ...AND...

显示在某一区间的值(含头含尾)

IN(set)

显示在in列表中的值,例:in(100,200)

LIKE ‘张_

模糊查询,Like语句中,% 表明零个或多个任意字符,_ 表明一个字符,例first_name like ‘_a%’;

IS NULL

判断是否为空

逻辑运算符

and

多个条件同时成立

or

多个条件任一成立

not

不成立,例:where not(salary>100);

排序

SQL语法关键字

ORDER BY

  ASC(升序) DESC(降序)

聚合函数(组函数)

特色:只对单列进行操做

经常使用的聚合函数: 

sum():求某一列的和

avg()求某一列的平均值

max()求某一列的最大值

min()求某一列的最小值

count()求某一列的元素个数

分组

SQL语法关键字

GROUP BY

HAVING

注意事项:

1.  select语句中的列(非聚合函数列),必须出如今group by子句中

2.  group by子句中的列,不必定要出如今select语句中

3.聚合函数只能出现select语句中或者having语句中必定不能出如今where语句中。

语法顺序和执行顺序(重要) ***

MySQL查询语法顺序

1.  SELECT

2.  FROM

3.  LEFT JOIN

4.  ON

5.  WHERE

6.  GROUP BY

7.  HAVING

8.  ORDER BY

9.  LIMIT

执行顺序

  1. FROM(将最近的两张表,进行笛卡尔积)---VT1

2.  ON(将VT1按照它的条件进行过滤---VT2

3.  LEFT JOIN(保留左表的记录)---VT3

4.  WHERE(过滤VT3中的记录--VT4…VTn

5.  GROUP BY(对VT4的记录进行分组---VT5

6.  HAVING(对VT5中的记录进行过滤---VT6

7.  SELECT(对VT6中的记录选取指定的列--VT7

8.  ORDER BY(对VT7的记录进行排序--游标

9.LIMIT(对排序以后的值进行分页)

WHERE条件执行顺序(影响性能)

1.  MYSQL:从左往右去执行WHERE条件的。

2.  Oracle从右往左去执行WHERE条件的

结论WHERE条件的时候优先级高的部分要去编写过滤力度最大的条件语句

表与表之间的关系

一对一关系

常见实例:一夫一妻

一对多关系

常见实例:会员和订单

多对多关系(须要中间表实现)

  常见实例:商品和订单

外键

 

如何操做外键

主表添加外键的格式:

alter table 表名 add [constraint][约束名称] foreign key (主表外键字段) references 从表(从表主键) 

主表删除外键的格式:

alter table 表名 drop foreign key 外键约束名称

使用外键目的:

保证数据完整性(数据保存在多张表中的时候)

在互联网项目中通常状况下不建议创建外键关系

一对多关系

一个分类对应多个商品

 

 

 总结:有外键的就是多的一方

 

注意事项:

一对多关系和一对一关系的建立很相似,惟一区别就是外键不惟一。

一对多关系建立:

添加外键列

添加外键约束

多对多关系

同一个商品对应多个订单,一个订单对应多个商品

 

 

 注意事项:

须要中间表去完成多对多关系的建立

多对多关系其实就是两个一对多关系的组合

多对多关系建立:

建立中间表,并在其中建立多对多关系中两张表的外键列

在中间表中添加外键约束

在中间表中添加联合主键约束

多表关联查询

JOIN 按照功能大体分为以下类:

   CROSS JOIN(交叉链接)

   INNER JOIN(内链接或等值链接)。

   OUTER JOIN(外链接)

交叉链接

交叉链接的关键字CROSS JOIN

隐式交叉链接

SELECT * FROM A,B

显示交叉链接

SELECT * FROM A CROSS JOIN B

 

内链接

内链接的关键字INNER JOIN

隐式内链接

SELECT * FROM A,B WHERE A.id = B.id

显示内链接

SELECT * FROM A INNER JOIN B ON A.id = B.id

 

分页查询

MySQL的分页关键字是LIMIT

格式:

SELECT * FROM TABLE LIMIT [offset,] rows

MySQL事务处理

事务概述:

MySQL 事务主要用于处理操做量大,复杂度高的数据。好比说,在人员管理系统中,你删除一我的员,

你即须要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操做语句就构成一个事务!

通常来讲,事务是必须知足4个条件(ACID):

Atomicity(原子性)

Consistency(稳定性)

Isolation(隔离性)

Durability(可靠性)

对于ACID的解释以下:

原子性:构成事务的的全部操做必须是一个逻辑单元,要么所有执行,要么所有不执行

稳定性(一致性)数据库在事务执行先后状态都必须是稳定的

隔离性:事务之间不会相互影响

可靠性(持久性)事务执行成功后必须所有写入磁盘

相关文章
相关标签/搜索