MySQL安装及基础使用

来源:互联网 发布:ubuntu 打开anaconda 编辑:程序博客网 时间:2024/04/30 10:30

安装及配置

Windows系统下可以使用XAMPP软件;Mac OS自带 Apache和PHP,只需要安装MySQL即可使用。在Mac OS 10.10 (Yosemite)下安装MySQL后没有反应,需要在命令行界面启动。

$ /usr/local/mysql/support-files/mysql.server start

这里需要注意需要使用root来完成MySQL的启动。启动完成后,如果遇到2002 MySQL socket error,这是因为MySQL默认socket位于/tmp,而MacOS总是在/var/mysql中查找,在/var/mysql中添加/tmp/mysql.sock的链接就可以了(升级至10.11(EI capitan)后不再发生这个问题)。

$ ln -s /tmp/mysql.sock /var/mysql/mysql.sock

第一次使用设置root 密码:

$ /usr/local/mysql/bin/mysqladmin -u root password ‘Your Password

将MySQL路径添加至环境变量,然后进入MySQL操作界面:

$ mysql -u Username -p

以root身份进入MySQL之后,删除匿名用户和仅供测试用的数据库:

mysql> use mysql
mysql> delete from user where User=”;
mysql> quit
$ mysqladmin -u root -p reload

这种情况下对MySQL的操作都是以命令行形式展示,如果想可视化操作,可以下载MySQLWorkbench软件进行辅助。

基础使用

在安装完成之后,登陆mysql:

$ mysql -h hostname -u username -p
-h 指定运行MySQL服务器的主机;
-u 登陆用户名;
-p 使用密码登陆

登陆之后可以进行一些简单使用,如查看可使用数据库,创建数据库,添加用户,设置用户权限等等。

基础概念

关系数据库管理系统(Relational DataBase Management System, RDBS)是最常用的数据库类型。在使用RDBS时并不需要了解关系理论,但是需要了解基本概念,这是正确高效使用RDBS的基础。
数据的关系在RDBS中有点像R里面的数据,这大概是应为二者的设计都是以现实生活为基础,想象一下生活中实际的表的形式,表由很多行和列交织组成,数据按照不同的组织方式而被称为行或者列,称为行时,这组值共同构成一个观测(或叫记录、元组),代表一件事物或者个体,不同的列分布展现不同的属性。在RDBS中:

表格即关系
关系数据库由关系组成,这些关系通常称为表格。

列为属性
表中的每一列都有唯一的名称,包含不同的数据,有时候列也被称为域。


表中的标识列成为键或者主键,一个键可能由几列组成。通常数据库中会有很多表格,不同表格之间可以使用键来进行引用,所以为了区分这种情况,当一张表中的主键在其他表中出现时被称为外键。外键表示两个表格数据的关系,关系数据库中有3种最基本的关系类型,“一对一”,“一对多”和“多对多”。

用户和权限

MySQL的用户与Linux系统中的用户有所区别,在MySQL中用户是“依赖”文件而存在的,在创建用户时也是以赋予对某文件的操作权限来实现。根据权限的范围可以分为4个级别,依次为全局,数据库,表和列,每一级别又有不同的操作权限。用户的创建及权限赋予命令为grant,语法如下:

grant privileges [columns]
on item
to user_name [identified by ‘password’]

在mysql使用show databases命令可以看到mysql中有information_schema, mysql, performance_schema和test四个database,这些数据库本身起着控制和管理mysql的作用,在mysql database中有着用户权限,系统信息等各种表格,在mysql database的user表中可以看到有Host, User, Password, 各种权限(privilege)以及其他操作权限。
删除用户也是在user表中删除User和Host就可以了,需要注意的是在删除用户之前需要把用户具有的各种权限都删除掉。
Web数据库的设计
Web数据库的构架

模式和内容

模式是指数据库整套表格的完整设计,是数据库的设计蓝图,一个模式应显示表格及表格的列,每个表的主键和外键,但是并不会包含任何数据。
一般情况下可以随意更改数据库中表格内容,但是不会更改数据库的模式。

MySQL的使用-模式创建

创建数据库

mysql> create database dbname;

创建数据库表
想要对数据库内的数据进行创建首先要正确地使用数据库

mysql> use dbname;
mysql> create table tablename (column1, column2, column3);

创建索引
create index这个命令为某列添加索引来改善性能。

