mysql数据库-基本操作

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

一、版本介绍

       社区版:免费,个人使用,不能商业用,出了问题自己解决,没有技术支持

       企业版:收费,商业用,偏重于基本服务,cpu个数在1-4之间,费用4万/年;超过4个,7万/年

       集群版:收费,商业用,偏重于集群设定,cpu个数在1-4之间,费用7万/年;超过4个,14万/年


二、yum安装

       mysql:主要提供管理工具

       mysql-server:提供基本模块和功能


三、启动数据库

       加载的内容以及数据库下的文件

       说明:ibdata1、ib_logfile0、ib_logfile1都是数据库索引文件,用来快速定位数据;mysql.sock套接字文件,绑定了数据库的IP、端口等,想要用户连接访问,就必须要有这个文件

  wKioL1ia5MyATxQUAAAmeelGB8M020.png

       数据库文件解释:

       .frm文件:存放数据用的数据表结构

       .MYD文件:存放数据表的具体数据

       .MYI文件:当前数据表的索引文件

  wKiom1ia5NujwW0CAAAWl_fSQqo853.png


四、登录数据库

       mysql  -u 用户

                  -p 密码

                  -h 登录哪台服务器

                  -P 指定端口

       远程登录数据库

        mysql -h192.168.1.100 -uroot -p123456


    a. mysqladmin:添加密码的工具

        格式:mysqladmin -uroot password '123456'


    b. 修改root密码:root登录之后

        set password=password("654321")


    c. 修改普通用户密码,root登录之后

       set password for 'user1'@'localhost' =password("654321")


    d.  忘记root用户密码之后,重设密码步骤:

        1) 停止数据库 service mysqld stop

        2) 修改配置文件my.cnf,加入skip-grant-tables

        3) 启动数据库 service mysqld stat,不用密码直接root登录

        4) 重设密码 update mysql.user set password=password('123') where user='root'

        5) 修改配置文件,删除skip-grant-tables

        6) 重启数据库service mysqld restart

        7) 新密码登录


五、创建数据库用户

       格式:create user silen@'192.168.1.0/24' by identified '123456'


六、数据库操作(备份 还原 多机 集群)


【操作1-增】

      1. create database db1


      2. create table tb1(字段1 类型1,字段2 类型2......)

          创建数据库和表,用到create命令,类型即域约束


      3. insert into tb1(id,name,info) values (1,'zhangshan','student')

         字符串值用单引号括起来,标红可以不用写,即插入所有字段值,注意对应顺序,用到insert into命令


      4. insert into tb1 (name) values ('lisi')

          插入部分字段数据


      5. insert into tb1 values (1,'zhangshan','student'),(2,'wangwu','student')...

          同时插入多行数据


      6. insert into tb1 (id) select id from tb2

          将tb2中的id值复制给tb1的id字段,两条命令合并,id类型需相同


      【增操作-延伸】

           1. 将原表数据添加到新表

               insert into <新表> (列名) select <原表列名> from <原表名>

           例:insert into contacts ('姓名','地址','电子邮件')

                 select name,address,email

                 from Students


           2. 将原表数据创建为一个新表

               select <新表列名> into <新表名> from <源表名>

               例:select name,address,email into contacts from students


          3. 使用union连续插入多行

              insert <表名> (列名) select <列值> union select <列值>

              例:insert Students (姓名,性别,出生日期)

                     select '李四','男','1980/6/15' union

                     select '王五','男','1981/9/20'

              说明:union表示下一行的意思

  

【操作2-删】

      1. drop database db1


      2. drop table tb1

         删除库和表,用到drop命令

         说明:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能删除有外建约束引用的表


     3. delete from tb1 where id=2

         删除id=2的这一行数据,最好用主键来标识行,避免删错其他行,用到delete命令


