找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手

第十一天,数据库的权限和多表

[复制链接]
数据库的备份和还原
create table grade1 like grade :创建一个备份表
insert into emp1 select * from emp:往备份表中插入数据
insert into grade1(sid,name,class) select sid,name,class from grade:往备份表中指定的字段插入原表指定的数据
mysqldump -uroot -p123456 dcs22 > duoceshi.sql:备份数据库
mysql -uroot -p123456 dcs22 < dcs22.sql:还原数据库
用户权限:
mysql -uroot -p123456:进入到数据库
use mysql :进入到mysql这个库
select host,user,password from user :查看当前有哪些用户
localhost/127.0.0.1:代表本地访问权限
host:文件的类型
%:代表的是远程访问的权限,可以通过数据库的客户端来连接操作,比如navicat、dbever
数据库远程访问失败:
1、登陆的用户没有远程访问的权限,select host,user,password from user
2、防火墙没有关,service iptables stop
3、数据库没有启动,service mysqld start
1、insert into user(host,user,password)values('localhost','dcs22',password('123456')):在user表中插入一个新的用户,
赋予本地访问的权限
2、flush privileges:刷新权限
3、show grants for 'dcs22'@'localhost':查看本地访问的用户,拥有哪些操作权限
4、grant all privileges on . to 'dcs22'@'%'identified by '123456':赋予所有的操作权限
.:代表数据库中的所有数据
5、flush privileges:刷新权限
show grants for 'dcs22'@'%':查看远程访问用户的操作权限
6、revoke all on . from 'dcs22'@'%':移除远程访问用户的所有操作权限
7、delete from user where user = 'dcs22' and host = '%',删除用户
8、update user set password = password('123456') where user = 'dcs22':修改密码
navicat是一个远程访问数据库的工具,不仅能够访问mysql,还能链接Oracle,sql server,db2
连接名:可以自定义名称,用来记忆当前数据库所在的服务器名称
主机名或ip地址:数据库所在服务器的地址,本地可以使用localhost来代替IP地址
端口:数据库的连接端口号,mysql的默认端口3306,可以自己修改端口号
用户名:访问数据库的用户名
密码:数据库密码
单行注释:#,--
多行注释:ctrl +/  ,/* .....  */
【多表】
创建aa和cc表
create table aa(id int(1) PRIMARY key,name char(20));
create table cc(s_id int(1) PRIMARY key,score char(20));
insert into aa(id,name)values(1001,'zhangsan'),(1002,'lisi');
insert into cc(s_id,score)values(1001,'99');
1、基本连接(取的是两张表中的交集部分),在两张表的字段和数据量相同的时候使用基本连接
关键字:where
SELECT * FROM aa,cc WHERE aa.id = cc.s_id;
2、内连接(取的是两张表中的交集部分),在两张表的字段和数据量相同的时候使用基本连接
关键字:inner join...on
SELECT * FROM aa INNER JOIN cc ON aa.id = cc.s_id;
3、左连接(取的是两张表的并集部分,以左表为基础,左表的数据全部显示,右表的数据符合条件的显示,没有对应数据的以null值填充)
关键字:left join...on
SELECT * from aa LEFT JOIN cc ON aa.id = cc.s_id;
4、右连接(取的是两张表的并集部分,以右表为基础,右表的数据全部显示,左表的数据符合条件的显示,没有对应数据的以null值填充)
关键字:right join...on
SELECT * from cc RIGHT JOIN aa ON aa.id = cc.s_id;
面试题:数据库中的内连接和左连接的区别是什么?
5、硬链接(前提条件,多个关系表的字段数目必须相同,将第二张表的数据,直接追加到了第一张表的数据后面)
SELECT * FROM aa UNION SELECT * from cc;
练习题:
求出张三的成绩
1、左连接嵌套
SELECT * from aa LEFT JOIN cc ON aa.id = cc.s_id;
SELECT name,score from (SELECT * from aa LEFT JOIN cc ON aa.id = cc.s_id)AS t WHERE name = 'zhangsan';
2、基本连接嵌套
SELECT * from aa,cc WHERE aa.id = cc.s_id;
SELECT name,score from (SELECT * from aa,cc WHERE aa.id = cc.s_id)AS t WHERE name = "zhangsan";
3、基本连接加条件
SELECT name,score from aa,cc WHERE aa.id = cc.s_id and name = "zhangsan";
SELECT name,score from aa LEFT JOIN cc ON aa.id = cc.s_id WHERE name = "zhangsan";
求出谁没有参加考试(利用左右连接以null值填充的特性来做)
1、左连接嵌套
SELECT * from aa LEFT JOIN cc ON aa.id = cc.s_id;
SELECT name,score from (SELECT * from aa LEFT JOIN cc ON aa.id = cc.s_id)AS t WHERE score is null;
2、右连接嵌套
SELECT * from cc RIGHT JOIN aa ON aa.id = cc.s_id;
SELECT name,score from (SELECT * from cc RIGHT JOIN aa ON aa.id = cc.s_id)AS t WHERE score is null;

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册