码迷,mamicode.com
首页 > 数据库 > 详细

mysql数据库的一些基本操作(2)

时间:2014-10-15 14:47:01      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:mysql

数据的导入导出

  数据的导入:把文件的内容保存到数据的表里

               文件按一定格式存放到文件里,按照文件的格式把文件导到表里。

          表的结构必须与数据文件的格式完全一样。

                根据源数据内容创建表结构

    数据库管理员登陆的状态时才能导入数据

    数据导入命令格式

        load  data  infile  ‘文件名’  into  table  表名

        fields  terminated   by  ‘列分隔符’  

        lines   terminated   by  ‘\n’

例:

create table user_tab( user varchar(15) not null, pass varchar(10) not null, UID  varchar(5)  not null, GID  varchar(5)  not null, name varchar(30) , home varchar(30) not null, shell varchar(30), index(user));
load data infile ‘/etc/passwd‘ into table user_tab fields terminated by‘:‘ lines terminated by ‘\n‘;
alter table user_tab add id int(3) primary key auto_increment first;

  数据的导出(把表里记录保存到系统文件里)

 数据导出的命令格式

    select 查询语句  into  outfile  ‘文件名’

    Fields  terminated  by  ‘分隔符’

    Lines  terminated  by  ‘\n’

导出数据时的注意事项:

    导出的内容由SQL查询语句决定

    若不指定路径,默认存放在执行导出操作时所在库的目录下

    确保mysql进程对目标文件夹有写的权限

表记录的增、删、改、查:   

    添加记录:

    insert  into  数据库名.表名(字段名列表) values(字段值列表),(字段值2);

    依次向表中字段插入记录字段名列表可以省略。

    插入记录时注意事项:

        值要与字段类型匹配,同时要满足字段的约束条件。

        给表中所有字段插值时字段名可以省略但字段值个数要与字段名个数相符。

        向表中指定字段插值时必须有明确的字段名,有默认值的字段使用默认值给字段赋值

    

    删除记录:

    delete  from  库名.表名;

    delete  from  库名.表名  where  条件表达式;

    注意事项:

        不加条件时,删除表中所有结构。

        加条件时只删除与条件相匹配的记录。

    

    修改记录:

    update  库名.表名  set  字段名=字段值,字段名2=字段值 where 条件表达式;

    若不加条件表达式,是将表中每条记录中字段名全部改为设定的值。

    注意事项:

        不加条件,是批量修改指定字段的值。

        修改记录时,值要与字段的类型匹配,且要满足约束条件

        同时修改多个字段时,字段之间用逗号间隔。

    

    查看记录:

    select  字段名列表  from  数据库名.表名;

    select 字段名列表  from  库名.表名  where 条件表达式;

    select  *  from  数据库名.表名;

    select  字段名1,字段名2,字段名N  from 库名.表名;

条件表达式:

    数据比较、范围查询、逻辑比较、正则表达式、模糊查询

    数值的比较  =  >    >=   <   <=   !=  

    数值的范围内匹配: 字段名 between 数值1  and  数值2

    范围内匹配:字段名  in  (字段值列表);  任何字段

    不在范围内为not  in   字段值列表要与字段名类型匹配。

    

    逻辑比较,多条件组合

        and  逻辑与(列举的多个条件要同时成立)   

        or   逻辑或(列举的多个条件满足其一即可)

        is  null 匹配空值    is  not   null  匹配不为空的值

        distinct  不显示重复的值

        select distinct 字段名 from  表名

    运算操作 +   -   *    /   %(取余)

    查询时可以做四则运算  数值类型

    select  字段名1,字段名2+字段名3  as  别名  from  表名;

    别名是临时的


    正则表达式

    where  字段名  regexp  ‘正则表达式’

    ‘^a’ 以a开头  ‘r$’ 以r结尾的  

    ‘^a.r$’以a开头r结尾中间任意

    ‘^…$’ 任意三个字符的

    模糊查询

    where  字段名  like  ‘通配字符串’;

    %    匹配0个到多个字符

    _    匹配任意单个字符

    分组

    group  by  字段名

    group  by  字段名  [having  条件表达式]

