找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
linux的MySQL数据库安装
rpm -qa|grep  mysql  查询linux中的数据库
yum  remove    服务名称     删除linux中的数据库指定的包
yum  remove  mysql  *    删除linux中所有的数据库包
yum   erase   数据库包     删除linux中的数据库
rpm  -e --nodeps   数据包   删除linux中的数据库
yum  install   mysql   安装数据库客户端
yum  install   mysql-server   安装数据库服务端
安装好后
service  mysqld   stop  关闭数据库服务
service  mysqld   start  开启数据库服务
service  mysqld   restart  重启数据库服务
service  mysqld   status  查看服务器状态
mysqladmin  -u root    password   ‘123456’   设置登录密码
mysql  -u root -p     进入mysql操作界面
进入数据库之前
1)防火墙关闭 service iptables stop
2)数据库服务是否启动: service mysqld start
3)连接ip地址是否正确
4)账号和密码是否正确
5)是否设置权限,并刷新
grant all privileges on *.* to root@"%" identified by "123456"; 授权
flush privileges ; 刷新权限
数据库基础命令
show databases 显示所有的数据库
create database 库名 创建数据库
drop database 库名 删除数据库
use 库名 使用库
show tables 显示库里面所有的表
create table 表名(字段1 字符类型1(字符长度1),字段1 字符类型1(字符长度1)) 建表语句
(如果表中有汉字字符则需要在末尾跟 default charset=utf8【默认编码格式】)
insert into 表名 values (插入值1,插入值字2) 插入数据
insert into 表名 (字段名1,字段名2) values (插入值1,插入值2) 插入数据
desc 表名 查看表结构
drop table 表名 删除表
alter table 表名 add 字段名 字符类型(字符长度) 添加字段
alter table 表名 change 原字段名 新字段名 字符类型(字符长度) 修改字段
alter table 表名 drop 字段名 删除字段
alter table 原表名 rename 新表名 重命名表明
Alter  table 表名 modify 字段名1 字段类型(字符长度) after 字段名2 将一个字段名1移动到字段名2的后面去
alter table 表名 add 字段名 字符类型(字符长度) first 在行首添加一个新字段
alter table 表名 add 新字段名 字符类型(字符长度) after 原字段名 将字段添加到指定字段后面
建立表约束:(约束的作用是保证表中的记录完整和有效)
1、非空约束(not null)保证字段的值不能为空
2、唯一约束(unique) 保证字段具有唯一性(不能重复),可以为空,一个可有多个唯一约束
3、主键约束(primary key)保证字段值具有唯一性(不能重复),一个表中只有一个主键
4、外键约束(forign key) 两个表之间的主键建立关系
5、默认(default) 当字段不填数据,默认数据
6、自增长(auto_increment)当添加一条数据,自动+1
MySQL查询
1)查询一个表中所有的数据
格式:select   *  FROM   表名 ;   
select   *  FROM   hz13 ;
注意:*  号表示所有,每个语句后面加上分号
(2)查询表中具体的字段
格式:select   字段名1,字段名2,字段名3  FROM   表名 ;   
select   name  FROM   hz13 ;
select   name,age  FROM   hz13 ;
(3)查询表中具体的字段取别名(别名是为了在查看数据是方便)
格式:select   字段1 as "姓名",字段2 "年龄" FROM   表,名;
select   name as "姓名",age "年龄" FROM   hz13 ;
备注:as 可以省略不写,as表示取别名
4)查询指定内容 ,用where+条件
格式:select  *   from   表名   where  字段名=字段 ;
select  * from   emp   where  dept2=101 ;
where条件使用注意:
比较运算符
1)where  +条件(=(等于), !=(不等于) ,<>(不等于) ,<(小于),>(大于),>=(大于等于),<=(小于等于))
select  * from   emp   where  dept2=101 ;select  * from   emp   where  dept2 !=101 select  * from   emp   where  dept2 <>101 ;select  * from   emp   where  dept2 >102 ;select  * from   emp   where  dept2 <102 ;select  * from   emp   where  dept2 <=102 ;select  * from   emp   where  dept2 >=102 ;
2)and (与)
and  同时满足所有条件,比如:条件1和条件2都要满足
案例:select  * from   emp   where  dept2 >=102  and age=57 ;
3)or(或)
or 当有多个条件时满足其中任意1个条件都显示,,条件1和条件同时存在,只要满足条件1就显示,只要满足条件2就显示。
select  * from   emp   where  dept2 =102  or age=55 ;
4)between..... and....  在什么范围之间
格式:select  *   from   表名  where  表字段 BETWEEN 值得范围    and    值的范围
select  * from   emp   where  age BETWEEN 24 and  55 ;
5)in  在一组数据中匹配数据
格式:select  * from   表名    where    字段名 in (数组值1,数组值2,数组值3);
select  * from   emp    where  dept2 in (101,102,110);
6)is  null 为空  或is  not  null  非空
6.1  is  not  null  非空
格式:select  * from   表名    where  字段名  is not null ;
select  * from   emp    where  age  is not null ;
6.2  is    null  为空
格式:select  * from   表名    where  字段名  is     null ;
   
