多表查看,图形

                                                                  第四节  多表查询

一、多表查询

1.1复制表

作用?备份表和快速建表

命令格式?create table.sql查询命令;

例子?

>create table db3.user2 select*from db3.usertab;

>create table db3.user3 select username,uid,shell from db3.usertab limit 5;

>create database db4;

>create table db4.t1 select*from db3.usertab where 1=2;

>create table db4.t2 select id,username,uid,homedir

from db3.usertab where 1=2;

1.2 where嵌套查询

>select username,uid from db3.usertab where uid<(select avg(uid)

from db3.usertab;

>mysql>select username,uid from db3.usertab where uid>

(select avg(uid)from

db3.usertab);

>select username from db3.usertab

where username in

(select user from mysql.user where host="localhost");

1.3多表查询

mysql>create table db4.t3

->select username,uid,shell,homedir from db3.usertab limit 3;

mysql>create table db4.t4

->select username,uid,gid from db3.usertab limit 5;

  3*5=15

1.4 select*from t3,t4;迪卡尔集

mysql>select t3.username,t4.username from t3,t4

     ->where

     ->t3.username=t4.username;

mysql>select t3.*,t4.username from t3,t4 where t3.username

        =t4.username;

>select*from t3,t4  where   t3.uid=t4.uid;

>select t3.*,t4.gid from t3,t4  where   t3.uid=t4.uid;

>select t3.username,t4.username from t3,t4  where  t3.uid=t4.uid;

>select t3.username,t4.username from t3,t4  where  t3.uid=t4.uid

and t3.username is not null

and t4.username is not null; 

1.4连接查询

mysql>create table db4.t5

>select username,uid,gid,shell from db3.usertab

  where uid>=100 and uid<=500;

mysql>create table db4.t6

>select username,uid,gid,shell from db3.usertab

  where uid>=100 and uid<=500 limit 3;

>select * from t6 right join t5 on  t6.uid=t5.uid;

>select * from t6 left join t5 on  t6.uid=t5.uid;

>select t5.username,t6.username from t6 right join t5 on  t6.uid=t5.uid;

>select t5.username,t6.username from t6 left join t5  on  t6.uid=t5.uid;

2.2在数据库服务器上安装图形管理工具phpmyadmin

准备软件的运行环境lamp/lnmp

]#rpm-q httpd php php-mysql

]#yum-y install httpd php php-mysql

]#systemctl status httpd

]#systemctl restart httpd

]#systemctl enable httpd测试运行环境

]#vim /var/www/html/test.php

<?php

$x=mysql_connect("localhost","root","123456");

if($x){echo"ok";}else{echo"no";};

?>

]#yum -y install elinks

]#elinks  --dump http://localhost/test.php

ok


安装图形数据库

2.3安装软件phpMyAdmin-2.11.11-all-languages.tar.gz

]#tar -zxf phpMyAdmin-2.11.11-all-languages.tar.gz-C/var/www/html/

]#cd /var/www/html/

]#mv phpMyAdmin-2.11.11-all-languages  phpmyadmin

2.4 修改软件的配置文件定义管理的数据库服务器

]#cd phpmyadmin

]#cp config.sample.inc.php config.inc.php

]#vim config.inc.php

17$cfg['blowfish_secret']='plj123';

31$cfg['Servers'][$i]['host']='localhost';

在客户端访问软件管理数据库服务器

打开浏览器输入url地址访问软件

http://192.168.4.51/phpmyadmin

用户名root

密码123456

一、用户授权与权限撤销

3.0 管理员密码管理(root密码)

恢复数据库管理员本机登录密码

]#systemctl stop mysqld

]#vim /etc/my.cnf

[mysqld]

skip-grant-tables

#validate_password_policy=0

#validate_password_length=6

:wq

]#systemctl start mysqld

]#mysql

mysql>select host,user,authentication_string from mysql.user;

mysql>update mysql.user

set authentication_string=password("123456")

where

host="localhost"and user="root";

mysql>flush privileges;

mysql>quit

]#vim/etc/my.cnf

[mysqld]

#skip-grant-tables

validate_password_policy=0

validate_password_length=6

:wq

]#systemctl restart mysqld

]#mysql  -uroot  -p123456

mysql>

操作系统管理员修改数据库管理员root本机登录的密码

[root@mysql51~]#mysqladmin -hlocalhost -uroot -p password"654321"

Enter password:当前登录密码

3.1 什么是用户授权:在数据库服务器上添加连接用户,添加时可以设置用户的访问权限和连接的密码。默认只允许数据库管理员root用户在本机登录。默认只有数据库管理员root用户在本机登录才有

