随笔 - 26  文章 - 0  评论 - 0  阅读 - 1213 

1.登录mysql数据库命令:

mysql -uroot -p你的密码

 

2.SQL,DB,DBMS分别代表什么,以及他们之间的关系?

DB: Database(数据库,数据库实际上在硬盘上以文件的形式存在)

DBMS:Database Management System (数据库管理系统,常见的有:Mysql Oracle DB2 sybase Sqlserver..)

SQL:结构化查询语言,是一门标准通用的语言。标准SQL适合于所有的数据库产品。

DBMS负责执行SQL语句,通过执行SQL语句来操作DB当中的数据

DBMS→执行 → SQL→ 操作 → DB

 

3.表

Q:什么是表?

A:表是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。

 

一个表包括行和列:

    行:被称为数据/记录(data)

    列:被称为字段(column)

 

学号(int)          姓名(varchar)           年龄(int)

-------------------------------------------------

111                        小熊                          22

112                        小兔                          23

113                        小狗                          18

 

Q:每一个字段应该包括哪些属性?

A:字段名、数据类型、相关的约束。 

 

3.对SQL语句的分类

DQL(数据查询语言):查询语句,凡是select语句都是DQL

DML(数据操作语言):insert delete update,对表中的数据进行增删改

DDL(数据定义语言):create drop alter 对表进行增删改

TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是transactional)

DCL(数据控制语言):grant授权、rovoke撤销权限等。

 

4.导入数据:

第一步:登录mysql数据库管理系统

  dos命令窗口:

    mysql -uroot -p密码

第二步:查看有哪些数据库

    show database;(Mysql命令,非SQL语句)

 

第三步:创建自己的数据库

    create database xiaoxiongbingqilin;(Mysql命令,非SQL语句)

 

第四步:使用xiaoxiongbingqilin数据

    ues xiaoxiongbingqilin;(Mysql命令,非SQL语句)

 

第五步:查看当前使用的数据库中有哪些表

    show tables;(Mysql命令,非SQL语句)

 

4.SQL脚本

当一个文件的扩展名是.sql,并且该文件中编写了大量的sql语句,我们称这样的文件为sql脚本

SQL脚本中的数据量太大的时候无法打开,请使用source命令完成初始化。

 

5.常用命令

 

查看表结构

desc xxx;

 

查看表中的数据

select * from xxx;

 

查看当前使用的是哪个数据库

select database();

 

查看mysql的版本号

select version();

 

 

\c 命令,结束一条语句。

 

6.查看创建表的语句:

  show create table emp;

 

7.简单的查询语句(SQL)

 

  语法格式:

    select 字段名1,字段名2,字段名3,... from 表名;

 

  提示:

      1.任何一条sql语句以“;”结尾

      2.sql语句不区分大小写

 

    查询员工的年薪?

      select ename ,sal* 12 from emp;

 

    给查询结果的列重命名?

      select ename,sal *12 as yearsal from emp;

    

    别名中有中文?

      select ename,sal *12 as 年薪 from emp;

      select ename,sal *12 as '年薪’ from emp;

 

注意:标准sql语句中要求字符串使用单引号括起来。虽然mysql支持双引号,但是尽量别用。

 

