Linux-数据库2

表记录的操作

1、插入一条记录

语法:insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......);

insert into employee_new (id,name,birthday,salary) values
                (1,‘yuan‘,‘1990-09-09‘,9000);
insert into employee_new values
             (2,‘alex‘,‘1989-08-08‘,3000);
insert into employee_new (name,salary) values
             (‘xialv‘,1000);

2、插入多条记录

语法: insert [into] tab_name (field1,filed2,.......) values (value1,value2,.......),

                        (value1,value2,.......)

                           ...;
insert into employee_new (id,name,birthday,salary) values          (4,‘alvin1‘,‘1993-04-20‘,3000),          (5,‘alvin2‘,‘1995-05-12‘,5000);

3、按值插入

语法:insert [into] tab_name set 字段名=值

insert into employee_new set id=12,name="alvin3";

语法:delete from tab_name [where ....]

如果不跟where语句则删除整张表中的数据

delete只能用来删除一行记录

delete语句只能删除表中的内容,不能删除表本身,想要删除表,用drop

TRUNCATE TABLE也可以删除表中的所有数据,词语句首先摧毁表,再新建表。此种方式删除的数据不能在事务中恢复。

1、删除所有记录

delete from tab_name
truncate table tab_name  #推荐

注:auto_increment没有被重置,清空表记录后使用命令:alter table tab_name auto_increment=1重置表的自动递增

2、删除指定记录

#删除表中名称为’alex’的记录。
delete from employee_new where name=‘alex‘;

语法:update tab_name set field1=value1,field2=value2,......[where 语句]

UPDATE语法可以用新值更新原有表行中的各列。

SET子句指示要修改哪些列和要给予哪些值。

WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

#id为1的记录生日改成1989-10-24
update employee_new set birthday="1989-10-24" WHERE id=1;
#将yuan的薪水在原有基础上增加1000元。
update employee_new set salary=salary+4000 where name=‘yuan‘;

查(重点)

语法:

SELECT *|field1,filed2 ... FROM tab_name

  WHERE 条件

  GROUP BY field

  HAVING 筛选

  ORDER BY field

  LIMIT 限制条数

准备表记录:

#创建表
CREATE TABLE ExamResult(
   id INT PRIMARY KEY  auto_increment,
   name VARCHAR (20),
   JS DOUBLE ,
   Django DOUBLE ,
   OpenStack DOUBLE
);

#插入数据
INSERT INTO ExamResult VALUES  (1,"yuan",98,98,98),
                               (2,"xialv",35,98,67),
                               (3,"alex",59,59,62),
                               (4,"wusir",88,89,82),
                               (5,"alvin",88,98,67),
                               (6,"yuan",86,100,55);

1、简单查询

#select [distinct] *|field1,field2,......   from tab_name
#其中from指定从哪张表筛选,*表示查找所有列,也可以指定一个列
#表明确指定要查找的列,distinct用来剔除重复行。

-- 查询表中所有学生的信息。
select * from ExamResult;
-- 查询表中所有学生的姓名和对应的英语成绩。
select name,JS from ExamResult;
-- 过滤表中重复数据。
select distinct JS ,name from ExamResult;

#select 也可以使用表达式,并且可以使用: 字段 as 别名或者:字段 别名

-- 在所有学生分数上加10分特长分显示。
select name,JS+10,Django+10,OpenStack+10 from ExamResult;
-- 统计每个学生的总分。
select name,JS+Django+OpenStack from ExamResult;
-- 使用别名表示学生总分。
select name as 姓名,JS+Django+OpenStack as 总成绩 from ExamResult;
select name,JS+Django+OpenStack 总成绩 from ExamResult;

2、where子句:条件筛选

-- 查询姓名为XXX的学生成绩
select * from ExamResult where name=‘yuan‘;
-- 查询英语成绩大于90分的同学
select id,name,JS from ExamResult where JS>90;
-- 查询总分大于200分的所有同学
select name,JS+Django+OpenStack as 总成绩 from ExamResult where JS+Django+OpenStack>200 ;

-- where字句中可以使用:
       -- 比较运算符:
              > < >= <= <> !=
              between 80 and 100 值在80到1000之间
              in(80,90,100) 值是80或90或1000
              like ‘yuan%‘
# pattern可以是%或者_,如果是%则表示任意多字符,此例如唐僧,唐国强如果是_则表示一个字符唐_,只有唐僧符合。两个_则表示两个字符:__

       -- 逻辑运算符
              在多个条件直接可以使用逻辑运算符 and or not

3、order by子句:排序

指定排序的列,排序的列即可是表中的列名,也可以是select 语句后指定的别名。

select *|field1,field2... from tab_name order by field [Asc|Desc]
-- Asc 升序、Desc 降序,其中asc为默认值 ORDER BY 子句应位于SELECT语句的结尾。

