MySQL学习笔记一

3 篇文章 0 订阅

在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)参数指定远程连接的服务器的地址或者域名,也可以指定本地的地址或域名。

数据在数据库中是以表格的形式保存的, 每一列是一个属性,每一行是一个记录。
每个列以特定的数据类型保存。

数据类型:
类型说明
CHAR1~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)
数据库管理:
  1. CREATE DATABASE 名字;
  2. DROP DATABASE 名字;
  3. 创建一个表格
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 原列名 新列名 数据类型;

  1. 向表格中插入一条记录:
    INSERT INTO 表名 VALUES(值1,值2,…); ##每个属性都需要插入值
    或:
    INSERT INTO 表名(列1,列2) VALUES(值1,值2); ##插入指定的属性

  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 表中

  1. 创建一个新的用户:
    CREATE USER 用户名 IDENTIFIED BY ‘ 密码 ’;
    新创建的用户默认是不能登录的,因为没有设置权限。
  2. 删除用户:
    DROP USER 用户名;
  3. 重命名用户:
    RENAME USER 原用户名 TO 新用户名;
  4. 修改当前用户密码:
    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撤销权限。

  1. 授予一个用户权限:
    GRANT ALL PRIVILEGES ON 层级 to 用户名@主机 IDENTIFIED BY 密码;
    eg : GRANT ALL PRIVILEGES ON . to ‘hebohao’@ ‘%’ IDENTIFIED BY ‘hezekiah’; ##授予 he 用户全局级全部权限,第一个 * 是所有数据库,第二个 * 是所有表;

  2. 撤销一个用户权限:
    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

  1. 备份一个指定的数据库:
    mysqldump -u root -p 数据库名 > 备份文件. sql

**mysql 备份出来的文件是纯文本的 .sql 文件,可以修改后作为其他数据库数据使用

  1. 从备份的SQL文件恢复一个指定数据库:
    mysql -u root -p 数据库名 < 备份文件. sql


MySQL数据库编码:

**数据库使用一个特定编码保存数据,如latin、Big5、GB2312、UTF8等,不同语言一般使用不同编码保存。

编码主要影响以下两个方面:
1. 数据库保存相同内容所占用的空间大小。
2. 数据库与客户端通信。

UTF使用最多,可以使用同一个编码表示不同的语言。

MySQL编码:
MySQL数据库默认编码是:
character set : latin1
collation : latin1_swedish_ci

  1. 查看MySQL支持的编码:
    SHOW CHARACTER SET;
  2. 查看MySQL当前使用的编码:
    SHOW VARIABLES LIKE ‘character_set%’;
    SHOW VARIABLES LIKE ‘collation%’;
  3. 创建数据库时指定数据库编码:
    CREATE DATABASE course
    DEFAULT CHARACTER SET utf8
    DEFAULT COLLATE utf8_general_ci ;
  4. 修改一个数据库的编码:
    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%’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值