创建数据库和表之后,可以查看创建结果

mysql> show databases;
mysql> show tables;
mysql> describe tablename;

show语句变体有30多种,可以查看各种信息,除此之外还有explain语句。explain语句查看表信息时类似describe或者show,在普通语句之前使用explian可以查看MySQL解释并执行过程的。

创建用户
在MySQL中核心为数据,用户也是围绕数据进行创建,修改和删除。

mysql> grant privileges [columns]
> on item
> to user_name [identified by ‘password’]
> [require ssl_options]
> [with [grant option | limit_option];

普通用户的权限有8种权限,分别为select, insert, update, delete, index, alter, create和drop。可以看出是对数据查询、修改、删除、创建等操作。管理用户还有其他权限grant, create temporary tables, file, lock tables, process, reload, replication client, replication slave, show database, shutdown和super等权限。
除使用grant命令外,还可以直接修改mysql这个数据库中对应权限的表以实现权限更改问题。
对应于grant,删除用户的权限需要使用revoke命令。

mysql> revoke privileges [(columns)]
> on item
> from user_name

MySQL的使用-内容的操作

在完成模式创建之后就确定了数据库的构架,即相关表格已经创建完成,每一个表格每一列所对应的意义已经确定。在此基础上可以对表格进行填充,查询和删除等操作。
完成数据库和数据表的创建之后,还需要对这些表格进行填充数据。实现这一目的的命令为insert。

mysql> INSERT [into] table [(column1, column2, column3,...)] VALUES> (value1, value2, value3,...);

当要导入的数据非常多时,使用脚本来生成一个.sql文件,然后导入到MySQL不失为一个有效的办法。

对数据库进行的最多操作是对数据库数据的访问,select命令实现这一目的。

mysql> SELECT [options] item> [INTO file_details]> FROM table> [WHERE conditions]> [GROUP BY group_type]> [HAVING where_definition]> [ORDER BY order_type]> [LIMIT limit_criteria]> [PROCEDURE proc_name(arguments)]> [lock_options];

后面跟随的where等选项可以设置查询需要满足的条件,使得准确选择出符合要求的数据。对于单个表可以用这种方式实现查询操作,但事实上由于数据分为多个表格存放,往往需要查询多个表中的数据才可以得到正确合适的数据,将不同表格中信息放在一起必需执行一个名为“关联” 的操作。关联意味着需要根据数据间的关系将两个或多个表关联到一起。
关联类型有:

关联类型 描述 笛卡尔乘积 所有表所有列的所有关联。实现方法,在列的名称之间指定一个逗号,而不是指定一个WHERE字句 完全关联 同上 交叉关联 同上 内部关联 如果没有WHERE条件,等价于完全关联。通常,需要指定一个WHERE条件以使它成为真正的内部关联 等价关联 在关联中使用一个带“=”号的条件表达式匹配来自不同表中的行。在SQL中,这是带WHERE字句的关联 左关联 试图匹配表的行并在不匹配的行中填入NULL,在SQL中使用LEFT JOIN关键词。用于查找要避免的值。类似地,可以使用RIGHT JOIN

从上表可以看出,关联关系有4种:1,不加限制的将所有可能都列出来(完全关联);2,设置一个条件,但条件限制在同一个表内的数据(内部关联);3,设置条件,条件为不同表间的行(等价关联);4,查找不同的行(左关联,右关联)。

有时候一次查询不能满足要求,这种情况下需要使用子查询。子查询即一个嵌套在另一个查询内部的查询。大多数的子查询功能可以通过连接和临时表的使用来实现,但是子查询通常更容易阅读和编写。
子查询一般有普通子查询,关联子查询,行子查询和使用子查询作为临时表几种用法。

更新/更改数据

mysql> update tablename set column1=expression1, column2=expression2, ...

修改表

mysql> alter table tablename alteration

删除记录,删除表格甚至删除数据库
mysql> delete from table
mysql> drop table table;
mysql> drop database database;

数据库非常重要的问题是对于数据库的优化和安全问题,其中安全问题包括防止入侵,数据库的备份、复制和恢复等等。

MySQL的高级编程

包括从外部文件载入表数据,存储引擎,事务和存储过程。
存储引擎有时也称作表格类型, 常见的表格类型有: MyISAM, MEMORY, MERGE, ARCHIVE, CSV 和InnoDB.

0 0
原创粉丝点击