SQL 语句简单说明

一、SQL 语句的分类
  • DML:数据操作语言
  • DDL:数据描述语言
  • DCL:数据控制语言
二、安装方式

一般进行sql语句练习就选择RPM 包

$ yum -y install mysql mysql-server

源码包的安装,有兴趣可以看看

# 安装 ncurses 提供字符终端处理库, 包括面板和菜单。 它提供了一套控制光标, 建立窗口, 改变前景背景颜色以及处理鼠标操作的函数。使用户在字符终端下编写应用程序时绕过了那些恼人的底层机制。 简而言之, 他是一个可以使应用程序直接控制终端屏幕显示的函数库
$ yum-y install ncurses-devel

$ cd /soft/ncurses-5.9
$ ./configure --with-shared --without-debug --without-ada --enable-overwrite
# 若不安装 ncurses 编译 MySQL 时会报错 * --without-ada 参数为设定不编译为 ada 定, 因进入 chroot 环境不能使用 ada ; --enableoverwrite 参数为定义把头文件安装到 /tools/include 下而不是 /tools/include/ncurses 目录 * --with-shared 生成共享库
$ make
$ make install

# 安装 cmake 和 bison
$ yum -y install cmake bison

# 安装 MySQL
$ useradd -s -M /sbin/nologin mysql
$ cd /soft/mysql-5.5.48
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -
DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -
DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -
DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -
DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
$ make && make install

$ cd /usr/local/mysql/
$ chown -R root .
$ chown -R mysql data
# 修改 MySQL 目录权限
$ cp support-files/my-medium.cnf /etc/my.cnf
# 复制 mysql 配置文件
$ /usr/local/mysql/scripts/mysql_install_db --user=mysql
$ /usr/local/mysql/bin/mysqld_safe --user=mysql &
三、基本信息
  • 主配置文件:/etc/my.cnf
  • 端口:3306
  • 数据目录:/var/lib/mysql
四、SQL 语句
1、用户级别的操作
# 登录
$ mysql -u 用户名 -p 密码 -h 服务器地址 -P 端口 -S 套接字

# 创建用户
$ create user '用户名'@'登录地址' identified by '密码';

# 修改密码
# 管理员的密码修改
$ mysqladmin -uroot password  密码  -S /var/lib/mysql/mysql.sock;  
$ set password=password("123456");
$ set password for '用户名'@'登录地址'=password("密码");
# 普通用户的密码修改
$ set password=password("123456");

# 管理员的密码找回
1、关闭数据库服务
2、修改主配置文件, 在 mysqld 区域中添加记录 
$ skip-grant-table
3、重启服务
4、登录 mysql 使用命令修改密码
$ update mysql.user set password=password("123") where user='root';
也可以修改普通用户密码,注意修改完成后需要刷新flush privileges;
2、数据级别的操作
①、数据的增加
$ create database xx;

$ create table 表名 (x1 int(3));

$ insert into 表名 ( x1) values ('1');

$ create table 表名 (
id int unsigned not null auto_increment,
name char(40) not null default '未知',
age int not null default '0',
primary key (id));

$ insert into 表1 ( x1 ) select x1 from 表2;
②、数据的删除
# 删除数据库
$ drop database 库名;

# 删除表
$ drop table 表名; 

# 删除表中字段等于数值的记录
$ delete from 表 where 字段=数值; 

# 删除普通用户
$ mysql -u root -p
$ Delete FROM user Where User='test' and Host='localhost';
$ flush privileges;
③、数据的修改
#  更新表字段 2 等于数值 2 的所有字段 1 的数值为数值 1
$ update 表名 set 字段1=数值1 where 字段2=数值2;

# 更新表字段 2 在 1 到 5 之间的所有字段 1 的数值为数值 1
$ update 表名 set 字段1=数值1 where 字段2 between 1 and 5; 

# 将表 1 名称修改为表 2
$ alter table 表1名 rename 表2名; 
$ alter table xinxi modify age int(20); 将xinxi表age字段参数修改为 int(20)

# 将 xinxi 表字段名 name 修改为 username
$ alter table xinxi change name username char(40) not null default ' '; 

# 将 xinxi 表中添加一个字段
$ alter table xinxi add date year; 

# 删除 xinxi 表中的 date 字段
$ alter table xinxi drop date; 

# 将 xinxi 表中添加到第一个字段
$ alter table xinxi add date year first; 

# 将 xinxi 表中添加一个 data 字段添加到 age 之后
$ alter table xinxi add date year after age; 
④、查
# 查看数据库
$ show databases; 

# 查看数据表
$ show tables; 

# 查看表结构
$ describe 表名; 
⑤、授权
# 授权一个已存在的 zhangsan 用户允许在任何地方登陆并给予最大权限
$ grant all on *.* to 'zhangsan'@'%'; 

# 创建并授权 lisi 用户允许在任何地方登陆给予最大权限并设置密码为 123
$ grant all on *.* to 'lisi'@'%' identified by '123'; 
	create、 delete、 drop、 select、 all、 grant、 slave

# 查看 zhangsan 用户在远程登陆的权限
$ show grants for 'zhangsan'@'%'; 

# 取消 zhangsan 在远程创建使用 test 库的权限
$ revoke create on test.* from 'zhangsan'@'%'; 
五、数据库备份
1、文件级别备份:离线执行, 必须终止读写执行操作
cp scp rsync
2、逻辑备份
  • Navicat

  • mysqldump

    # 备份数据库
    $ mysqldump 数据库名 > 备份文件名
    
    # 还原数据库到 test
    $ mysql 数据库名 < 备份文件 
    
    # 备份数据库并且之备份表 1
    $ mysqldump 数据库名 表1 > 备份文件名 
    
    # 将数据库 1 与数据库 2 同时备份到备份文件
    $ mysqldump --databases 数据库1 数据库2 > 备份文件 
    
    # 将所有的数据库进行备份
    $ mysqldump --all-databases > 备份文件 
    
  • mysqlhotcopy

    $ mysqlhotcopy --flushlog -u='root' -p='123' --regexp=^a /root 
    
3、日志备份
①、日志的类型
  • 错误日志
  • 查询日志
  • 慢查询日志
  • 二进制日志
  • 事物日志
  • 中继日志
# 查询系统开启的日志信息
$ show global variables like '%log%'; 

# 开启一般查询日志
$ general_log=ON
$ log=ON

# 开启慢查询日志
# 查询慢查询时间
$ show global variables like '%long%'; 
$ log-slow-queries=/var/mysql-slow.log
$ long_query_time=4

# 二进制日志开启
$ log-bin=mysql-bin
# 查看当前正在使用的二进制日志文件名
$ show binary logs; 
$ show binlog events in 'mysql-bin.000001';
# 通过工具查看 mysql 二进制日志
$ mysqlbinlog mysql-bin.000001 
②、使用二进制日志进行数据恢复
# 根据时间截取还原数据
$ mysqlbinlog --start-datetime '2017-05-17 20:06:00' --stop-datetime '2017-05-17 20:01:54' mysqlbin.000001 | mysql -uroot -p

# 根据日志 POS 大小截取还原数据
$ mysqlbinlog --start-position 106 --stop-position 185 mysql-bin.000001 | mysql -uroot -p

数据恢复

# 根据时间截取还原数据
$ mysqlbinlog --start-datetime '2017-05-17 20:06:00' --stop-datetime '2017-05-17 20:01:54' mysqlbin.000001 | mysql -uroot -p

# 根据日志 POS 大小截取还原数据
$ mysqlbinlog --start-position 106 --stop-position 185 mysql-bin.000001 | mysql -uroot -p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值