授权权限。

3.2 用户授权命令的语法格式

mysql>grant权限列表on数库名to用户名@"客户端地址"

identified by"密码"[with grant option];

例子1:允许客户端254主机可以使用root连接,连接密码是123456,连接后的访问权限是多所有库

所有表有完全访问权限,且有授权权限。

192.168.4.51mysql>

grant all on*.* to root@"192.168.4.254"  //db3.*db3库有所有权限

->identified by"123456"

->with grant option;

3.3 在客户端使用授权用户连接数据库服务器

]#ping -c 2 192.168.4.51

]#which mysql

]#yum -y install mariadb

]#mysql-h数据库服务器ip地址-u用户名-p密码

192.168.4.254]#mysql -h192.168.4.51 -uroot -p123456

mysql>

>grant select,update(name) on studb.t8 to yaya3@"%" identified by "123456";

>grant select,insert,update on studb.dogperson to yaya@"localhost" identified by "123456";

>grant all on studb.* to admin@"%" identified by "123456";

3.4 数据库服务器使用授权库存储授权信息

mysql授权库存储授权信息

user存储授权用户的名及访问权限

db存储授权用户对库的访问权限

tables_priv储授权用户对表的访问权限

columns_priv存储授权用户对字段的访问权限

information_schema虚拟库不占用物理存储空间数据存储在物理内存里

存储已有库和表的信息

² 工作中如何授权:

给管理者授权给完全权限且有授权权限

给使用者授权只给selectinsert权限

3.撤销用户权限命令的语法格式

mysql>revoke权限列表on数库名from用户名@"客户端地址";

例子1:撤销254主机使用root用户连接时,授权权限。

mysql>revoke grant option on*.*from'root'@'192.168.4.254';

例子2:通过修改表记录的方式撤销用户的访问权限

mysql>update mysql.user

set Select_priv="N"

where user='root'and host='192.168.4.254';

mysql>flush privileges;

例子3:撤销254主机使用root用户连接时所有权限

mysql>revoke all on *.* from 'root'@'192.168.4.254';


例子4:删除授权用户'root'@'192.168.4.254';

drop user 'root'@'192.168.4.254';

3.5工作中如何授权

管理者给完全权限且有授权权限

使用者只给对存储数据的库有select

在主机50上运行mysql数据库服务

装包(软件包来源封包类型开源商业跨平台)

修改配置文件

启动服务systemctl start mysqld

查看服务信息netstat -utnlp | grep :3306

使用初始密码访问服务(命令行图形访问web页面程序访问)

#grep password /var/log/mysqld.log

#mysql -hlocalhost -uroot -p'3E(saw/YTfYr'

二、重置本机登录密码

mysql>set global validate_password_policy=0;

mysql>set global validate_password_length=6;

mysql>alter user root@"localhost" identified by "123456";

mysql>quit

#mysql -hlocalhost -uroot-p123456

mysql>show databases;

三、配置密码设置永久生效

#vim/etc/my.cnf

[mysqld]

validate_password_policy=0

validate_password_length=6

:wq

#systemctl stop mysqld

#systemctl start mysqld

四、相关概念

库文件夹

表文件

记录行

字段列

gamedb.usertab name password time

yaya 123456 2018-05-23 11:29:58

使用SQL命令操作数据库服务器上的数据

结构化查询语言

SQL命令的类型?

SQL命令语法规则?

********************************************************************

五、客户端把数据存储到数据库服务器上的过程?

Mysql>create database studb;

use studb;

>create table stuinfo(name char(15),address char(30));

>desc stuinfo;

>insert into stuinfo values("zhangshu","beijing");

>insert into stuinfo values("wangwu","beijing"),("lisi","hebei");

>select*from stuinfo;

>select name from stuinfo;

>update stuinfo set address="shanghai";

>select * from stuinfo;

>delete from stuinfo;

>select * from stuinfo;

>show tables;

>drop table stuinfo;

>select database();

>show databases;

>drop database studb;

>show databases;

六,添加中文

create table表名(字段名列表)DEFAULT CHARSET=UTF8;

alter table学生表DEFAULT CHARSET=UTF8;

整数位.小数位总位数

217.99 5

xxx.xx

999.99

0.00

-999.99

pay double(7,2)

999.00

mysql>create table学生表7(

姓名char(10),

地址varchar(30)

)DEFAULT CHARSET=utf8;

insert into学生表7 values("张三丰","武当山");

insert into学生表7 values("bob","abc");

*************************************************************************

1使用时间函数给日期时间类型赋值?

insert into t14 values

