精华内容
下载资源
问答
  • linux shell脚本 mysql多行命令执行

    千次阅读 2015-07-20 11:48:50
    linux终端执行mysql命令时,首先需要从终端进入到mysql命令行状态,在脚本编写时,要用到EOF(end of file)。 shell脚本中,通常将EOF与 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,...

    在linux终端执行mysql命令时,首先需要从终端进入到mysql命令行状态,在脚本编写时,要用到EOF(end of file)。
    shell脚本中,通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。
    因此数据库连接和sql语句执行的脚本如下:

    #!/bin/sh
    mysql -u root -pcloud <<EOF 2>/dev/null
    use nova;
    alter table instance_types add column t_price double UNSIGNED ZEROFILL NULL DEFAULT NULL;
    exit;
    EOF

    做特别解释:
    1、在脚本中,第一行“#!/bin/sh“。”#!/bin/sh”是对shell的声明。#!后面要注明解释器,行中的解释器的路径必须是全路径。

    2、在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。
    在程序员行话,尤其是Unix行话中,/dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备通常被用于丢弃不需要的输出流,或作为用于输入流的空文件。这些操作通常由重定向完成。

    3、“2>/dev/null”,2>是管道重新定向符号。 1 表示标准输出(一般就是终端屏幕),2是标准错误输出(一般也是屏幕)。

    展开全文
  • linux EOF直接多行输出

    2019-04-18 15:11:24
    linux EOF直接多行输出 EOF 一般会配合cat使用: 例子 cat << EOF usage : "输出内容" example "举例说明" .... .... EOF

    linux EOF直接多行输出

    EOF 一般会配合cat使用:

    cat << EOF
    usage : "输出内容"
    example "举例说明"
    ....
    ....
    EOF
    
    

    通过cat配合重定向能够生成文件并追加操作:

    cat << EOF >test.sh 
    > 123123123
    > 3452354345
    > asdfasdfs
    > EOF
    
    cat << EOF >>test.sh 
    > 7777
    > 8888
    > EOF
    

    可以编写脚本,向一个文件输入多行内容:

    #!/bin/bash
    
    cat > /usr/local/mysql/my.cnf << EOF                                      //或者cat << EOF > /usr/local/mysql/my.cnf
    [client]
    port = 3306
    socket = /usr/local/mysql/var/mysql.sock
    
    [mysqld]
    port = 3306
    socket = /usr/local/mysql/var/mysql.sock
    
    basedir = /usr/local/mysql/
    datadir = /data/mysql/data
    pid-file = /data/mysql/data/mysql.pid
    user = mysql
    bind-address = 0.0.0.0
    server-id = 1
    sync_binlog=1
    log_bin = mysql-bin
    
    [myisamchk]
    key_buffer_size = 8M
    sort_buffer_size = 8M
    read_buffer = 4M
    write_buffer = 4M
    
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
    port = 3306
    EOF
    
    展开全文
  • Linux Mysql命令行基本操作

    千次阅读 2019-10-29 16:09:21
    导入.sql文件命令(例如D:/mysql.sql)7. 用文本方式将数据装入数据库表中(例如D:/mysql.txt)8 .删除数据库9 .数据库授权10. 删除授权:11. 显示当前mysql版本和当前日期12. 查询所有数据表13. 查询表的字段信息...


    启动MySQL

    systemctl start mysqld # 在CentOS 7中
    service mysqld start # 在CentOS 6 中

    这里以CentOS 7 为主。

    在mysqld第一次启动时,会给我们设置一个临时密码,在日志文件:

    grep ‘password’ /var/log/mysqld.log

     
    基本操作

    1. 登录数据库

    格式: mysql -h主机地址 -u用户名 -p用户密码 –P端口 –D数据库 –e “SQL 内容”

    mysql -uroot -p 数据库名称

    2. 修改密码

    修改在本机root用户下的mysql密码

    shell>mysql -u root -p
    mysql>set password for ‘root’@‘localhost’ = password(“新密码”);

    mysql> update user setpassword=password(”123″) where user=’root’;

    3. 添加用户

    格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
    例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。
    首先用以root用户连入MySQL,然后键入以下命令:

    grant select,insert,update,delete on . to test2@localhost identified by"abc";

    如果你不想test2有密码,可以再打一个命令将密码消掉。

    grantselect,insert,update,delete on mydb.* to test2@localhostidentified by “”;

    4. 创建数据库

    create databasename;
    use databasename; // 选择数据库

    5. 备份/恢复数据库

    shell>mysqldump -h host -u root -p dbname >dbname_backup.sql
    shell>mysqladmin -h myhost -u root -p create dbname
    shell>mysqldump -h host -u root -p dbname < dbname_backup.sql

    如果只想卸出建表指令,则命令如下:

    shell>mysqladmin -u root -p -d databasename > a.sql
    mysqldump -uroot -p test mytable>./test.sql

    将备份数据导入到数据库:(导回test数据库)
    备份数据库staffer

    mysqldump -uroot-proot staffer > staffer.sql

    得到的staffer.sql是一个sql脚本,不包括建库的语句,所以你需要手工创建数据库才可以导入
    恢复数据库staffer,需要创建一个空库staffer

    mysql -uroot-proot staffer<staffer.sql

    如果不希望后来手工创建staffer,可以

    mysqldump -uroot-proot --databases staffer> staffer.sql
    mysql -uroot-proot > staffer.sql

    但这样的话系统种就不能存在staffer库,且无法导入其他名字的数据库,当然你可以手工修改staffer.sql文件
    如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:

    shell>mysqladmin -u root -p -t databasename > a.sql

    那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

    mysqldump -T./phptest driver

    其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。
    可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。

    6 . 导入.sql文件命令(例如D:/mysql.sql)

    mysql>use database;
    mysql>source /home/mysql.sql;

    UPDATE以新的值更新现存表中行的列。SET 子句指出要修改哪个列和他们应该给定的值。WHERE子句如果被给出,指定哪个记录行应该被更新。否则,所有的记录行被更新。如果 ORDER BY 子句被指定,记录行将被以指定的次序更新。
    如果你指定关键词LOW_PRIORITY,UPDATE 的执行将被延迟,直到没有其它的客户端正在读取表。
    如果你指定关键词IGNORE,该更新语句将不会异常中止,即使在更新过程中出现重复键错误。导致冲突的记录行将不会被更新。
    如果在一个表达式中从tbl_name 中访问一个列,UPDATE 使用列的当前值。举例来说,下面的语句设置 age 列值为它的当前值加 1 :

    mysql> UPDATE persondata SETage=age+1;

    UPDATE赋值是从左到右计算的。举例来说,下列语句将 age 列设置为它的两倍,然后再加 1 :

    mysql> UPDATE persondata SETage=age*2, age=age+1;

    如果你设置列为其当前的值,MySQL 注意到这点,并不更新它。
    UPDATE返回实际被改变的记录行数目。在 MySQL 3.22 或更新的版本中,C API 函数 mysql_info()
    返回被匹配并更新的记录行数目,以及在 UPDATE 期间发生的警告的数目。
    在 MySQL3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更改。
    如果一个 ORDER BY 子句被使用(从 MySQL4.0.0 开始支持),记录行将以指定的次序被更新。这实际上只有连同 LIMIT一起才有用。
    从 MySQL 4.0.4 开始,你也可以执行一个包含多个表的UPDATE 的操作:

    UPDATE items,month SETitems.price=month.price
    WHERE items.id=month.id;

    注意:多表 UPDATE 不可以使用 ORDER BY 或LIMIT。

    关键字: mysql

    启动:net start mySql;

    进入:mysql -u root -p/mysql -hlocalhost -u root -p databaseName;

    列出数据库:show databases;
    选择数据库:use databaseName;
    列出表格:show tables;
    显示表格列的属性:show columns fromtableName;
    建立数据库:source fileName.txt;
    匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;

    7. 用文本方式将数据装入数据库表中(例如D:/mysql.txt)

    mysql> LOAD DATA LOCAL INFILE/“D:/mysql.txt" INTO TABLE MYTABLE;

    8 .删除数据库

    drop database name 直接删除数据库
    mysqladmin drop database name 删除数据库前,有提示

    9 .数据库授权

    GRANT ALL PRIVILEGES ON bdc.* TObdc@’%’ IDENTIFIEDBY ‘bdc123’ WITH GRANT OPTION;
    flush privileges

    授权访问bdc 的所有表 用户为bdc 任何主机 ,密码为bdc@123
    创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb

    mysql >grant select, insert,update, delete, create,drop on fangchandb.* to custom@it363.com identified by ‘passwd’

    10. 删除授权:

    mysql> revoke all privilegeson . from root@”%”;
    mysql> delete from user whereuser=”root” and host=”%”;
    mysql> flush privileges;

    11. 显示当前mysql版本和当前日期

    select version(),current_date;

    查询时间:select now();
    查询当前用户:select user();
    查询数据库版本:select version();
    查询当前使用的数据库:select database();

    12. 查询所有数据表

    show tables;

    13. 查询表的字段信息

    desc 表名称;

    14. 创建表

    create table s_position
    (
    id int not null auto_increment,
    name varchar(20) not nulldefault '经理', #设定默认值
    description varchar(100),
    primary key PK_positon (id) #设定主键
    );
    
    create table department
    (
    id int not null auto_increment,
    name varchar(20) not nulldefault '系统部', #设定默认值
    description varchar(100),
    primary key PK_department (id) #设定主键
    );
    
    create table depart_pos
    (
    department_id int not null,
    position_id int not null,
    primary key PK_depart_pos(department_id,position_id) #设定复和主键
    );
    
    create table staffer
    (
    id int not null auto_incrementprimary key, #设定主键
    name varchar(20) not nulldefault '无名氏', #设定默认值
    department_id int not null,
    position_id int not null,
    unique (department_id,position_id)#设定唯一值
    );
    
    

    15. 修改结构

    #表position增加列test

    alter tableposition add(test char(10));

    #表position修改列test

    alter tableposition modify test char(20) not null;

    #表position修改列test默认值

    alter tableposition alter test set default ‘system’;

    #表position去掉test默认值

    alter tableposition alter test drop default;

    #表position去掉列test

    alter tableposition drop column test;

    #表depart_pos删除主键

    alter tabledepart_pos drop primary key;

    #表depart_pos增加主键

    alter tabledepart_pos add primary key PK_depart_pos (department_id,position_id);

    16. 操作数据

    #插入表department

    insert into department(name,description)values(‘系统部’,‘系统部’);
    insert into department(name,description)values(‘公关部’,‘公关部’);
    insert into department(name,description)values(‘客服部’,‘客服部’);
    insert into department(name,description)values(‘财务部’,‘财务部’);
    insert into department(name,description)values(‘测试部’,‘测试部’);

    #插入表s_position

    insert into s_position(name,description)values(‘总监’,‘总监’);
    insert into s_position(name,description)values(‘经理’,‘经理’);
    insert into s_position(name,description)values(‘普通员工’,‘普通员工’);

    #插入表depart_pos

    insert intodepart_pos(department_id,position_id)
    select a.id department_id,b.id postion_id
    from department a,s_position b;

    #插入表staffer

    insert intostaffer(name,department_id,position_id) values(‘陈达治’,1,1);
    insert into staffer(name,department_id,position_id)values(‘李文宾’,1,2);
    insert intostaffer(name,department_id,position_id) values(‘马佳’,1,3);
    insert intostaffer(name,department_id,position_id) values(‘亢志强’,5,1);
    insert intostaffer(name,department_id,position_id) values(‘杨玉茹’,4,1);

    17. 查询及删除操作

    #显示系统部的人员和职位

    selecta.name,b.name department_name,c.name position_name
    from staffera,department b,s_position c
    wherea.department_id=b.id and a.position_id=c.id and b.name=‘系统部’;

    #显示系统部的人数

    select count(*) from staffer a,department b
    where a.department_id=b.id and b.name=‘系统部’

    #显示各部门的人数

    select count(*)cou,b.name from staffer a,department b
    where a.department_id=b.id group by b.name;

    #删除客服部

    delete from department where name=‘客服部’;

    #将财务部修改为财务一部

    update department set name=‘财务一部’ where name=‘财务部’;

    18. 删除表

    mysql>drop TABLE MYTABLE;

    19. 清空表

    mysql>delete from MYTABLE;

    20. 添加表字段

    alter tabletable1 add transactor varchar(10) not Null;
    alter tabletable1 add id int unsigned not Null auto_increment primary key

    21. 修改某个表的字段类型及指定为空或非空

    alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];
    alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
    alter table 表名称 modify 字段名称 字段类型 [是否允许非空];

    22. 如果要删除某一字段,可用命令:

    ALTER TABLE mytable DROP 字段名;

    23. 添加唯一键

    ALTER TABLEtest2 ADD UNIQUE ( userid)

    24. 修改主键

    ALTER TABLE test2 DROP PRIMARY KEY ,ADD PRIMARY KEY ( id )
    alter tableversion_template drop primary key ,add primary key version,role,type);

    25. 增加索引

    ALTER TABLEtest2 ADD INDEX ( id )
    alter tabletable1 add index ind_id (id);
    create indexind_id on table1 (id);
    create uniqueindex ind_id on table1 (id);//建立唯一性索引

    26. 删除索引

    drop indexidx_id on table1;
    alter tabletable1 drop index ind_id;

    27. 重命名表:

    alter table t1 rename t2;

    28. 增加一个字段:

    alter table tabelName add column fieldName dateType;

    29. 增加多个字段

    alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;

    多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;
    增加一个管理员帐户:

    grant all on . to user@localhost identified by"password";

    每条语句输入完毕后要在末尾填加分号’;’,或者填加’\g’也可以;

    30. 创建临时表:

    create temporarytable zengchao(name varchar(10));

    31. 创建表是先判断表是否存在

    create table if not exists students(……);

    32. 从已经有的表中复制表的结构

    create tabletable2 select * from table1 where 1<>1;

    33 复制表

    create tabletable2 select * from table1;

    34. 对表重新命名

    alter table table1 rename astable2;

    35. 修改列的类型

    alter table table1 modify id intunsigned;//修改列id的类型为int unsigned
    alter table table1 change id sidint unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned

    36. 联合字符或者多个列(将列id与":“和列name和”="连接)

    select concat(id,’:’,name,’=’)from students;

    37. limit(选出10到20条)<第一个记录集的编号是0>

    select * from students order byid limit 9,10;

    38. MySQL会使用索引的操作符号

    <,<=,>=,>,=,between,in,不带%或者_开头的like

    39. 存储过程

    1)查看存储过程

    select name from mysql.proc where db=’数据库名’;

    或者

    select routine_name frominformation_schema.routines where routine_schema=‘数据库名’;

    或者

    show procedure status where db=‘数据库名’;

    40. MySQL存储过程的修改

    ALTER PROCEDURE

    更改用CREATEPROCEDURE 建立的预先指定的存储过程,其不会影响相关存储过程或存储功能。

    41. MySQL存储过程的删除

    删除一个存储过程比较简单,和删除表一样:

    DROP PROCEDURE

    从MySQL的表格中删除一个或多个存储过程。

    42. 存储过程基本函数

    (1).字符串类

    CHARSET(str) //返回字串字符集
    CONCAT (string2 [,… ]) //连接字串
    INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0
    LCASE (string2 ) //转换成小写
    LEFT (string2 ,length ) //从string2中的左边起取length个字符
    LENGTH (string ) //string长度
    LOAD_FILE (file_name ) //从文件读取内容
    LOCATE (substring , string[,start_position ] ) 同INSTR,但可指定开始位置
    LPAD (string2 ,length ,pad ) //重复用pad加在string开头,直到字串长度为length
    LTRIM (string2 ) //去除前端空格
    REPEAT (string2 ,count ) //重复count次
    REPLACE (str ,search_str ,replace_str) //在str中用replace_str替换search_str
    RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length
    RTRIM (string2 ) //去除后端空格
    STRCMP (string1 ,string2 ) //逐字符比较两字串大小,
    SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符,

    注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1

    (2).数学类

    ABS (number2 ) //绝对值
    BIN (decimal_number ) //十进制转二进制
    CEILING (number2 ) //向上取整
    CONV(number2,from_base,to_base) //进制转换
    FLOOR (number2 ) //向下取整
    FORMAT (number,decimal_places ) //保留小数位数
    HEX (DecimalNumber ) //转十六进制
    注:HEX()中可传入字符串,则返回其ASC-11码,如HEX(‘DEF’)返回4142143
    也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19
    LEAST (number , number2 [,…]) //求最小值
    MOD (numerator ,denominator ) //求余
    POWER (number ,power ) //求指数
    RAND([seed]) //随机数
    ROUND (number [,decimals ]) //四舍五入,decimals为小数位数]

    注:返回类型并非均为整数

    (3).日期时间类

    ADDTIME (date2 ,time_interval )//将time_interval加到date2
    CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区
    CURRENT_DATE ( ) //当前日期
    CURRENT_TIME ( ) //当前时间
    CURRENT_TIMESTAMP ( ) //当前时间戳
    DATE (datetime ) //返回datetime的日期部分
    DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间
    DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime
    DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间
    DATEDIFF (date1 ,date2 ) //两个日期差
    DAY (date ) //返回日期的天
    DAYNAME (date ) //英文星期
    DAYOFWEEK (date ) //星期(1-7) ,1为星期天
    DAYOFYEAR (date ) //一年中的第几天
    EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分
    MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串
    MAKETIME (hour ,minute ,second ) //生成时间串
    MONTHNAME (date ) //英文月份名
    NOW ( ) //当前时间
    SEC_TO_TIME (seconds ) //秒数转成时间
    STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示
    TIMEDIFF (datetime1 ,datetime2 ) //两个时间差
    TIME_TO_SEC (time ) //时间转秒数]
    WEEK (date_time [,start_of_week ]) //第几周
    YEAR (datetime ) //年份
    DAYOFMONTH(datetime) //月的第几天
    HOUR(datetime) //小时
    LAST_DAY(date) //date的月的最后日期
    MICROSECOND(datetime) //微秒
    MONTH(datetime) //月
    MINUTE(datetime) //分返回符号,正负或0
    SQRT(number2) //开平方

     
     
    转自:https://blog.csdn.net/lxh090821/article/details/9410943

     
     
     
     
     
     
     
    关注公众号"小败日记",搬砖过程遇到的问题,大家一起探讨,资源共享

    小败日记公众号

    展开全文
  • LinuxMySQL多表操作

    2019-05-29 19:28:45
    建立如下两个数据库进行多表操作 1.普通双表连接查询 select 表1.列名,表2.列名 from 表1,表2 where 连接条件; ...select 表1别名.... 内连接发生在从两个表中选取记录且第一个表中...

    建立如下两个数据库进行多表操作

     

    1.普通双表连接查询

    select  表1.列名,表2.列名  from  表1,表2  where  连接条件;

    select  表1别名.列名,表2别名.列名  from  表1  as  表1别名,表2  as  表2别名  where  连接条件;

    2.内连接查询

            内连接发生在从两个表中选取记录且第一个表中某一列的值能够能够在第二个表的相同列找到。内连接在连接条件中使用(=)运算符比较被连接的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接中的重复列。内连接中参与连接的表的地位是相等的。

    select  表1别名.列名,表2别名.列名  from  表1  as  表1别名  inner  join  表2  as  表2别名  on  连接条件;(不能使用where)

    3.外连接查询

    外连接查询是将一个表中的行与另一个表中的行相关联,但有时候可能会包含没有关联行的那些行。

    (1):左外连接查询以左表为主体,将左表中的每条数据都会显示出来。

    select  表1别名.列名,表2别名.列名  from  表1  as  表1别名  left  join  表2  as  表2别名  on  连接条件;

     后面三条信息是将左表中的信息显示了出来,因为右表行数不够,只能用NULL来填充。

    (2):右外连接查询以右表为主体,将右表中的每条数据都会显示出来。

    select  表1别名.列名,表2别名.列名  from  表1  as  表1别名  right  join  表2  as  表2别名  on  连接条件;

           可以看出来,在左外查询中共有19条信息,但是在右外查询中只有16条信息。这是因为左表中共有19条信息,右表中共有16条信息,因此,左外查询时会将左表中的数据全部显示出来,右表中数据不够用NULL查询;右外查询时会将右表中的数据全部显示出来,左表中只取前16行数据(因为右表只有16行数据,左表中最后三行省略)。

    4.子查询

    将查询一张表的结果来充当另一个查询的条件,这样嵌套的查询就称为子查询。

           在select语句中,子查询总是由内向外查询的,且只有当内查询的结果为真时才会执行外查询。作为子查询的select语句只能查询单个列。

    (1):带IN关键字的子查询

    select  表1列名  from 表1  连接条件  in  (select  表2列名  from  表2  连接条件);

    (2):带EXISTS关键字的子查询

           EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False,当里面的子查询为真时,外面的查询才会启动。

    select  表1列名  from 表1  连接条件  exists  (select  表2列名  from  表2  连接条件);

           上面的查询语句先进行后面的select语句的查询,先查询supplier语句中是否存在s_id为104,存在,返回True,然后执行外部查询。

    (3):带ANY、SOME关键字的子查询

    select  表1列名  from 表1  连接条件  连接符 ANY/SOME  (select  表2列名  from  表2 );

            ANY和SOME关键字跟在一个比较操作数的后面,表示该值若与子查询返回的任何值比较为True,则返回True。通俗来讲,只要满足子查询中的任意一个条件,就返回True。

            ANY和SOME的查询是一样的。上面的SQL语句的作用是先将supplier表中的s_id取出来,然后和fruit表中的s_id进行比较,只要fruit中的s_id大于suppier表中的s_id,那么就将s_id的值输出。因此输出结果为102-107,因为supplier和fruit表中的s_id的值都是101-107,fruit中的102-107都只是大于supplier中的101,所以会把102-107输出。

    (4):带ALL关键字的子查询

    select  表1列名  from 表1  连接条件  连接符 ALL  (select  表2列名  from  表2 );

            ALL关键字跟在一个比较操作符的后面,表示该值若与子查询返回的最大值比较为True,则返回True。通俗来讲,必须要满足子查询中的每一个条件,才能返回True。

           ALL查询是与子查询的结果中最大的进行比较。上面的SQL语句的作用是先将supplier表中的s_id取出来,然后和fruit表中的s_id进行比较,必须要fruit中的s_id大于suppier表中最大的s_id,那么就将s_id的值输出。因此输出结果为Empty,因为supplier和fruit表中的s_id的值都是101-107,fruit中的没有任何值大于supplier中的107(supplier中最大的值是107),所以会输出Empty。

    5.合并结果查询

            利用UNION关键字,可以将查询的结果合并到一张结果集中,也就是通过UNION关键字将多条select语句连接起来,注意,合并结果集只是增加了表中的记录,并不是将表中的字段增加,仅仅是将记录合并到一起。其显示的字段应该是相同的,不然不能合并。

    UNION:执行的时候会删除重复的记录,所有返回的行数是唯一的。

    UNION  ALL:不删除重复行也不对结果进行排序。

    select 表1列名 from 表1 连接条件 union select 表1列名 from 表1 连接条件;

    select 表1列名 from 表1 条件 union all select 表1列名 from 表1 条件;

    展开全文
  • Linux/Mysql取消命令输入

    千次阅读 2015-03-24 10:13:31
    当键入了错误的命令出现无法退出时,大部分情况是因为mysqllinux认为命令行尚未结束。在这种情况下,有时即使键入 quit 也会无法退出。 针对上面提出的常见错误,解决的方法分别是: 1)补上分号; 2)...
  • 目录1.修改master配置文件2.重启mysql服务,查看是否生效3.master数据库上创建主从同步账户:4.master锁表5.拷贝数据库至从库6.配置从数据库的配置文件7.新建数据库并且合并8.配置主库信息,实现主从...socket=/tmp/mysql.
  • 本篇幅重点讲解搭建护为主从的mysql模式。通过此模式与keepalived配置。可以实现mysql的高可用
  • 小弟想用java调用用多行有前后依赖关系的shell命令: 例如: 先process=Runtime.getRuntime().exec("mysql");进入mysql命令行 在用java给mysq命令行传mysql脚本,执行脚本命令 麻烦大家回答一下,或者给点建议意见
  • 目录1.修改master配置文件2.重启mysql服务,查看是否生效3.master数据库上创建主从同步账户:4.master锁表5.拷贝数据库至从库6.配置从数据库的配置文件7.新建数据库并且合并8.配置主库信息,实现主从...socket=/tmp/mysql.
  • 一、在线安装MySQL数据库 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm sudo yum update sudo yum install mysql-server sudo ...
  • Linux下 C++ 操作 MySQL

    2020-06-11 21:53:08
    一、安装 MySQL的 C/C++ API sudo apt-get install mysql-server libmysql++-dev; // 安装 MySQL的 C/C++ API sudo cp /usr/lib/mysql/* /usr/lib/ // 将头文件复制到 C/C++ 的头文件目录(这样子才可以调用头文件...
  • 文章目录linux下安装mysqlmysql rpm包下载移除已经安装的早期版本linux mysql安装 linux下安装mysql 本文主要介绍rpm安装方式。 mysql rpm包下载 首先下载rpm安装包, mysql下载地址,找到你想要的版本 MySQL...
  • linux 下命令行执行 mysql 语句

    千次阅读 2011-12-28 15:28:39
    /usr/local/bin/mysql -h127.0.0.1 -uroot -pxxxx -N -e "use abc; show tables;"  -e 后面跟上要执行的SQL语句 -N 参数是不显示表头  带-N执行后我们就可以用grep ,awk等命令对数据进行操作啦
  • Linuxmysql操作

    千次阅读 2019-05-07 17:28:21
      本文转自:...  1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:mysqladmin re...
  • 升级mysql数据库后产生的错误: mysql从5.6升级到5.7后出现:插入数据和修改数据时出错。 修改方式在liunx服务器中找到my.cnf文件最后一行加入 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改mysql...
  • linux mysql 操作命令

    2016-08-19 17:25:08
    linux mysql 操作命令1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径)2.linux下重启mysql的命令: mysqladmin restart /ect/init.d/mysql restart (前面为mysql...
  • Linux配置Mysql5.7主从配置

    千次阅读 2019-05-31 16:45:35
    Linux安装mysql5.7.26 --(傻瓜版3分钟搞定) 公众号请点击: https://blog.csdn.net/weixin_38003389   完成安装,请继续……  介绍一下我本次操作的两台服务器,这都是我们公司虚出来的机器,操作前...
  • LinuxMysql常用命令

    千次阅读 2018-10-22 12:02:20
    Mysql常用命令 ...虽然现在有了很多mysql的可视化操作工具,但是对于mysql的常用操作命令,个人觉得还是应该熟记于心的...以下操作都是基于Linux的 首先,进入数据库: mysql...
  • Linux服务器配置MySQL数据库主从同步   1.主机master 服务器配置 MySQL的配置文件 /etc/my.cnf 里面添加一下内容(vie /etc/my.cnf) log-bin=mysql-bin server-id=1 #主机标识 sync_binlog=1 read-only=0...
  • 1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mysqladmin restart /ect/init.d/mysql restart (前面为mysql的安装路径) 3....
  • Linuxmysql的备份和还原命令

    千次阅读 2018-11-22 10:00:19
    LinuxMySQL的备份和还原Linux下的数据备份Linux下的数据还原介绍mysqldump的参数 最近一直在更新一个项目,给现场部署,每次都需要备份一下数据库(以防有问题可以还原回去) Linux下的数据备份 直接写命令吧: ...
  • Linux通过命令行操作Mysql

    千次阅读 2017-12-26 14:08:04
    进入: mysql -u root -p/mysql -h localhost -u root -p databaseName;列出数据库: show databases;创建数据库: create database XXXXX;选择数据库: use databaseName;列出表格: show tables;显示表格列的属性...
  • linux-Mysql学习

    2020-11-21 22:43:37
    Mysql数据库优点及特点 1、性能卓越服务稳定,很少出现异常宕机 2、开放源代码且无版权制约,自主性强、使用成本低。 3、历史悠久、社区及用户非常活跃,遇到问题,可以很快获取到帮助。 4、软件体积小,安装使用...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    Java面试总结(2021优化...https://thinkwon.blog.csdn.net/article/details/101292950 11 Redis面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/103522351 12 MySQL数据库面试题(2020最新版) ...
  • 假设前提:每天晚上10点到早上5点,每10分钟...第二种实现方式是利用linux的定时任务,这个是利用Linux系统自带任务管理工具实现的。一、Mysql中event定时任务的相关命令,1.查看event是否启用:SELECT @@event_sche...
  • --extended-insert:使用包括几个values列表的多行insert语法,这样文件更小,IO也小,导入数据时会非常快 --default-character-set=utf-8:按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存...
  • 使用window连接Linuxmysql数据库的时候,出现了1045错误。当出现这个问题的时候,应该是用户被数据库拒绝访问了,我们应该为你的数据库开辟权限。 本简称并非适合所有情况, 不过可供解决一定的问题, 是否...
  • linux mysql命令

    2019-09-27 04:26:20
    1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:mysqladmin restart/ect/init.d/mysql restart (前面为mysql的安装路径) 3.linux下关闭...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,924
精华内容 5,169
关键字:

linuxmysql多行

linux 订阅
mysql 订阅