select  shell,uid  from  user_tab  group  by  shell  having  uid<500
select  shell  from  user_tab  group  by  shell having  “uid”<500

    排序

    order  by  字段名  [asc];    默认升序排序

    order  by  字段名  desc;    降序    

select  username,gid  from  user_tab  order  by  gid  desc;

    限制显示记录的条目数   limit

    limit  N,M  N显示记录的起始行,M共显示几行

    N 默认值为0 表示从第一行开始显示

select *  from  user_tab  order  by  gid  desc  limit  10;
        10为M的值,N值默认为0,等同于limit  0,10
         N值为行数-1,0为第一行

    mysql 查询时使用的函数

    sum(字段名)   求和

    max(字段名)   求最大值

    min(字段名)   求最小值

    avg(字段名)   求平均值

    count(字段名)  统计字段记录数

select  count(username)  from  user_tab;
    select  count(username)  from  user_tab  where条件表达式;

修改管理员密码:

    mysqladmin  -uroot  -p  password‘999’

    密码是加密的,加密的函数为password

[root@localhost ~]# mysqladmin -uroot -p password ‘新密码
    enter password:旧密码
    密码保存在mysql.user

忘记数据库管理员密码:

    mysql服务器默认有4个库。 mysql授权库

[root@localhost ~]# service mysql stop
Shutting down MySQL....                               [确定]
[root@localhost ~]# service mysql start --skip-grant-table
Starting MySQL...                                     [确定]
[root@localhost ~]# mysql
mysql> update mysql.user set password=password(‘123456‘) where host=‘localhost‘;

用户授权和权限撤销

    数据库服务器默认只允许数据库管理员从数据库服务器本机登陆。

    默认情况下只有数据库管理员从数据库服务器登陆本机登陆时才有授权权限        

    grant  权限列表  on 数据名  to  用户名@“客户端地址” identified   by   “密码”  with  grant  option.


    权限列表的表示方式

        all   所有权限

        select,update,delete列表之间用逗号间隔

    数据名表示方式:

        *.*   数据库里的所有库所有表

        数据库名.* 指定对某个库有权限

        数据库名.表名  指定对某个库的某个表有权限

    用户名表示方式:

        授权时自定义的名字,要有标识性,授权后成功后,用户名保存在mysql.user表里。与系统 账号无关。

    客户端地址表示方式:

        %    所有主机

        1.1.1.1 指定IP地址

        192.168.1.%  指定网段

        pc1.example.com  主机名(数据库服务器能够解析主机名

        %.example.com  域名(数据库服务器能够解析域内的主机名)

    identified  by  “密码”

        设置授权用户的密码,是可选项,授权时若不指定此选项,用授权用户登录数据库服务器时没有密码

    with  grant  option

        可选项,作用是授权用户有授权权限,授权时若不指定此选项,授权用户没有授权权限。

授权信息保存在服务器端的mysql库里的表里。

登录用户查看自己的权限信息

    show  grants;

查看权限

    show  grants  for  用户名@“客户端地址”;

user 表存放授权用户的权限信息。

db表里存放对某个库的权限

tables_priv表里存放对某个表的权限

columns_priv表里存放对某个字段的权限

撤销权限

    revoke  权限列表  on  数据名 from  用户名@“客户端地址”;

删除授权用户 把授权用户从user表里删除。

刷新授权

    mysql> flush privileges;  //手动对mysql库里的表做操作的时候要刷新信息才能生效。去掉授权权限

    revoke  grant  option  on  *.*  from  用户名@ “客户端IP地址”

授权用户登陆数据库服务器后,修改自己的登陆密码

    set  password=password(‘新密码’);

管理员重置授权用户的登陆密码

    set  password  for  用户名@ “客户端地址”=password(‘新密码’)






mysql数据库的一些基本操作(2)

标签:mysql

原文地址:http://8588192.blog.51cto.com/8578192/1564323

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!