-- 对JS成绩排序后输出。
select * from ExamResult order by JS;
-- 对总分排序按从高到低的顺序输出
select name ,(ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0)) 总成绩 from ExamResult order by 总成绩 desc;
-- 对姓李的学生成绩排序输出
select name ,(ifnull(JS,0)+ifnull(Django,0)+ifnull(OpenStack,0)) 总成绩 from ExamResult where name like ‘a%‘ order by 总成绩 desc;

注:ifnull当输出的结果有NULL时候,用0补全,也可以是其他数据,如字符串

4、group by子句:分组显示

准备表记录

#创建表
CREATE TABLE shopping (
    id INT PRIMARY KEY AUTO_INCREMENT,
    product_name VARCHAR(20),
    price FLOAT(6, 2),
    born_date DATE,
    class VARCHAR(20)
);

#插入表记录
INSERT INTO shopping (product_name, price, born_date, class)
VALUES (‘苹果‘, 20, 20170612, ‘水果‘),
    (‘香蕉‘, 80, 20170112, ‘水果‘),
    (‘冰箱‘, 1200, 20170112, ‘电器‘),
    (‘被罩‘, 70, 20170612, ‘床上用品‘),
    (‘音响‘, 420, 20170612, ‘电器‘),
    (‘电脑‘, 4200, 20170112, ‘电器‘),
    (‘桃子‘, 50, 20170112, ‘水果‘),
    (‘床单‘, 55, 20170112, ‘床上用品‘),
    (‘草莓‘, 34, 20170612, ‘水果‘);

示例

#注,按分组条件分组后每一组只会显示第一条记录
#group by字句,其后可以接多个列名,也可以跟having子句,对group by 的结果进行筛选。

-- 按位置字段筛选,第五个字段class分组
select * from shopping group by 5;

-- 对购物表按类名分组后显示每一组商品的价格总和(SUM是聚合函数)
select class,SUM(price)from shopping group by class;

-- 对购物表按类名分组后显示每一组商品价格总和超过150的商品
select class,SUM(price)from shopping group by class HAVING SUM(price)>150;

#having 和 where两者都可以对查询结果进行进一步的过滤,差别有:
#<1>where语句只能用在分组之前的筛选,having可以用在分组之后的筛选;
#<2>使用where语句的地方都可以用having进行替换
#<3>having中可以用聚合函数,where中就不行。

-- GROUP_CONCAT() 函数:自己看结果
SELECT id,GROUP_CONCAT(product_name),GROUP_CONCAT(price) from shopping GROUP BY id;

5、聚合函数

COUNT(列名):统计行的个数
 -- 统计一个班级共有多少学生?先查出所有的学生,再用count包上
select count(*) from ExamResult;
-- 统计JS成绩大于70的学生有多少个?
select count(JS) from ExamResult where JS>70;
-- 统计总分大于280的人数有多少?
select count(name) from ExamResult where (ifnull(JS,0)+ifnull(Django,0)+ifnull(OpenStack,0))>280;
#注意:count(*)统计所有行;     count(字段)不统计null值.

SUM(列名):统计满足条件的行的内容和
-- 统计一个班级JS总成绩?先查出所有的JS成绩,再用sum包上select JS as JS总成绩 from ExamResult;
select sum(JS) as JS总成绩 from ExamResult;
-- 统计一个班级各科分别的总成绩
select sum(JS) as JS总成绩,sum(Django) as Django总成绩,sum(OpenStack) as OpenStack from ExamResult;
-- 统计一个班级各科的成绩总和
select sum(ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0)) as 总成绩 from ExamResult;
-- 统计一个班级JS成绩平均分
select sum(JS)/count(*) from ExamResult ;
#注意:sum仅对数值起作用,否则会报错。

AVG(列名):求平均
-- 求一个班级JS平均分?先查出所有的JS分,然后用avg包上。
select avg(ifnull(JS,0)) from ExamResult;
-- 求一个班级总分平均分
select avg((ifnull(JS,0)+ifnull(Django,0)+ifnull(Database,0)))  from ExamResult ;
Max、Min:求最大和最小
-- 求班级最高分和最低分(数值范围在统计中特别有用)
select Max((ifnull(JS,0)+ifnull(Django,0)+ifnull(OpenStack,0))) 最高分 from ExamResult;
select Min((ifnull(JS,0)+ifnull(Django,0)+ifnull(OpenStack,0))) 最低分 from ExamResult;
-- 求购物表中单价最高的商品名称及价格
---SELECT id, MAX(price) FROM order_menu;--id和最高价商品是一个商品吗?
SELECT MAX(price) FROM order_menu;
#注意:null 和所有的数计算都是null,所以需要用ifnull将null转换为0!
#--ifnull(JS,0)
时间: 2024-08-08 01:28:23

Linux-数据库2的相关文章

mysql for linux 数据库的安装过程

mysql for linux 数据库的安装过程 l  安装版本:mysql-advanced-5.6.12-linux-glibc2.5-x86_64.tar.gz ,此版本是绿色版本,只需要将其解压到相关目录即可. PS:此安装方法为不针对特定平台的通用安装方法,使用的二进制文件是后缀为.tar.gz的压缩文件 PS:Mysql下载地址:http://pan.baidu.com/s/1eQJhoLO 1.创建mysql用户/账号 [[email protected] ~]#  groupad

