在Linux 下
[root@localhost ~]# yum list | grep mysql #先查找出 mysql的软件包;
真正的服务端是 mysql - server
所以安装时把mysql 和 mysql -server 还有开发的库文件mysql -devel也装上
[root@localhost ~]# yum install -y mysql -server mysql mysql -devel
Mysql 的初始化
用 [root@localhost ~]# service mysqld start
启动 ,使mysql 自动的初始化。
初始化时建立一些相关的文件和数据库。
给mysql 的 root 用户设置密码
[root@localhost ~]# mysqladmin -u root passwd ‘新密码’
[root@localhost ~]# mysql -u root -p
##进行密码验证登陆到本地的root 用户上;
输入密码后就可以登陆到mysql 如
mysql> quit ##退出MySQL
[root@localhost ~]# chkconfig mysqld on
##使 mysqld 服务随着系统自启动;
mysql配置文件:etc/my.cnf ## 一些基础的配置;
mysql数据文件:/var/lib/mysql ## 目录下保存着以数据库名字的目录里面是数据文件;
mysql日志:/var/log/mysqld .log ## 可以查看一些错误信息;
mysql用的是TCP协议 使用的端口是3306, 可以远程连接主机的端口,可以通过网络访问;
Mysql 命令:
先介绍几个简单的命令,后面会详细介绍。
mysql> SHOW DATABASES 查看默认的数据库;
mysql> CREATE DATABASE 数据库名 新建一个数据库;
mysql> DROP DATABASE 数据库名 删除一个数据库;
mysql> USE 数据库名 切换到当前使用的数据库;
Mysql 默认没有直接修改数据库名称的命令;
[root@localhost ~]# mysql -h 192.168.1.1 -u root -p
(-h)参数指定远程连接的服务器的地址或者域名,也可以指定本地的地址或域名。
数据在数据库中是以表格的形式保存的, 每一列是一个属性,每一行是一个记录。
每个列以特定的数据类型保存。
数据类型:
类型 | 说明 |
---|---|
CHAR | 1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1) |
VARCHAR | 可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符的变长串 |
SMALLINT | 存储相对比较小的整数。 比如: 年纪,数量 |
INT | 存储中等整数 例如: 距离 |
BIGINT | 存储超大的整数 例如: 科学/数学数据 |
FLOAT | 存储小数数据 例如:测量,温度 |
DOUBLE | 需要双精度存储的小数数据 例如:科学数据 |
DECIMAL | 以特别高的精度存储小数数据。 例如:货币数额,科学数据 |
DATE | 存储日期 例如:生日,产品满期 |
TIME | 存储时间或时间间隔 例如:报警声,两时间之间的间隔,任务开始/结束时间 |
YEAR | 存储年份 例如:毕业年,出生年 |
TIMESTAMP | 记录即时时间 例如:事件提醒器,“最后进入”的时间标记 |
BLOB | 存储二进制数据 例如:图片,附件,二进制文档 |
TINYTEXT | 同TEXT,最大长度为255字节 |
MEDUIMTEXT | 同TEXT,最大长度为16K |
TEXT | 最大长度为64K的变长文本 |
LONGTEXT | 同Text,最大长度为4GB(纯文本,一般不会到4G) |
ENUM | 接受最多64K个串组成的预定义集合的某个串 |
SET | 接受最多64K个串组成的预定义集合的零个或多个串存储字符属性,可从中选择多个字符的联合。例如:多选项选择,比如业余爱好和兴趣。 |
SQL语言基础(Structured Query Language):
约定用大写,以分号结尾;
SQL语句分类:
- Data Definition Language(DDL)
- Data Manipulation Language (DML)
- Data Control Language (DCL)
- Transaction Control Language(TCL)
数据库管理:
- CREATE DATABASE 名字;
- DROP DATABASE 名字;
- 创建一个表格
CREATE TABLE 表名称
{
列名称1 数据类型,
列名称2 数据类型,
列名称3,数据类型,
......
};
4.SHOW TABLES; 查看表格
5. DESCRIBE=DESC 表格名; 查看表格的格式
6. DROP TABLE 表格名; 删除一个表格
修改表:
1. 重命名表名:ALTER TABLE 原表名 RENAME 新表名;
2. 向表中添加一列:ALTER TABLE 表名 ADD 新列名 数据类型;
3. 删除表中一列:ALTER TABLE 表名 DROP COLUMN 列名;
4. 修改一列的数据类型:ALTER TABLE 表名 MODIFY 列名 数据类型;
5. 重命名一列:ALTER TABLE 表名 CHANGE COLUMN 原列名 新列名 数据类型;
向表格中插入一条记录:
INSERT INTO 表名 VALUES(值1,值2,…); ##每个属性都需要插入值
或:
INSERT INTO 表名(列1,列2) VALUES(值1,值2); ##插入指定的属性查询数据:
1>. 从表格中查询记录:
SELECT 列名1,列名2… FROM 表名;
或:
SELECT * FROM 表名;
2>. 按条件查询:
SELECT 列名 FROM 表名 WHERE 运算符 值;
eg:SELECT * FROM course WHERE course_name=’GNOME’; ## WHERE 后面列名的内容精确等于运算符后面的内容
操作符 | 功能 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某范围内 |
LIKE | 搜索某种模式 |
3.删除一条记录:
DELETE FROM 表名 WHERE 列名 运算符 值;
或:
DELETE * FROM 表名;
eg: DELETE FROM course WHERE id=2;
4.更新一条记录:
UPDATE 表名 SET 列名 = 新值 WHERE 列名=值;
eg: UPDATE course SET lecture=’LEE’ WHERE id=3; ##一般情况这个判定条件要唯一定位到具体的单元;
5.返回结果删除重复项:
SELECT DISTINCT 列名 FROM 表名;
6.WHERE条件中使用逻辑组合:
SELECT * FROM 表名 WHERE 条件1 AND 条件2;
SELECT * FROM 表名 WHERE 条件1 OR 条件2;
7.对结果的查询按指定列进行排序:
SELECT * FROM 表名 ORDER BY 列名; ##按从小到大排序
SELECT * FROM 表名 ORDER BY 列名 DESC; ##倒序,从大到小排序
MySQL用户管理:
*MySQL数据库默认只有一个root 用户
*MySQL将用户信息保存到MySQL数据库的user 表中
- 创建一个新的用户:
CREATE USER 用户名 IDENTIFIED BY ‘ 密码 ’;
新创建的用户默认是不能登录的,因为没有设置权限。 - 删除用户:
DROP USER 用户名; - 重命名用户:
RENAME USER 原用户名 TO 新用户名; - 修改当前用户密码:
SET PASSWORD = PASSWORD(‘新密码’);
修改指定用户密码:
SET PASSWORD FOR 用户名 = PASSWORD(‘新密码’);
*密码信息也保存在user 表中,是一个通过PASSWORD函数加密的
MySQL 权限系统:
**MySQL权限系统控制一个用户是否能进行连接,以及连接后能够针对哪些对象进行什么操作。
MySQL的权限控制包含两个阶段:
1. 检查用户是否能够连接
2. 检查用户是否具有所执行动作的权限
MySQL权限层级:
*MySQL授予权限可分为以下几个层级:
1. 全局层级
2. 数据库层级
3. 表层级
4. 列层级
5. 子程序层级
MySQL授权命令:
*MySQL通过GRANT授予权限,REVOKE撤销权限。
授予一个用户权限:
GRANT ALL PRIVILEGES ON 层级 to 用户名@主机 IDENTIFIED BY 密码;
eg : GRANT ALL PRIVILEGES ON . to ‘hebohao’@ ‘%’ IDENTIFIED BY ‘hezekiah’; ##授予 he 用户全局级全部权限,第一个 * 是所有数据库,第二个 * 是所有表;撤销一个用户权限:
REVOKE ALL PRIVILEGES FROM 用户名;
MySQL连接认证:
*当连接MySQL服务时,MySQL通过 用户名密码 和 主机 信息验证是否允许连接。
GRANT ALL PRIVILEGES ON *.* to ‘hebohao’@ ‘%’ IDENTIFIED BY ‘hezekiah’;
用户名 主机
这里的主机是指允许从哪些主机进行连接,可以使用如下形式:
1. 所有主机: “%”
2. 精确的主机名或IP地址: www.xxxx.net 或 192.168.1.1
3. 使用“ * ”通配符:*.xxxx.net
4. 指定一个网段: 192.168.1.0/255.255.255.0
**一般情况下,在创建数据库的同时,为它也创建一个用户
**不建议使用root , 默认情况下,root 只能登录本机,不能远程登录,要想登录,必须赋予权限,但是不建议,比较危险。
MySQL简单的备份和恢复操作:
*MySQL使用最为广泛的备份恢复工具是mysqldump
- 备份一个指定的数据库:
mysqldump -u root -p 数据库名 > 备份文件. sql
**mysql 备份出来的文件是纯文本的 .sql 文件,可以修改后作为其他数据库数据使用
- 从备份的SQL文件恢复一个指定数据库:
mysql -u root -p 数据库名 < 备份文件. sql
MySQL数据库编码:
**数据库使用一个特定编码保存数据,如latin、Big5、GB2312、UTF8等,不同语言一般使用不同编码保存。
编码主要影响以下两个方面:
1. 数据库保存相同内容所占用的空间大小。
2. 数据库与客户端通信。
UTF使用最多,可以使用同一个编码表示不同的语言。
MySQL编码:
MySQL数据库默认编码是:
character set : latin1
collation : latin1_swedish_ci
- 查看MySQL支持的编码:
SHOW CHARACTER SET; - 查看MySQL当前使用的编码:
SHOW VARIABLES LIKE ‘character_set%’;
SHOW VARIABLES LIKE ‘collation%’; - 创建数据库时指定数据库编码:
CREATE DATABASE course
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci ; - 修改一个数据库的编码:
ALTER DATABASE course CHARACTER SET utf8 COLLATE utf8_general_ci
**修改时如果已经有数据,有可能修改后会导致以前的数据无法正常显示。
5.修改MySQL默认编码:
通过修改MySQL的配制文件/etc/my.cnf 设置MySQL的默认编码:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8[mysqld]
default-character-set = utf8
collation-server = utf8_unicode_ci
init-connect =‘SET NAMES utf8’
character-set-server = utf8
修改后重启MySQL服务,通过上命令查看默认编码:
SHOW VARIABLES LIKE ‘character_set%’