mysql基础

来源:互联网 发布:通过intent传递数据 编辑:程序博客网 时间:2024/05/16 14:23
大数据预备课程之mysql基础
一、数据库

1、概念
       a.主要分为两大类:关系型数据库和非关系型数据库
       b.所谓的关系型数据库就是指基于二维表的关系模型,即行和列所建立的数据库。常用的关系型数据库有Orcale、       MySQL、PostgreSQL。
       c.非关系型数据库就是指列式数据库。常用的非关系型数据库有HBase、Redis内存数据库、MongoDB文档数据         库。
       d.此外还有图形数据库如Titan,时序数据库如influxdb。

二、mysql常用命令

2、启动相关
       service mysqld start         启动
       service mysqld stop         关闭
       service mysqld restart      重启
   
       mysql -uroot -p123456 -h127.0.0.1;                      ok
       mysql -uroot -p123456;                                         ok       
       mysql -u  root -p123456 -h  127.0.0.1;                  ok
       mysql -u  root -p  123456 -h  127.0.0.1;                ok

3、创建表之前的命令
     show databases;             进入mysql数据库后使用该命令查看当前存在的子数据库
     use  rzdata;                     使用rzdata子数据库进行操作(创建表之前最好使用该命令指定使用的子数据库
     create database salary;   创建一个名为salary的子数据库
     show tables;                    展示当前子数据库下存在的所有表
     
4、数据类型
      整型                  int                      19
      浮点型              float/double        8.1
      字符型              char                    a
      字符串型           varchar              abc
      时间类型           timestamp         2017-11-12 00:00:00

5、创建一张表
     create table stuinfo(id int,
                                    money double,
                                    grade char(1),
                                    city varchar(128),
                                    time timestamp
                                    )CHARSET=utf8; 
         
           如果在create和table之间加上temporary,则创建的是临时表
      注意:1.char和varchar后括号内所跟数字代表该类型的数值的最大位数
               2.  CHARSET=utf8  表示将该表的默认字符集改为utf8,通常mysql的默认字符集为
               latinl,若不更改mysql的默认字符集,则最好创建每张表时都以这种方式指定表                                                            的默认字符集为utf8.

6、增删改查之增操作
       a、insert into stuinfo(id,money,grade,city,time)values(1,10.2,'a',‘长沙’,'2017-11-12 00:00:00');
       b、     insert into stuinfo values(1,10.2,'a',‘长沙’,'2017-11-12 00:00:00');     
           a等价于b

       c、insert into stuinfo(id,money,grade,city)values(1,10.2,'a',‘长沙’,);
            只插入四个列所对应的数据,则未插入的列系统自动不止,时间补位系统当前时间,其余补NULL 。

7、增删改查之删操作
       drop table stuinfo;                          该操作会删除stuinfo所有表数据和表结构
       delete from stuinfo;                        该操作会删除 stuinfo所有表数据
       delete from stuinfo where id=1;      该操作会删除 stuinfo所有id=1的数据 

8、增删改查之改操作
       update stuinfo set grade='b';                         将stuinfo表所有行grade列的值改为b
       update stuinfo set grade='b' where id =1;      将stuinfo表id=1的行grade列的值改为b

9、增删改查之查操作
       select * from stuinfo;                           查询stuinfo表所有行数据
       select * from stuinfo where id =1;       查询stuinfo表id=1的行的数据
       select  id,money,grade from stuinfo ;   查询stuinfo表id、money、grade列的数据

10、排序order by
       select * from stuinfo order by money;     查询stuinfo表按money默认顺序(一般为升序)排列
       select * from stuinfo order by money asc;     查询stuinfo表按money升序排列 
       select * from stuinfo order by money desc;            查询stuinfo表按mone降序排列
       select * from stuinfo limit 2;     查询stuinfo表只取前两行


11、聚合函数
       a、count()函数     求满足条件的行的数量之和
       b、sum()函数       求满足条件的行的对应列的列值之和
       c、 avg()函数       求满足条件的行的对应列的列值的平均值

       select city,count(*) from stuinfo group by city;   统计stuinfo表相同城市的人数
       select city,sum(money) from stuinfo group by city;     求个stuinfo表各城市学生金钱总额
       select city,avg(money) from stuinfo group by city;     求个stuinfo表各城市学生金钱平均值

       select city,cast(avg(money)as decimal(10,2)) from stuinfo group by dept;     
                                                             求个stuinfo表各城市学生金钱平均值,并保留两位小数

       select city,sum(money) from stuinfo group by city having sum(money)>10;
                                                               求个stuinfo表学生金钱总额大于10的城市
       上面这条数据实现的功能可用子查询来实现:
             select * from (select city,sum(money) from stuinfo group by city) a where a.sum(money)>10;
              第一个括号内成为子表,a为子表的别名

12、别名
       select * from stuinfo b;          查询stuinfo表所有行数据,并给该表取别名为b
       select id as i,city as c from stuinfo;  查询stuinfo表id列和city列的数据,并给该两列取别名为i和c

13、多表查询
       a、A left join B on A.列名=B.列名       A表为主,B表匹配A表,匹配的打印,缺失补NULL,多余去掉 
       b、A right join B on A.列名=B.列名     B表为主,A表匹配B表,匹配的打印,缺失补NULL,多余去掉
       c、A inner join B on A.列名=B.列名    内连接,慎用

        a用的最多,c最少   
       select A.*,B.deptno,B.dname from emp left join B  on A.deptno=B.deptno ;
 
14、修改默认字符集
     vi /etc/my.cnf
        在[client]最后一行添加:default-character-set=utf8
        在[mysqld]最后一行添加:character-set-server=utf8

     查看mysql默认字符集:show variables like '%like%';
   
15、复制表
      create table t1 select * from stuinfo;                      完全复制
      create table t1 select id,money from stuinfo;         部分复制

16、修改表结构
       alter table stuinfo change city City varchar(128);     括号内数字比原来的大
       alter table stuinfo add address varchar(128);           增加address列

17、表重命名
       rename table old_name to new_name;

18、mysql用户管理
       create user jepson identified by '123456';           新增用户jepson,密码123456
       set password for jepson =password('234567');   将jepson用户密码修改为234567

19、权限管理
      show grants for jepson;                           查看jepson用户权限
      grant select on ruoze_db.*  to jepson;       将ruoze子数据库所有权限赋予jepson 用户
      remove select on ruoze_db.*  to jepson;   将ruoze子数据库所有权限赋予jepson 用户

      grant all privileges on  *.*  to root@'%';     
                   将所有子数据库所有权限赋予任何主机上登录的root用户

      在mysql数据库的mysql子数据库中有一张user表,该表保存了所有mysql用户信息
       select user,host,password from user;    查看user表用户密码登录主机等信息
       update user set password=password('123456') where user='root';
                      将root用户密码改为123456
       delete from user where user ='';    删除空用户       
 

原创粉丝点击