zoukankan      html  css  js  c++  java
  • Mysql 操作命令 详解

    目的:
    1、 掌握mysql的安装,建库、建表、表的三种基本操作、查询、多表查询、数据库的备份与恢复
    2、 MYSQL 服务器的简单维护
    3、 mysql+apache+php的环境搭建
    一、如何安装mysql服务器:
    我们使用当前MY-SQL的比较新的版本MY SQL 5.0版。首先,如何得到MY SQL 5.0 我们可以从网上下载([url]www.mysql.cn[/url])。 
    我们来看一下如何进行安装MY SQL支持多平台,也就是说它可以工作在WINDWOS平台上,也可以工作在LINUX平台上,在LINUX下的安装可能会复杂那么一点点,但在WINDOWS下的安装还是很简单的,和咱们平时安装软件没什么两样,下面咱们开始安装:我们拿到的是一个可执行文件,双击Setup.exe文件,开始mysql5.0的安装。先是等待,直到出现下面的欢迎窗口
    *********
    安装过程略!
    ********
    怎么检测你的mysql正确安装了。那你们是怎么检测 SQL SERVER是不是正确安装的?
    Netstat  -an
    看有没有3306口吧!或者你就去看看你的服务有没有启动!
    二、登录到mysql服务器:
    两种方法:
    1、 mysql –hlocalhost –uroot –p口令
    2、 直接利用开始菜单!开始----程序---mysql5.0
    三、命令的简单使用:
    下面的操作一般就是使用标准SQL命令:也就是说你在SQL SERVER里面怎么用,这里就怎么用,但是有的命令也不是完全一样的。有一点点细微的差别!下面咱们就把这个命令简单的过一遍:
     my sql 命令的使用:以分号或g结束,c取消一行命令,h帮助
    1、 显示数据库:show databases;
    2、 建数据库:create database  [if not exists] 数据库名;
    3、 建数据表: create table [if not exists] 表名 (字段名1   类型。。。。。。。。)
    create table student (编号 int auto_increment primary key, 姓名 varchar(10));
    注意:设置了自动增长,就要定为主键,如果选择了BIT 类型,0不显示,非0显示为一个特殊符号!
    4、 显示数据表:show tables;
    5、 删除库: drop database [if exists] 库名; 
    6、 删除表: drop table   [if exists] 表名;
    7、 显示表结构: desc 表名
    8、 如何修改表结构:增长一个字段; alter table 表名 add 字段名  类型
    9、               删除一个字段: alter table  表名 drop 字段名
    10、          修改一个字段的属性:  alter table 表名modify 字段 新属性
    11、 修改主键: 增加一个主键  alter table 表名 add primary key(字段名)
    12、          删除一个主键  alter table 表名  drop primary key(字段名)
    四、表的三种基本操作:
    插入记录、删除记录、更新记录、 这个和sql server是一样的,你在SQL SERVER里面怎么操作,在MYSQL里面就怎么操作!没什么大区别,当然小区别还是有的。比如;insert命令,SQL SERVER2000 一次只能插入一条记录,MYSQL可以插入多条记录。
    Insert into 表 (字段表列表) values(字段值),(字段值)。。。。。。
    删除,更新和SQL SERVER没有什么区别,不再累述!
    13、 删除数据库:Drop DATABASE 数据库名
    14、 删除表:    Drop TABLE    表名
    15、 表改名:    RENAME TABLE 旧表中  TO  新表名 数据库不能改名,但也不是绝对不能改,但改不好会造成里面的数据无法正常读出,后果自负!
    16、 库改名: 常用方法是把新库创建出来,然后把旧库里的数据导入进去.

    五、查询: 这应该是SQL中的一大块。
    Select 查询:也和SQL SERVER没有什么大差别:
    关键是大家要熟练运用各种运算符,数学运算符比较简单,重点在于字符型运算符LIKE、关系运算符和逻辑运算符
    如:查找姓王的记录:Select  * FROM YUANGONG  Where 姓名  like '王%';
    查找姓名中有五的记录:Select * FROM YUANGONG  Where 姓名  like '%王%';
    查找以王结尾的记录:Select  * FROM YUANGONG  Where 姓名  like '%王';
    其中linit是SQL SERVER没有的。
    例如:我想显示第三条到第七条记录
    select * from 表名 limit 2,5;
    通配符 描述 示例
    % 通配零个或多个任意字符 
    _(下划线) 通配任意一个字符 
    不再含有 [ ] 不同于SQL SERVER
    注意:如果用like发现结果不正确,有可能是编码的问题
    六、记录排序
    利用order by 对记录进行排序
    格式:select 字段名列表 from 表名 [where 条件] order by 排序字段1 [asc ] [desc] [排序字段2……]
    如:按年龄对yuangong表进行升序排列!
    Select  * from yuangong order by 年龄  asc 或  select  * from yuangong order by 年龄
    如:按年龄对yuangong表进行降序排列!
    Select  * from yuangong order by 年龄  desc
    对员工表先按性别升序排列,性别相同的再按年龄从大到小排序
    Select * from 员工表   order by   性别 asc,年龄 desc
    七、聚集函数:
    最大值:max()       最小值 min()    平均值avg() 
    求和:   sum()        汇总: count ()
    如:求每个部门的基本工资平均值
    select 部门,avg(基本工资)  as 部门基本工资 from 员工表 group by 部门
    显示平均基本工资大于3000的部门
    Select  部门,avg(基本工资) from 员工表 group 部门 where avg(基本工资)>3000
    此句错误。SQL规定在分组中使用条件不能用 Where 而是用 having
    Select  部门,avg(基本工资) from 员工表 group by  部门 having avg(基本工资)>3000

    八、多表查询:
    一个数据库中的多个表,存在一定的联系,怎么样正常的显示这么表的信息?
    现在有三个表:
    yg
    Name  sex  age  
    宋洋  男   20  
    马冬旭 女   40  
     Gs
    Name   title      date       单位
    宋洋   AD详解 2006-11-10  清华大学
    马冬旭 linux    2005-01-01   人民大学
     dz
    单位     地址
    清华大学  五道口
    人民大学   黄庄

    第一种方法称为:交叉连接,在SQL SERVER中又称为笛卡尔乘积
    但是要注意的默认生成的记录总数是两表记录之积
    select * from yg,gs;
    select * from yg,gs where yg.name=gs.name;
    这才是我们想要的记录
    第二种方法是用join连接:
    内连接
    select * from yg join gs on yg.name=gs.name 
    左外连接
    右外连接
    但没有全外连接

    九、联合:
    除了连接,mysql4。0以上的版本还支持UNION运算符,它用来把多个select查询号的输出连接成一个单独的结果集。大多数情况下,这个运算符用来把查询产生的结果集添加到不同的表,同时创建包括所有结果的一个单独表。比如面试的时候问你,有两个表,字段信息一样,让你用一条语句把两个表的信息组合为一个单独的表!
    为了说明UNION运算符的使用方法,我们举一个例子:现在有两个表,分别存放的是男同学信息和女同学信息,如果用一个语句将所有同学的信息显示出来!
    mysql> select * from nan;
    +--------+-------+
    | name   | score |
    +--------+-------+
    | 彭聪留 |    80 |
    | 费优优 |    81 |
    | 曲权   |    82 |
    +--------+-------+
    3 rows in set (0.00 sec) mysql> select * from nv;
    +------+-------+
    | name | score |
    +------+-------+
    | 彭红 |    80 |
    | 费红 |    81 |
    | 曲红 |    82 |
    +------+-------+
    3 rows in set (0.00 sec)
    mysql> select * from nan union select * from nv;
    +--------+-------+
    | name   | score |
    +--------+-------+
    | 彭聪留 |    80 |
    | 费优优 |    81 |
    | 曲权   |    82 |
    | 彭红   |    80 |
    | 费红   |    81 |
    | 曲红   |    82 |
    +--------+-------+
    6 rows in set (0.00 sec)
    那如果有三个表怎么办?也是一样的操作!
    但注意的是如果两个表的某条记录信息完全一致,则只显示为一条;如果想显示全部记录则在union后 加 all
    mysql> select * from nan union all  select * from nv;
    如果面试官又问你,如果想把显示的信息保存到一个表中怎么办?
    mysql> create table 表名 select 语句;

    十、数据库备份与恢复
    备份:
    第一种方法:   mysqldump
    备份一个表 mysqldump  -h主机名  –u用户名 –p口令 数据库  表名 >文本文件
                    恢复: mysql   -h  主机名 –u用户名 –p口令 数据库 <文本文件
    备份一个数据库中的两个表或是多个表怎么办?
      Mysqldump –h 主机名 –u用户名 –p口令 数据库 表名1 表名2  >文本文件
     恢复的时候: mysql –h 主机名 –u用户名 –p 口令 数据库<文本文件
    备份整个数据库:
    格式: mysqldump –u用户名  -p密码 数据库名>文本文件名
    如:C: est>mysqldump -uroot -p111111 net14  >net14.txt
    删除数据库net14:         drop database net14
    进行恢复:
    C: est>mysql -u root  -p111111 net14<net14.txt
    ERROR 1049 (42000): Unknown database 'net14'
    报错.说找不到数据库net14;
    必须先手工建立一个空的net14数据库,然后才能把数据导进来!
    C: est>mysql -u root  -p111111 net14<net14.txt
    那还有一个问题,如果想同时备份两个以上的数据库怎么办?
    格式: mysqldump –u用户名  -p密码  -B 数据库1   数据库2 >文本文件名
    如:    C: est>mysqldump -uroot -p111111 -B net14 net28  >net1428.txt
    然后删除net14和net28再进行恢复
    但是要注意:必须一个一个的恢复,不能同时恢复两个:
    如: C: est>mysql -uroot -p111111 -B net14   <net1428.txt
    C: est>mysql -uroot -p111111 -B net28   <net1428.txt
    第二种方法:  select into 作备份:这相对于第一种方法就简单多了!
    格式:  select 语句 into outfile “路径及文件名”;
    如: mysql> select * from student into outfile 'c:\abc1.txt';
    Query OK, 13 rows affected (0.00 sec)
    注意:
    1.路径中的盘符后是两个\,其中第一个代表转义作用,第二个才是代表根目录.有时写成一个时不会报错,因此要注意检查备份的正确性;
    2.不允许重写文本文件;
    恢复方法:
    那么怎么恢复呢::
    用LOAD DATA来恢复:
    格式: load data infile ‘路径及文件名’ into table 表名
    如: load data infile 'c:\student.txt' into table student;
    注意:表必须存在.可用delete,清空其中的所有记录 或者用: truncate 表名,只删除记录,不删除结构!
    如果恢复出错怎么办?
    1. 权限问题.
    2. 分界符不匹配!
    3. 路径和文件名不对!

    十一、数据的导入/导出:
    如何与其他数据源之间进行数据的导入与导出!
    例如:如何将  SQL server 的数据导到mysql中来
    1. 先在MS SQL 2000的导入导出工具将数据导出成*.txt文件格式
    注意打开backup.txt
    观察其中的分隔字符 MS SQL 2000好像是用逗号分隔的
    2. 在mysql中利用 load data infile 命令导入
    mysql> load data infile 'c:\sql.txt' into table abc fields terminated by ',';
    Query OK, 5 rows affected (0.00 sec)
    Records: 5  Deleted: 0  Skipped: 0  Warnings: 0
    注意  目标表必须已经存在,并结构要与源表的结构相同!
    ACCESS 导到 MYSQL:
    1. 先建立一个access文件,保存成文本文件
    2. 打开文本文件,再转换一下编码成ansi
    3. 建立数据库,导入到mysql中!
    mysql> load data infile 'c:\abc1.txt' into table abc fields terminated by ',';
    Query OK, 3 rows affected (0.00 sec)
    EXCEL 导到mysql
     步骤同上。只是要注意的是:excel默认是以 TAB 分隔的所以应用以下的语句:
    mysql> load data infile 'c:\book1.txt' into table abc fields terminated by ' ';

    关于mysql 的具体内容我们就介绍这么多,下面我们来看一下php的搭建环境.因为现在apache+mysql+php称为网站设计的经典组合.这是大家必须要掌握的.
    待续..........................................
  • 相关阅读:
    python--模块与包
    内置函数 的总结
    迭代器 生成器 列表推导式 生成器表达式的一些总结
    函数的有用信息 带参数的装饰器 多个装饰器装饰一个函数
    函数名的应用(第一对象) 闭包 装饰器
    动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结
    函数的初识 函数的返回值 参数
    文件操作 常用操作方法 文件的修改
    遍历字典的集中方法 集合的作用 以及增删查的方法
    计算机硬件的小知识
  • 原文地址:https://www.cnblogs.com/cy568searchx/p/3173218.html
Copyright © 2011-2022 走看看