应届生零基础学习MySQL

本人本科通信专业,除了有一些C/C++的语法基础以外,从未系统学习过计算机专业的课程。虽有满腹EE知识,却无半点CS知识,因此对于即将来临的各种面试笔试感到焦虑。不过种一棵树最好的时间是十年前,其次就是现在。只要肯学,一切也都来得及。今日起将在CSDN上更新我的计算机知识学习过程,会同时复习C++、学习MySQL、做剑指offer的题目。如果总结的知识点有错误,欢迎指正。也欢迎各种小白或者大佬前来讨论,共同进步。


一、基础常识

  • 数据库(Database),简称DB,是一种按照一定格式存储数据的文件的组合。

  • 数据库管理系统(DBMS),是用于管理数据库中的数据的。DBMS 可以对DB 中的数据进行增删改查。常见的DBMS有:MySQL、Oracle、SQLserver、DB2、sybase等等。

  • SQL是一种结构化查询语言,程序员可以编写SQL语句,然后DBMS将执行SQL语句,最终完成对数据库的数据管理。

  • 数据库最基本的单元是表:table

  • 表中的行(row)被称为数据、列(column)被称为字段

二、SQL语句分类:

  • DQL:数据查询语言(带select的都是)(最常用)

select xxx

  • DML:数据操作语言(对表中数据增删改的都是DML)

insert增 delete删 update改

  • DDL:数据定义语言(对表的结构作更改,而非DML中的数据)

create新建 alter修改 drop删除

  • TCL:是事务控制语言

commit事务提交 rollback事务回滚

  • DCL:数据控制语言

grant授权 revoke撤销权限

三、MySQL常用命令总结

/*以下命令不分大小写,且不见分号不执行*/

在mysql.exe所在目录下,mysql -rootu -p1234 //登陆Mysql(显示密码1234)

mysql -rootu -p//登陆Mysql(不显示密码1234)

show databases; //显示mysql里数据有文件

use xxxx;//使用mysql中某个数据库

create database xxxxx;//创建数据库

exit //退出MySQL

show tables;//用在use xxx之后,用于看这个数据库有哪些表

source后面加英文路径的sql文件,不要有空格,也无分号//导入sql文件

select*from 表名;//看表中的数据,*表示所有

desc 表名;//只看表的结构,desc为describe的简写

select version();//查看MySQL版本

select database();//查看当前使用的数据库

四、简单查询语句

1.查询一个字段

select 字段名 from 表名; //查询一个字段(列)

如下图中使用select LOC from dept;可从dept表里查询到LOC字段的信息

2.查询两个字段或者多个字段

使用逗号隔开即可

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

如下图中使用select DNAME,LOC from dept;可从dept表里查询到DNAME和LOC字段的信息

3.查询所有字段

第一种方式:可以把所有字段都加上,即select a,b,c,d,e,f... from tablename;

第二种方式:可以用*代表所有字段,即select * from dept;,但这种方式缺点是效率低,*在程序中会先转换成字段,这也会占用内存,因此实际开发中不建议使用,可在DOS命令窗口里使用。

4.给查询的列起别名

用as关键字起别名。

如下图所示,select 字段名 as 新字段名 from 表名;

/*select不会进行修改操作,因此只是显示的查询结果列名变了,但原表名不变*/

/*例子中后面的Dname as deptname是一个整体,查询deptno与改成deptname的dname这两个字段,不要误会。若deptno要改别名,那也加一个as+别名即可,即select A as B,C as D from tablename; */

as也可以省略,写成select deptno,dname deptname from dept;//as变为空格,但不可变成逗号

若改的别名有逗号或者空格或是中文,那就用单引号括起来即可。MySQL中也可以用双引号括起来,但是Oracle中不允许双引号。而单引号可以用在一切SQL语句中。

5.对列进行数学运算

由下图可知,字段可以使用数学表达式。