Linux数据库的导入导出

Linux数据库的导入导出 1.导入数据库 mysql -u username -p test < /home/data/test.sql 说明:username是数据库用户名,test为目标数据库 2.1.导出整个数据库 mysqldump -u username -p test > /home/data/test.sql 说明:username是数据库用户名,test源数据库 2.2.导出数据库中某张表 mysqldump -u username -p test documents >

关于Windows 数据库服务器更换为Linux 数据库服务器的前提条件

该前提条件就是: 请找应用软件开发商和运维人员确认: 第一:该Window数据库服务器 上是否安装有取数(或者说抽取数据)的应用软件.如果有,需要询问取数(或者说抽取数据)的应用软件在linux有无相应版本. 第二:该Window数据库服务器的硬件接口(USB,并口等等)是否接了加密狗之类的.如果有,需要询问应用软件开发商  加密狗在linux有无驱动程序.  此加密狗一般是应用软件的加密狗,用于防止应用软件的非授权使用.一般的应用软件都有技术上的授权机制(加密狗,序列号等等),防止你非法使用,

项目部署操作linux数据库mysql出现表找不到

第一次发帖子    : 关于 部署网站的问题  其中值得注意的是:     网站用的是linux服务商mysql 而不是其他的例如 阿里云的数据库, 项目在其他的地方跑都可以,查询也可以,就是移到删除 插入 修改的时候就会报找不到表的错误,刚开始排除错误的时候一直当然的认为表存在 没错误,就走了好多弯路. 咱们想,如果真的是表存在了 .而报错表不存在是为什么 ?   最后google了一下,好多人遇到相同的问题并且给出了原因  linux中mysql 默认的情况下表明是区分大小写的,而我的sql

linux数据库常用指令

linux数据库环境搭建好之后,我们就可以创建数据库了,如果不是 很了解linux数据库环境搭建的话,可以到看看我上一篇文章linux数据库环境搭建 首先我们来创建一个数据库:使用指令sqlite3 mysql 指令1:创建表格 create table [表名] [数据类型(约束条件)]; create table mysql(id integer primary key autoincrement,name char not NULL,number char not NUll); 我们使用命

linux数据库中使用MD5加密

MD5加密算法源码下载:https://pan.baidu.com/s/1nwyN0xV 下载完成了之后解压,得到两个文件 环境搭建: 1.把md5.h文件拷贝到/usr/include/目录下 sudo cp md5.h /usr/include 2.编译生成.o文件 gcc -fPIC -o md5.o -c md5.c -lpthread -ldl 3.编译生成.so文件 gcc -shared -fPIC -o libmd5.so md5.o -lpthread -ldl 4.把生成的.

Linux数据库的创建 导入导出 以及一些基本指令

一些和数据库有关的基本指令 大神可以直接跳过,可能有的时候经常不用,但是用的时候却发现不会.. 下面来简单说下 常用的这些和数据库有关的语句 首先linux 下查看mysql相关目录var/lib/mysql --------mysql数据库data文件的存放路径 确定了运行路径,执行导入.导出mysql数据库命令一.导出数据库用mysqldump命令(注意:先cd到mysql的运行路径下,再执行一下命令):1.导出数据和表结构:mysqldump -u用户名 -p密码 数据库名 > 数据库名.

讲解Linux数据库安装

学习了linux这门课之后,就开始实践过程了,这样比较记得牢固,学以致用. 有了基本的命令,就可以试着安装数据库了. 1.企业环境 需要安装VMWare ESXi虚拟机,然后再在里面新建虚拟机. 镜像vmware-viclient-all-5.1.0-1064113-5.1.exe 可以通过客户端VMware vSphere Client 6.0远程连接ESXi虚拟机,然后进行安装操作系统. 2.连接主机后进行创建新的虚拟机 在ESXi虚拟机安装完操作系统后,Linux不能粘贴解决办法 Name

kali linux 数据库分析工具简述

bbqsql SQL盲注可能很难被利用. 当可用的工具工作时,它们运行良好,但是当它们不工作时,您必须编写自定义的东西. 这是耗时且乏味的. BBQSQL可以帮助你解决这些问题. BBQSQL是一个用Python编写的SQL盲注框架. 在攻击棘手的SQL注入漏洞时非常有用. BBQSQL也是一个半自动工具,允许对那些难以触发SQL注入结果进行相当多的自定义. 该工具可与数据库无关,并且功能多样. 它还具有直观的UI,可以更轻松地设置攻击. Python geven的实现使BBQSQL运行非常快.

LINUX数据库的备份,以及远程授权登陆

mysql dump -u root -p juhui > /data/juhui.sql   //备份数据库 grant all privileges on *.* to xf111@localhost identified by 'xf11111';  //授权用户登陆 update user set host='%' where user='xf111'; flush privileges;  //加入注册 exit; //退出