MySQL基础

大数据预备课程之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 rzdata.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 ='';    删除空用户  

 

 

 

     

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值