五、条件查询

  • 条件查询即不是将表中所有数据都查出来。是查询出来符合条件的。

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

  • 条件包括逻辑运算符(and、or、not)、比较运算符(=、!=、>、<)、between...and...、is (not) null、模糊查询(like)、in(后面有举例)等。注意,SQL语句中,不等号!=也可以写成<>,因为又大于又小于,肯定不等。

  • 举例1: select empno,ename from emp where sal=3000;//查询薪资为3000的员工的姓名和编号

  • 举例2: select empno,ename from emp where sal<=2000;//查询薪资小于等于2000的员工的姓名和编号

  • 举例3:select empno,sal from emp where ename='smith';//名字叫smith的员工的编号和薪资

  • 举例4:select empno,ename from emp where sal between 2450 and 3000;

/*查询薪资在2450到3000的员工的编号和名字*/

/*注意,between...and...必须遵循左小右大,且这个语句是闭区间,包括两端值*/

/*本例也可使用select empno,ename from emp where sal>=2450 and <= 3000;*/

  • 举例5:select empno,ename,sal,comm from emp where comm is null;

/*查询补贴为NULL的员工的编号、姓名、薪资*/

/*查询补贴不为NULL的员工的编号、姓名、薪资则可用 is not null */

/*SQL中NULL不可以用等号进行衡量,不可以用=NULL,需要使用is NULL */

  • 举例6(不运行了,主要为了阐述in的用法):

select empno from emp where job='MANAGER' or job='SALESMAN';

select empno from emp where job in ('MANAGER','SALESMAN');

上面两条是等价的,in相当于很多个 or,当然也有not in,表示不在这几个值当中的数据。

/*注意:A in(800,5000)不是区间,都找出来。而是A=800 or A=5000;

区间可以用between...and...*/

  • 条件查询中有一个很重要的查询方式叫做模糊查询,使用like配合下划线_或者百分号%

下划线表示任意一个字符,而百分号表示任意多个字符。

比如:

  1. 查询出表emp里面找出名字(ename)里有O的人的名字

select ename from emp where ename like '%O%'; //%表示任意多个字符

  1. 查询出表emp里面找出名字(ename)里末尾为T的人的名字

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

  1. 查询出表emp里面找出名字(ename)里开头为K的人的名字

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

  1. 查询出表emp里面找出名字(ename)里第二个字母为A的人的名字

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

  1. 查询出表emp里面找出名字(ename)里第三个字母为R的人的名字

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

  1. 查询出表emp里面找出名字(ename)里名字有下划线的的人的名字

此时如果直接用'%_%'则全查询出来了,因此要用到转义符\

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

这一点在多种语言里都是通用的,为了防止特殊语义的符号被使用后误解。

六、排序

  • 默认为升序:如果要查询表emp中所有员工薪资(sal)并排序,则使用

select ename,sal from emp order by sal;//默认升序,如下图

  • 指定降序:select ename,sal from emp order by sal desc;//desc即descend简写,效果如下图

  • 指定升序:select ename,sal from emp order by sal asc;//asc为ascend简写,效果如下图

  • 多个字段排序

比如查询员工薪资和名字,薪资升序,若薪资一样,按照名字升序(即首字母,直接写电脑可以理解)

则可以用select ename,sal from emp order by sal asc,ename asc;

//SQL语句中排序order后面逗号前面是主导,一样才看逗号后面那个

效果如下:

  • 如果有综合查询,那么先from,再where,再order,排序总是在最后的

比如select ename,sal from emp where sal between 1250 and 3000 order by sal desc;

//该语句找出emp中工资在1250到3000之间的员工信息,要求按照薪资降序排列

七、函数

    • 数据处理函数

  • 数据处理函数又叫单行处理函数,它的特点是一个输入对应一个输出,故为单行处理函数。相应的还有多行处理函数它的特点是多个输入,对应一个输出,比如求和函数sum()。

  • 常见的单行处理函数:

lower转换小写: select lower(ename) as ename from emp;//要看ename为表头的小写ename字段

upper转换大写:select upper(ename) as ename from emp;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值