flush privileges; 刷新
create table +表1 like +表2 备份表,创建某个相同的表
%:代表当前用户具备远程访问权限
localhost:本地权限
use MySQL:查看用户信息
grant all privileges on *.* to 'root'@'%'identified by'123456'; 给root用户赋予百分号远程访问
create table grade1 like grade;备份表结构,吧grade表备份一份名臣叫grade1 ,只能备份表的结构不能备份表的数据
insert into grade1 select * from grade;两个表结构是一样的,此命令把grade的所有数据备份到grade1中,
insert into grade1(name,age) select name,age from grade;把grade表中的某几个字段备份到grade1中;
mysqldump -uroot -p dcs63>dcs63.sql; 把dcs63这个数据库备份一份,取名称为dcs63.sql 名称可自定义取
MySQL -uroot -p dcs<dcs63.sql 把dca63数据库表还原到dcs数据库中
insert into user(host,user,password)values('localhost','wang',password('123456'));新创建一个用户
grant create,select,update,delete,drop on *.* to 'wang'@'localhost' identified by'123456'; 给wang这个用户赋予相关的表结构和数据的操作权限
revoke all on*.* from 'wang'@'localhost';取消wang这个用户的所有操作权限
show grants for 'wang'@ localhost';查询当前wang这个用户,得到结果是此用户没有任何操作权限
delete from user where user='wang' and host='localhost';删除'wang'的这个用户
如果连接:Navicat 出现无法连接的情况解决办法
1、service mysqld restart 数据库重启
2、service iptables stop 防火墙关闭一下
3、检查一个你当前的用户有没有%(远程访问的权限)
如果没有就去添加%权限
连接工具需要的信息:1、IP或者域名
2、端口MYSQL 3306 -3309
3、账号
4、密码(如果此账号没有密码,则不需要输入)
1、use mysql 进入到Mysql数据库中
2、可以给user用户表增加用户
此命令意思是:新增加一个用户名称是wang,只具备本地访问权限
localhost,且密码默认是123456
insert into user (host,user,password)values('localhost','wang',password('123456'));
新创建的用户是没有对数据库操作的权限,如果要进入此用户
mysql -uwang -p 回车(没有设置密码就不需要输入密码)
3、创建用户后需要刷新下:flush privileges;
4、grant create,insert,select,update,delete,drop on *.* to 'wang'@'localhost' identified by '123456'
此命令的意思是:当前wang这个用户可以拥有对表数据的增删改查,结构的创建和删除
上班工作后:如果用数据库且你不是骨干,你的领导可能只会给到你
一个唯一的权限那么就是:select * from
5、grant all privileges on *.* to 'dcs'@'%' identified by '123456';
此命令的意思:如果你要链接其它工具,且需要远程访问权限的时候
当前命令就可以使用。
创建一个用户且此用户是拥有远程访问的权限
6、show grants for 'wang'@'localhost';
查看一下当前姓wang的用户拥有的权限 :GRANT SELECT, UPDATE, DELETE, CREATE, DROP ON *.* TO
查询出来后表示wang这个用户拥有这么多操作权限
7、revoke all on *.* from 'wang'@'localhost';//取消所有权限
8、delete from user where user='wang' and host='localhost';
把姓wang的这个用户进行删除掉,删除后此用户不存在
9、update user set password=password('123456') where user='root';
把user表中的root用户的密码,改为123456
1.多表 (重点,有哪些连接方法(面试中:多表查询))
2.主键,外键等约束
3.视图,索引
4.存储过程
sql==测试;select from (一个表查询,二个表查询,三个表查询,,,)
多表连接的要素一定要满足一个要求就是:两张表中必须要有相同的字段属性
1、内连接 inner join on
select * from aa inner join cc on aa.id=cc.s_id;
1001,张三 1002,李四 =aa表
1001,90 =cc表
select * from cc inner join aa on aa.id=cc.s_id;
把aa表和cc表进行关联,两表中id是相同,所以允许连接
注意:内连接连接后显示的规则是:
两两为真,显示真 1001,张三 ,1001,90 (1002不显示)
一真一假,不显示 都不显示
一假一真,不显示
两两为假,不显示
2、左连接left join on
select * from aa left join cc on aa.id=cc.s_id;
select * from cc left join aa on aa.id=cc.s_id;
左连接就是以左表为主表(from 后面是左, join后面是右)
注意:如果主表数据多于右表,那么左表显示正常所有,右表少的值自动补齐Null
如果主表数据小于右表,那么只显示相同的值,右边不相同的值不显示
3、右链接right join on
select * from aa right join cc on aa.id=cc.s_id;
select * from cc right join aa on aa.id=cc.s_id;
右链接就是以右表为主表 (from 后面是左, join后面是右)
注意:如果右表主表的数据是多于子表左表,那么显示的结果是以
右表有准右表全部显示,左表少的值自动补Null
如果右表主表的数据是小于子表左表,那么显示的结果是以
右表和左表相同的字段,不相同的字段不显示
4、基本连接(使用的比较多)
select * from aa,cc where aa.id=cc.s_id;
select * from cc,aa where aa.id=cc.s_id;
from后面是主表,逗号后面是子表
基本链接方法:只显示相同字段,非相同字段不显示(可以参考内连接)
5、union连接
select * from aa union select * from cc;
把两个表进行竖向显示连接起来,两个表必须要有相同的字段数量
求出张三的 成绩
select * from aa; #姓名表
select * from cc; #成绩表
#常规写法
#左连接,右连接一样
select * from aa left join cc on aa.id=cc.s_id where name='zhangsan';
select score from aa left join cc on aa.id=cc.s_id where name='zhangsan';
#基本连接
select * from aa,cc where aa.id=cc.s_id;
select * from aa,cc where aa.id=cc.s_id and name='zhangsan';
select score from aa,cc where aa.id=cc.s_id and name='zhangsan';
|