条件查询:

  语法格式:

    select 

      字段,字段...

    from

      表名

    where

      条件;

 

    执行顺序:先from,然后where,最后select

 

    查询工资等于5000的员工姓名?

      select ename from emp where sal =5000;

 

    查询SMITH的工资?

      select sal from emp where ename ='SMITH'

 

    找出工资高于3000的员工?

      select ename ,sal from emp where sal>3000;

 

    找出工资不等于3000的员工?

      select ename ,sal from emp where sal <> 3000;

 

    找出工资在1100到3300的员工,包括1100和3300?

      select ename,sal from emp where sal >=1000 and sal<= 3000;

      select ename,sal from emp where sal between 1100 and 3300;   //between ...and ...是闭区间[1100 ~3300]

      select ename,sal from emp where sal between 3300 and 1100;   //查询不到任何数据

 

      between and在使用的时候必须左小右大。

      

       select ename from emp where ename between ‘A“ and 'D’; //左闭右开

      

      假设查询哪些人工资为NULL

        在数据库中NULL不是一个值,代表什么也没有,为空。

        空不是一个值,不能用等号来衡量。

        必须使用is null或者is not null.

        select ename,sal from emp where sal is null;

      

      假设查询哪些人没有工资

        select ename,sal from emp where sal is null or sal =0;

 

      找出工作岗位是MANAGE和SALEMAN的员工?

        select ename,job from emp where job ='MANAGE' or job ='SALEMAN';

 

      and和or联合起来使用:找出薪资大于1000的并且部门编号是20或30部门的员工;

        select ename,sal,deptno from emp where sal > 1000 and deptno = 20 or deptno = 30 ;//错误

        select ename,sal,deptno from emp where sal > 1000 and (deptno = 20 or deptno = 30) ;//正确

 

      in 等同于or:找出工作岗位是MANAGE和SALEMAN的员工?

        select ename,job from emp where job='SALEMAN' or job = 'MANAGE';

        select ename,job from emp where job in(‘SALEMAN','MANAGE’);

 

        select ename,job from emp where job in(800,5000);//in后面不是区间,而是具体的值

 

        模糊查询like

          找出名字当中含有O的(在模糊查询中必须掌握两个特殊的符号,一个是%,一个是_)

          %代表任意多个字符,_代表任意一个字符。

          select ename from emp where ename like '%O';

 

          找出名字中第二个字母是A的

          select ename from emp where ename like '_A%';

 

          找出名字中有下划线的

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

 

          找出名字中最后一个字母是T的?

            select ename from emp where ename like '%T';

 

8.排序(升序,降序)

 

按照工资升序,找出员工名和薪资?

      select 

        ename,sal

      from 

        emp

      order by 

        sal;

 

注意:默认是升序,怎么指定升序或者降序呢?asc表示升序,desc表示降序。  

    select ename,sal from emp order by sal; //升序

    select ename,sal from emp order by sal asc;//升序

    select ename,sal from emp order by sal desc;//降序

 

    按照工资的降序排列,当工资相同的时候再按照名字的升序排列。

      select ename,sal from emp order by sal desc , ename asc;

    注意:越靠前的字段越能起到主导作用。只有当前面的字段无法完成排序的时候,才会启用后面的字段。

 

  找出工作岗位是SALEMAN的员工,并且要求按照薪资的降序排列。

    select

      ename,job sal

    from

      emp

    where

      job='SALEMAN'

    order by

      sal desc;

 

9.分组函数

    count 计数

    sum   求和

               avg   平均值

    max  最大值

    min   最小值  

 

记住:所有的分组函数都是对”某一组" 数据进行操作的。

 

找出工资总和?

  select sum(sal) from emp;

找出最高工资?

  select max(sal) from emp; 

找出最低工资?

  select min(sal) from emp;

找出平均工资?

  select avg(sal) from emp;

找出总人数?

  select count(*) from emp;

  select count(ename) from emp;

 

分组函数一共5个。

分组函数还有另一个名字:多行处理函数

多行处理函数的特点:输入多行,最终输出的结果是1行。

分组函数自动忽略NULL。

 

10.单行处理函数

   什么是单行处理函数?

    输入一行,输出一行。

  计算每个员工的年薪?

    select ename,(sal + comm)*12 as yearsal from emp;

    重点:所有数据库都是这样规定的,只要NULL参与的运算结果一定是NULL。

    使用ifnull函数:

    select ename,(sal + ifnull(comm,0))*12 as yearsal from emp;

 

  ifnull()空处理函数?

    ifnull(可能为NULL的数据,被当做什么处理):属于单行处理函数

    select ename,ifnull(sal + comm)*12 as yearsal from emp;      

             

 

      

 

 

 

 

  

 

  

 

posted on   小熊冰淇淋  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示