zoukankan      html  css  js  c++  java
  • 多表查看,图形

                                                                      第四节  多表查询

    一、多表查询

    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

  • 相关阅读:
    UESTC--1267
    HDU--1394
    rvm 安装后的补充工作:source $HOME/.profile
    FFmpeg 初级使用
    Vue 打包部署上线
    阿里云Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4
    响应式网站设计---Bootstrap
    GitBook简单的使用
    VUE 参数共享问题
    Django之JWT理解及简单应用
  • 原文地址:https://www.cnblogs.com/qingbai/p/12015068.html
Copyright © 2011-2022 走看看