多行注释:ctrl+/
取消多行注释:ctrl+shift+/
单行注释:直接#号
排序:  
对表中的数据进行拍讯:order  by        asc 升序(可以省略)    desc   降序
升序:
格式:select  * from   表名   order  by  字段名   asc ;
案例1:select  * from   emp   order  by  age asc ;
案例2:select  * from   emp   order  by  age asc ;(不填asc)
降序:
格式:
select  *  from   表名   order  by  字段名    desc ;
案例:select  * from   emp   order  by  age desc ;
二次排序:
格式:select  * from   表名  order  by   字段1 desc ,字段2   asc ;
select  * from   emp   order  by  dept2 desc , incoming asc ;
模糊匹配查询  like
%:表会匹配0个字符或多个字符
—:表示一个字符
select  * from   emp  where  dept2 like "1%"  #匹配1开头的部门编号数据select  * from   emp  where  dept2 like "%2%" #匹配的部门包含2编号数据select  * from   emp  where  dept2 like "%2" #匹配结尾包含2编号数据select  * from   emp  where  dept2 like "__2" #匹配固定的字符2编号数据
限制查询(limit)  后面接连个值  ,第一个值  表示下标(索引),  第二值是步长
备注:一个表中索引是从0开始
格式:select  *   from   表名   limit  索引,行数 ;
案例1:select  * from   emp   limit  2,3 ;
案例2:select  * from   emp   limit  2 ;    直接查询两行
分组查询 group  by
group  by    一般和having   组合
案例:SELECT  dept2,max(age) from   emp  group  by  dept2 ;
SELECT  dept2,max(age) from   emp  group  by  dept2 ;
SELECT  dept2,max(age) from   emp  group  by  dept2 ;
group by  一般不会单独使用个,通常都是和函数组合使用。
gtoup  by 后查询出来的结果,在需要的条件下可以接having
案例:SELECT  dept2 ,max(age)  as  s from   emp  group  by  dept2 HAVING  s>50 ;
having +条件  和where  +条件  用法一样,但是场景不一样,一般group   by 的后面接having
备注:函数求出以后,需要设置成别名,设置别名的字段,进行语句的操作。
错误案例:(1)SELECT  name,max(age) from   emp
(2)SELECT  name,max(age) from   emp GROUP BY  dept2
sql语句函数:
max  最大值
案例:SELECT  dept2,max(age) from   emp
min  最小值
案例:SELECT min(age) from   emp
avg 平均值
案例:SELECT avg(age) from   emp
count  统计总数
案例:SELECT count(age) from   emp
sum  求和
案例:SELECT sum(age) from   emp
distinct  去重
案例:SELECT  distinct(dept2) from   emp
====================================
改:
update    ......set   改
格式:update   表名  set   修改的字段名=字段新值   where  条件 ;
案例:update   emp  set   name="成全"  where  sid=1789 ;
====================================
删:
delete   删
truncate   快速删除表内数据
drop  删除
删除数据速度 drop  >  truncate  >delete
注意:
1、drop  是删除表和数据
2、truncate 删除无法恢复
3、delete  删除是可以恢复
delete:
1)删除表中所有数据
格式:delete  from  表名:
案例:delete  from  hz13;
2)删除表中指定条件的数据
格式: delete  from  表名  where  条件
案例: delete  from  emp  where dept2=103;
3)快速删除表数据
格式:truncate  表名;
案例:truncate  hz15 ;
====================================
表取别名:
格式: 表名设置别名,
案例:SELECT  s.dept2,s.name from   emp as s ;  (把emp表设置成临时表s)
====================================
备份表结构:
格式:create  table  新表名 like  备份原表名 ;
create  table  hz110 like  emp ;
备份数据:
insert  into    新表 有表结构   select   * from   备份表的原表
案例:INSERT  into   hz110  select  *  from  emp ;
备份部分数据:
格式:INSERT  into  表名(s字段名1,字段名2)  select  sid ,dept2  from  emp ;
INSERT  into   hz110110(sid,dept2)  select  sid ,dept2  from  emp ;
备份表结构和数据:
格式:create  table 表名 as(select  * from   备份原表 )
案例:create  table  hzdcs110 as(select  * from   emp )
====================================
linux备份数据库:
备份用:>
格式:mysqldump -u  root -p 原数据库>数据库脚本.后缀名
案例:mysqldump -u  root -p hz10>/home/hz10bf.sql
还原数据库:
1、先建立一个新的空库
2、在linux中还原<
3、还原:mysql -u root  -p 新建的空库<数据库备份好的数据脚本
MySQL数据库表的连接
1、笛卡尔积查询(了解)
根据两张表相乘得到的结果:比如:左边有4条数据,右边有6条数据,查询出来就是4*6=24条数据,这种查询数据包含大量的错误结果,通常不会使用这种查询。
格式:SELECT   * from  表1,表二;
案例:SELECT   * from  dept,emp ;
2、内连接(普通内连接,隐藏内连接)
查询两个表共有的关联数据。
2.1普通内连接:
格式:select   *  from  表1    inner join 表2 on 表1.关联字段1=表2.关联字段2
案例1:select   *  from  dept  inner join emp on dept.dept1=emp.dept2 ;
案例2:select   name,dept_name  from  dept  inner join emp on dept.dept1=emp.dept2  where sid=1789 ;
2.2隐藏内连接
格式:select   *  from  表1,表2   where   表1.关联字段1=表2.关联字段2
select   *  from  dept,emp where   dept.dept1=emp.dept2 ;
3、左连接
以左表为主(显示完整的左表),游标关联的数据就显示,没有的数据就以null显示
格式:select   *  from  表1  left  join  表2 on       表1.关联字段1=表2.关联字段2 ;
案例:select   *  from  dept  left  join emp on dept.dept1=emp.dept2   ;
4、右连接
右表是以右表数据为主(显示整个右表)左表有关联的数据就显示,没有就以null值显示。
格式:select   *  from  表1  right   join  表2 on       表1.关联字段1=表2.关联字段2 ;
select*  from  dept  right join emp on dept.dept1=emp.dept2   ;
5、左表独有数据
左表中独有的数据显示,(方法,左独有,以右表字段为空查询)
格式:select   *  from  表1  left  join  表2 on       表1.关联字段1=表2.关联字段2   where     右表字段  is  null  
select   *  from  dept  left  join emp on dept.dept1=emp.dept2   where   name is  null;
5、右表独有数据
右表中独有的数据显示,(方法,右独有,以左表字段为空查询)
格式:select   *  from  表1    right     join  表2 on       表1.关联字段1=表2.关联字段2   where     左表字段  is  null  
案例:select   *  from  dept  right  join emp on dept.dept1=emp.dept2   where  dept1  is  null;
6、左表独有数据+右表独有数据:
union  拼接
左独有  union  右独有
select   *  from  dept  left  join emp on dept.dept1=emp.dept2   where   name is  nullunionselect   *  from  dept  right  join emp on dept.dept1=emp.dept2   where  dept1  is  null;
7、全连接
方法一:左独有+右独有+内连接
select   *  from  dept  left  join emp on dept.dept1=emp.dept2   where   name is  nullunionselect   *  from  dept  right  join emp on dept.dept1=emp.dept2   where  dept1  is  nullUNIONselect   *  from  dept    inner  join  emp on dept.dept1=emp.dept2   ;
方法二:左连接+右独有
select   *  from  dept  left  join emp on dept.dept1=emp.dept2  UNIONselect   *  from  dept  right  join emp on dept.dept1=emp.dept2   where  dept1  is  null ;
方法三:右连接+左独有
select   *  from  dept  right join emp on dept.dept1=emp.dept2   UNION
select   *  from  dept  left  join emp on dept.dept1=emp.dept2  where   name is  null ;
总结:
普通内连接:
select  *  from  表1  inner  join    表2  on   表1 的关联字段=表2的关联字段 ;
隐藏内连接:
select  *  from  表1 ,  表2  where    表1 的关联字段=表2的关联字段 ;
左连接:select  *  from  表1  left   join    表2  on   表1 的关联字段=表2的关联字段 ;
右连接:select  *  from  表1  right  join    表2  on   表1 的关联字段=表2的关联字段 ;
左独有数据:
select  *  from  表1  left   join    表2  on   表1 的关联字段=表2的关联字段   where  右表字段为空;
右独有数据:
select  *  from  表1  right   join    表2  on   表1 的关联字段=表2的关联字段   where   左表字段为空;
全外连接:
1、左独有+右独有+内连接
2、左连接+右独有
3、右连接+左独有

分享至 : QQ空间
收藏
您需要登录后才可以回帖 登录 | 立即注册