数据库基础查询

数据库:

1,保存数据的容器:

数据,集合--》内存中

文件---》硬件中

实现数据的持久化,使用完整的管理系统

DB:数据库,存储数据的仓库,他保存了一系列有组织的数据。

DBMS:数据库管理系统,数据库是通过DBMS创建和操作的容器

常见的数据库软件:mysql,oracle,db2,sqlsever。

sql:结构化查询语言,专门用来与数据库通信的语言。

SQL的优点:

1,几乎所有的DBMS也都支持SQL,不是特定的

2,简单易学。

3,一种强力的语言,灵活使用语言元素,可以进行非常复杂和高级的数据库操纵。

1,将数据放到表中,表再放在库中

2,一个数据库可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性

3,表具有一些特性,这些特性定义了数据在表中如何存储,类似java中的"类"的设计。

4,表由列组成,我们也称为字段,所有表都是由一个或者多个列组成,每一列类似java中的“属性”

Mysql数据库:属于MysqlAB公司

优点:成本低,开放源代码

DBMS:分为两类:

基于共享文件系统的DBMS(Access)

基于客户机--服务器的DBMS(Mysql,Oracle,SqlServer)

Mysql的启动和停止:

Mysql的常见命令:

在cmd中查看:

show databases; 显示数据库

use  指定库名

查询语言的学习:

mysql基础查询:

(1)select  查询列表 from 表名;

(2)查询列表可以是:表中的字段,常量值,表达式,函数

(3)查询的结果是一个虚拟的表格,临时表

(4)如何查询单个字段: select last_name from emp;

(5)查询表中的多个字段: select last_name,email,salary from emp;

(6)查询表中的所有字段:select * from emp; 字段顺序和表单数据一样。

(7)USE 库名;执行要运行的库

(8)着重号,用来区别关键字和字段名

(9)查询常量值:SELECT 100 ;select " john";

(10)查询表达式: SELECT 100*98;

(11)查询函数(方法):SELECT version();

(12)起别名:SELECT 100*98 AS 结果;  SELECT last_name AS 姓,first_name AS 名 from emp;

(13) 便于理解 连接查询:在查询的时候有重名的时候,需要取别名来进行区分。

(14)方式一使用AS ,方式二使用空格

(15)查询salary 显示结果是 put out   别名尽量不要是关键字,特殊符号,若必要加上双引号。

(16)去重:DISTINCT  关键字

(17)+号的作用:java中,数值型中是运算符,字符串中是连接符,在sql中,仅仅就一个功能:运算符。

        SELECT 100+90;直接进行数值运算。

        SELECT ‘100’+90;其中一方是字符型,试图将字符型转换为数值型进行运算;

        SELECT ‘john’+90; 转换失败,则将字符型数值转换为0;

        SELECT null+100;  只要一方为null,则运算结果就是null;

查询员工名和姓,连接成一个字段,  并显示为姓名:

SELECT last_name+first_name AS 姓名 from emp;(这里运算结果是0)

SELECT CONCAT(last_name,first_name )AS 结果 from emp;

null和任何字符拼接都是null


基础练习:

(1)DESC  表名; 这是显示表的结构

(2)IFNULL 判断是否为空:IFNULL(表名,替换值);

mysql条件查询:

(1)语法: select  查询列表  from 表名  where  筛选条件;

(2)where  是在生成临时表之后的进行过滤的

(3)分类:

         一,按条件表达式筛选,条件运算符:>, < ,= ,! =, <>(不等) >=,<=

        二,按逻辑表达式筛选:逻辑运算符:and  or  not   && || !

                &&和and: 两个条件都是true,才为true;反之为false

                || 和or:只要有一个条件为true,结果就为true;反之为false

                ! 和not:如果连接的条件本身为false,结果为true,反之为false

        三,模糊查询:like,between and [前开后关],in ,is null;

(4)按条件表达式筛选的案例

案例一:查询工资大于1200:

                select * from emp where salary >=1200;

案例二:查询部门编号不等于90的员工名和部门编号:

                select empname,deptno from emp where deptno <>90;(建立使用<>,也可以使用!=)

(5)按逻辑表达式筛选的案例

案例一:查询工资z在1000到2000之间的员工名,工资,奖金

        select  empname,salary,comm from emp where salary >1000 and  salary <2000;

案例二:查询部门编号不是在90-110之间,或者工资高于1200的员工信息(in的用法)

        select * from emp  where not (deptno>=90 and deptno<=110) or salary>1200;

(6)按模糊查询的案例:

案例一:员工名中包含字符a的员工信息;(%代表通配符,like中必须要使用单引号,和通配符使用,%,代表任意多个字符,_  下划线,任意单个字符)

        select * from emp where empname like '%a%';

案例二:查询员工名中第三个字符为e,第五个字符为a 的员工名和工资

        select empname ,salary from emp  where  empname like '___e_a%';

案例三:查询出员工名中第二个字符为_的员工名(转义符:\ )ESCAPE '$' 自定义一下转义符

        select empname from emp where empname like '_\_%';

(7)按between and 进行查询的案例

案例一:查询员工编号在100到200之间的员工信息(不可以倒换数值顺序)

        select * from emp where empno  between 100 and 200;

(8)按 in 关键字 进行模糊查询  ( 使用in 提高了语句简洁度,in 列表的值必须一致或者兼容)

案例一:查询员工的工种编号是  IT,AD,VP中的一个员工名和工种编号  (不可以搭配%通配符)

               select empname,job from emp where job in( IT,AD,VP);

 (9)按 is null 进行查询的案例  (null是一个关键字)    is not null(不为空)不用(= )判断null

    案例一:查询没有奖金的员工名和奖金率

        select empname , commission  from emp  where comm is null;

(10)安全等于  <=>  可以代替  is   可以判断不同类型的值  (可读性较差)

案例一:查询员工工资为1200的员工信息

        select *  from emp where salary <=>  1200;

练习:

(1)查询没有奖金,且工资小于1800的salary ,empname;

        select salary , empname where comm is null  and salary <1800;

(2)查询emp表中 job 不为‘IT’或者 工资为1200的员工信息;

        select * from emp where job <> 'IT' or salary =1200;

(3)面试题:

select * from emp 和select * from emp where job like ‘%%’ and last_name like"%%"

结果一样吗?

不一样,如果判断的字段有null值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值