("tom",23,date(now()),083000,year(19901220),now());

select now();

select year(20181231);

select month(now());

select date(now());

select day(now());

select time(now());

日期时间类型:

yearYYYY 2018

date日期YYYYMMDD 20180524

time时间HHMMSS 090518

日期时间YYYYMMDDHHMMSS

datetime

timestamp

2使用2位数字给year类型自动赋值?

日期时间类型datetimetimestamp区别?

约束条件的作用:限制如何给字段赋值

Mysql>create table t1

name char(3)约束条件,

);

mysql>create table t23(

name char(15)not null default"",

age tinyint(2)unsigned default 16,

class char(7)default"nsd1802",

sex enum("b","g")

);

>insert into t23(name,sex)values("bob","g");

>select*from t23;

>insert into t23(name,sex)values(null,"g");报错

3)修改表结构命令格式?

alter table dogperson rename qrinfo;

Alter table qrinfo add email varchar(30);

alter table qrinfo add ipone char(11)after class;

alter table qrinfo add qq varchar(11)first;

Alter table qrinfo

add likes set("eat","buy","game")default"eat",

add sex2 enum("boy","girl","no")default"no" after name;

mysql>alter table qrinfo

->drop class,

->drop sex;

mysql>alter table qrinfo

change

sex2 sex enum('boy','girl','no')default"no";

mysql>alter table qrinfo modify qq char(20);

desc qrinfo;

mysql>alter table qrinfo

modify

likes set('eat','buy','game',"book")default"eat,game";

mysql>desc qrinfo;

4mysql键值

普通索引index(使用规则查看创建删除)

主键*

外键(难点)*

唯一索引

全文索引

insert update delete

mysql>create index bbb on qrinfo(sex);

mysql>create index aaa on qrinfo(name);

>desc qrinfo;

>show index from qrinfoG;

>drop index bbb on qrinfo;

>show index from qrinfoG;

>insert into qrinfo(name)values("lucy");

>insert into qrinfo(name)values("lucy");

Mysql>create table t26(

name char(10),

age int(2),

address varchar(30),

email char(50),

index(name),

index(address)

);

>select*from t26 where name="zhangsan";

++++++++++++++++++++++++++++++++++++++


                                                                                                 节课总结

******************************************

内容:

1)快速通过建表:

create table学生表12 select*from学生表1;

create table学生表11 select*from学生表1 where 1=2;

create table学生表13 select地址from学生表1;

create table学生表14 select地址,姓名from学生表1;

create table学生表15 select地址,姓名from学生表1 limit 2;

2)多表查询:(会显示三个轮回)

•多表查询(又称连接查询)

–将2个或2个以上的表按某个条件连接起来,从中选

取需要的数据

–当多个表中存在相同意义的字段(字段名可以不同)

,可以通过该字段连接多个表

mysql>select * from学生表11,学生表2;

mysql>select学生表11.*,学生表2.姓名 from学生表11,学生表2;

mysql>select学生表11.姓名,学生表2.姓名 from学生表11,学生表2;

mysql>select学生表11.姓名,学生表2.姓名 from学生表11,学生表2 where学生表11.uit=学生表2.uit and学生表11.姓名=学生表2.姓名;

3)近道查询:

使用where子查询

–把内层查询结果作为外层查询的查询条件

select avg(uit) from学生表2;

select avg(uit) from学生表2 where uit>(select avg(uit)from学生表2);

select姓名from学生表2 where姓名in(select姓名from学生表11 where uit=256);

4)显示左连接右连接

mysql>select * from学生表11 left join学生表2 on学生表11.uit=学生表2.uit;

mysql>select * from学生表11 right join学生表2 on学生表11.uit=学生表2.uit;


****************************

图形工具  初始化数据库

*****************************

PhpMyAdmin(1)

#yum -y install httpd php php-mysql

#tar -zxf phpMyAdmin-2.11.11-all-languages.tar.gz -C  /var/www/html/

#cd /var/www/html/

#mv phpMyAdmin-2.11.11-all-languages  /phpmyadmin

#chown -R apache:apache phpmyadmin/

#cp phpmyadmin/config.sample.inc.php  phpmyadmin/config.inc.php

#sed -n '17p;31p' /var/www/html/phpmyadmin/config.inc.php

$cfg['blowfish_secret']='plj123';

$cfg['Servers'][$i]['host']='localhost';

mysql>create database bbsdb;

mysql>grant all on bbsdb.*to admin@localhost identified by123456;

]#systemctl start httpd;

]#firefox http://localhost/phpmyadmin

原文地址:https://www.cnblogs.com/qingbai/p/12015068.html