【操作3-改】

       update更改数据,alter更改表

       1. update tb1 set info='student' where id=5

           更改一条数据,用到where来定位


      2. update tb1 set info='student' where id between 4 and 10

          用范围匹配between and,更改多条数据


      3. alter table tb1 rename tb10

         更改表名,用到rename命令

 

      4. alter table tb1 modify name char(60) not null default ' '

          更改字段类型,比如name的char长度,其他属性也跟着改,如Default,用到modify命令


      5. alter table tb1 change info information char(40) null

         更改字段名称,用到change命令,其他属性也跟着修改


     6. alter table tb1 drop name

         删除某个字段,用drop命令


     7. alter table tb1 add time date first

         添加一个字段,用到add命令,date表示类型,first表示放在第一行呈现,没有second选项,不加则默认最后一行


     8. alter table tb1 add nian year after time

        after命令表示插入在某行的后面


【操作4-查】

     1. show databases

     2. show tables

     3. show engines\G

     4. desc tb1

     5. show create table tb1      查看创建表结构语句

     6. select 字段名/* from tb1

     7. select host,user from mysql.user   查看数据库用户



 wKiom1ia5cmz7NI5AAAe8Y8r9WI602.png

     Field:字段属性

     Null:是否允许数值为空

     Key:主键(约束),具有唯一性数值的字段名,能快速定位到某一行,如id

     Default:当没有填入值时,默认填一个NULL

     Extra:额外参数


    6. show global variables like '%log%'

        查看跟日志相关的变量

  wKiom1ia5f_QMEIvAACkmuswBG8550.png


  wKioL1ia5gDxvqIGAAAo12k8qJU473.png


   说明:

      a. bin开头:二进制日志信息,主从配置mysql,从服务器的日志也会产生在主的错误日志里

      b. general开头:一般查询日志信息

      c. innodb开头:事务日志信息

      d. relay开头:中继日志信息


 【查询操作-延伸】

          A.【精确(条件)查询】

               select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[asc或desc]]

               1. 查询所有数据行和列

                   例:select * from students


              2. 查询部分行列

                  例:select name,address from students where score=90


              3. 查询中使用as更改列名

                  例:select name as name1 from sdudents where gender='男'

                  注:将列名name 改为name1


              4. 查询空行

                  例:select name from students where email is null

                  注:is null和is not null判断是否为空行


              5. 查询中使用常量

                  例:select name, '深圳' as address from Student

                  注:查询name列,并增加新的列address,所有的值都设为深圳


              6. 查询返回限制行数(关键字:top percent)

                  例1:select top 6 name from students

                  说明:top 6 表示name列的前6行


                 例2:select top 60 percent name from students

                 说明:表示name的60%


              7. 查询排序(order by , asc , desc

                  例:select name

                  from students

                  where score>=60

                  order by desc

                  说明:desc表示降序,默认asc为升序


              B.【模糊(条件)查询】

              1. 使用like查询

                  例:select * from students where name like '赵%'

                  说明:like运算符只用于字符串,仅与char和varchar数据类型联合使用


              2. 使用between进行范围查询

                  例:select * from students where age between 18 and 20

                  说明:查询显示表a中nianling在18到20之间的记录


              3. 使用in在列举值内查询

                  例:select name from students where address in ('北京','上海','唐山')

                  说明:查询表a中address值为北京或者上海或者唐山的记录,显示name字段


             C.【分组查询】

             1. 使用group by分组查询

                 例:select gender,count(gender) from students group by gender;

                 说明:只显示男女性别,并调用函数,计算并显示对应人数


             2. 使用having条件表达式查询

                 例:select gender,count(gender) from students group by gender having count(gender) >= 3

                 说明:显示性别人数大于3的性别和人数


            D.【多表连接查询-内连接】

             1. where子句中指定联接条件

                 例:select tb1.name,tb2.score

                       from tb1,tb2

                       where tb1.name=tb2.name

                说明:查询表1和表2中name字段相等的记录,并显示表1中的name字段和表2中的score字段;当两个表中具有相同意义的字段值相等时,就查询出该条记录


            2. from子句中使用join…on

                例:select tb1.name,tb2.score

                      from tb1 inner join tb2

                     on (tb1.name=tb2.name)

                说明:查询表1和表2中name字段相等的记录,并显示表1中的name字段和表2中的score字段


           E.【多表连接查询-左外连接查询】

             select 属性名列表 from 表名1 left join 表名2 on 表名1.属性名1=表名2.属性名2

               例:select s.name,c.courseID,c.score

                      from students as s

                      left outer join score as c

                      on s.scode=c.strdentID

                说明:在strdents表和score表中查询满足on条件的行,条件为score表的strdentID与students表中的sconde相同;进行左连接查询时,可以查出students中所有记录,而score表中,只能查询出匹配的记录


          F.【多表连接查询-右外连接查询】

          select 属性名列表 from 表名1 right join 表名2 on 表名1.属性名1=表名2.属性名2

             例:select s.name,c.courseID,c.score

                    from students as s

                    right outer join score as c

                   on s.scode=c.studentID

            说明:在students表和score表中查询满足on条件的行,条件为students表中的sconde与score表的strdentID相同;进行右连接查询时,可以查出score中所有记录,而表students中,只能查询出匹配的记录


【操作5-权限】

          1. grant all on db1.* to 'user1'@'localhost' identified by '123456'

              授权use1r以本地身份登录,并拥有db1库的所有权限


         2. show grants for 'user1'@'localhost'

             查看user1在本地登录,拥有哪些权限


         3. revoke select on *.* to 'user1'@'localhost'

            移除user1本地登录后的查询权限


七、MySQL数据库客户端图形界面管理工具

         1. MyDB Studio

         2. phpMyAdmin

         3. sqlyog

         4. Navicat for MySQL

         5. 慢日志查询工具 mysqlsla

  










本文转自 huangzp168 51CTO博客,原文链接:http://blog.51cto.com/huangzp/1895785,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 SQL 关系型数据库
2:数据库的基本操作-MySQL
2:数据库的基本操作-MySQL
41 0
|
7月前
|
SQL 存储 关系型数据库
MySQL的基本操作及实用示例(面试真题老实用了)
在MySQL中,行转列是指将数据表的行转换为列,以实现数据在视图中的重组和重塑。通常,行转列用于将多行数据合并为一行,并将多个列值作为新的列。行转列可以使用多种方法实现,包括使用聚合函数、条件筛选和透视(PIVOT)表等。以下是一些常见的行转列方法:1.使用聚合函数可以使用聚合函数如等对数据进行聚合,并使用CASE语句根据条件选择和返回不同的列值。以将不同的行值转换为列值。2.使用条件筛选可以使用条件判断语句,如IF语句或CASE语句。
|
7月前
|
SQL 关系型数据库 MySQL
MySQL数据库---库基本操作 以及 表结构的操作(DDL)
MySQL数据库---库基本操作 以及 表结构的操作(DDL)
86 3
|
2月前
|
SQL 关系型数据库 MySQL
mysql数据库日常 ---mysql数据库基本操作
mysql数据库日常 ---mysql数据库基本操作
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库——DML基本操作
MySQL数据库——DML基本操作
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库——DDL基本操作
MySQL数据库——DDL基本操作
|
3月前
|
存储 SQL 关系型数据库
『 MySQL数据库 』数据库基础之表的基本操作
『 MySQL数据库 』数据库基础之表的基本操作
|
3月前
|
关系型数据库 MySQL 数据库
『 MySQL数据库 』数据库基础之库的基本操作
『 MySQL数据库 』数据库基础之库的基本操作
|
4月前
|
SQL 关系型数据库 MySQL
3:表的基本操作-MySQL
3:表的基本操作-MySQL
35 0
|
4月前
|
关系型数据库 MySQL 数据库
mysql必会技能-基本操作
mysql必会技能-基本操作
34 0