赞
踩
Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。
DB: DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)
DBMS: DataBase Management System(数据库管理系统,常见的有:MySQL Oracle DB2 Sybase SqlServer…)
SQL: 结构化查询语言,是一门标准通用的语言。标准的sql适合于所有的数据库产品。
SQL属于高级语言。SQL语句在执行的时候,实际上内部也会先进行编译,然后再执行sql。(sql语句的编译由DBMS完成。)
DBMS负责执行sql语句,通过执行sql语句来操作DB当中的数据。
DQL(数据查询语言): 查询语句,凡是select语句都是DQL。
DML(数据操作语言):insert delete update,对表当中的数据进行增删改。
DDL(数据定义语言):create drop alter,对表结构的增删改。
TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是Transaction)
DCL(数据控制语言): grant授权、revoke撤销权限等。
MySQL中的字段数据类型 | Java属性数据类型 |
---|---|
tinyint / smallint / int | Integer |
bigint | Long |
varchar / char / text 系列 | String |
datetime | LocalDateTime |
decimal | BigDecimal |
第一步:打开MySQL官网,进入官网首页,点击DOWNLOADS,点击最下面: MySQL Community(GPL)Downloads
然后,点击: MySQL Installer for Windows
然后,修改下载版本(建议5.7版本),点击Download
然后,点击: No thanks, just start my download ,这里可以跳过注册,直接下载
第二步:安装包下载完成后,找到安装包文件位置,然后双击安装包
然后,点击运行
开始安装
然后,点击Next
然后,点击Execute 执行
然后,点击Next
然后,点击Next
然后,点击Next
设置用户名,密码。然后,点击Next
然后,点击Next
然后,点击Next
修改补正:下图圈画的路径地址不是MySQL安装地址,是MySQL安装程序可以通过更新位于以下位置的文件和文件夹的权限来保护服务器的数据目录,用处不大了解即可
然后,点击Execute 执行
然后,点击Finish
然后,点击Next
然后,点击Finish
第三步:验证是否安装成功,点击Windows,开始搜索输入Mysql,并选择第一个打开
然后出现黑窗口,输入MySQL设置的密码
点击回车,出现以下内容证明安装成功!
第四步:配置环境变量
1.找到MySQL安装路径(注意是bin文件夹),将其复制
2.右键点击此电脑→属性→高级系统设置→环境变量
3.点击“环境变量”后,在“系统变量”中选择“path”,然后点击"编辑"
4.点击“新建”后,将复制的Mysql路径粘贴上去,然后点击“确定”,“确定”,在“确定”。
这样,环境变量就配置好了,我们来测试一下:
window+R键弹出运行框,输入cmd命令点击回车,进入dos命令窗口,输入“mysql -uroot -p"点击回车,再输入密码,点击回车,出现下面界面则配置成功。
1、双击安装包,点击运行,然后点击remove。勾选要卸载的MySQL Server 5.7.43。一路Next就完了!
2、手动删除Program Files中的MySQL目录。
3、手动删除ProgramData目录(这个目录有可能是隐藏的,需要打开隐藏文件)中的MySQL。
1.1.登录mysql数据库管理系统,window+R键弹出运行框,输入cmd命令点击回车,进入dos命令窗口:mysql -u用户名 -p密码
1.2.查看有哪些数据库命令: show databases; (这个不是SQL语句,属于MySQL的命令。)
1.3.创建属于我们自己的数据库命令: create database blog_csdn; (这个不是SQL语句,属于MySQL的命令。),并从新查看有哪些数据库: show databases;
1.4.使用blog_csdn数据命令: use blog_csdn; (这个不是SQL语句,属于MySQL的命令。)
1.5.查看当前使用的数据库中有哪些表命令: show tables; (这个不是SQL语句,属于MySQL的命令。)
1.6.初始化数据命令: source +SQL脚本文件路径
运行结束后,查询数据表个数: show tabales; 查询得知,一共3张数据表
1.7.删除数据库命令:drop database blog_csdn;
1.8.查看当前使用的数据库命令:select database();
1.9.查看mysql的版本号: select version();
1.10.结束一条SQL语句命令: \c
1.11.退出MySQL命令: exit
1.12.查看其他数据库中的数据表: show tables from sys;
博客所用到的三张数据表: dept 部门表,emp 员工表,salgrade 工资等级表
语法:
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
字段名3 数据类型,
....
);
2.1.1.1.关于MySQL当中字段的常见数据类型:
数据类型 | 概述 |
---|---|
int | 整数型(java中的int) |
bigint | 长整型(java中的long) |
float | 浮点型(java中的float double) |
char | 定长字符串(String) |
varchar | 可变长字符串(StringBuffer/StringBuilder) |
date | 日期类型 (对应Java中的java.sql.Date类型) |
BLOB | 二进制大对象(存储图片、视频等流媒体信息) Binary Large OBject(对应java中的Object) |
CLOB | 字符大对象(存储较大文本,比如,可以存储4G的字符串。) Character Large OBject(对应java中的Object) |
2.1.1.2.char和varchar怎么选择:
在实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如:性别、生日等都是采用char。
当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar。
注意: 表名在数据库当中一般建议以:t_或者tbl_开始。
2.1.1.3.创建学生表:
学生信息包括:学号:bigint、姓名:varchar、性别:char、班级编号:int、生日:char
create table t_student(
no bigint,
name varchar(255),
sex char(1),
classno varchar(255),
birth char(10)
);
2.1.2.1.语法格式:
语法:
insert into 表名(字段名1,字段名2,字段名3,....) values(值1,值2,值3,....)
重点要求:字段的数量和值的数量相同,并且数据类型要对应相同。
2.1.2.2.向blog_csdn数据库中的t_student数据表中新增数据, no: 1 , name: ‘zhangsan’ , sex: ‘1’ , classno: ‘gaosan1ban’ , birth: ‘1950-10-12’: insert into t_student(no,name,sex,classno,birth) values(1,‘zhangsan’,‘1’,‘gaosan1ban’, ‘1950-10-12’);
也可以不按照数据表字段顺序插入数据: insert into t_student(name,sex,classno,birth,no) values(‘lisi’,‘1’,‘gaosan1ban’, ‘1950-10-12’,2);
创建数据表,并在字段sex后指定默认值:
create table t_student(
no bigint,
name varchar(255),
sex char(1) default 1,
classno varchar(255),
birth char(10)
);
需要注意:当一条insert语句执行成功之后,表格当中必然会多一行记录。即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行。insert语句插入数据了,只能使用update进行更新。
2.1.2.3.一次插入多行数据: insert into t_student (no,name,sex,classno,birth) values (3,‘rose’,‘1’,‘gaosi2ban’,‘1952-12-14’),(4,‘laotie’,‘1’,‘gaosi2ban’,‘1955-12-14’);
语法:
create table 表名 as select语句;
将查询结果当作数据表创建出来.
语法:
insert into 表名 select语句;
将查询结果插入到数据表中
2.2.1.1.查看数据表的结构及字段信息MySQL命令:desc dept; (数据表名)
2.2.1.2.查看数据表中的数据: select * from dept;
2.2.1.3.查看创建数据表的SQL语句: show create table emp;
2.2.1.4.查询部分字段数据和全部字段数据
语法格式: select 字段名1,字段名2,字段名3,… from 表名;
注:
1、任何一条sql语句以“;”结尾。
2、sql语句不区分大小写。
查询员工的年薪(字段可以参与数学运算),并且给查询结果的列重命名: select ename,sal * 12 as yearsal from emp; as关键字用于起别名,可以省略用空格代替
起的别名是中文,我们需要给中文单引号括起来,‘年薪’: select ename,sal * 12 ‘年薪’ from emp;
语法格式: select
字段,字段…
from
表名
where
条件;
执行顺序:先from,然后where,最后select
2.2.2.1.查询工资等于5000的员工姓名: select ename from emp where sal = 5000;
2.2.2.2.查询SMITH的工资: select sal from emp where ename = ‘SMITH’;
2.2.2.3.找出工资在1100和3000之间的员工,包括1100和3000: select ename,sal from emp where sal>=1100 and sal<=3000;
使用between and 关键字: select ename,sal from emp where sal between 1100 and 3000; between and在使用的时候必须左小右大。
between and除了可以使用在数字方面之外,还可以使用在字符串方面:
select ename from emp where ename between ‘A’ and ‘C’; 包括A,B开头的姓名,但是不包括C开头的。左闭右开。
2.2.2.4.找出哪些人津贴为NULL?
在数据库当中NULL不是一个值,代表什么也没有,为空。空不是一个值,不能用等号衡量。必须使用 is null或者is not null: select ename,sal,comm from emp where comm is null;
找出哪些人津贴不为NULL: select ename,sal,comm from emp where comm is not null;
找出哪些人没有津贴: select ename,sal,comm from emp where comm is null or comm=0;
2.2.2.5.and(两者都是)和or(或者)还有in(或者)
找出工作岗位是MANAGER和SALESMAN的员工: select ename,job from emp where job=‘MANAGER’ or job=‘SALESMAN’;
找出工作岗位是MANAGER并且还是SALESMAN的员工: select ename,job from emp where job=‘MANAGER’ and job=‘SALESMAN’;
and和or联合起来用:找出薪资大于1000的并且部门编号是20或30部门的员工: select ename,sal,deptno from emp where sal >1000 and deptno = 20 or deptno = 30;
但是,查询出来的数据根本不对(如上图),这块小伙伴们注意啦,因为and优先级比or高,所以这段SQL语句:select ename,sal,deptno from emp where sal > 3000 and deptno = 20 将会自动组队,而这段SQL语句:or deptno = 30 却将部门=30的所有员工全部查出来,所以,部门=30的员工里有一名员工的薪资小于1000。当运算符的优先级不确定的时候加小括号。
所以正确SQL语句如下: select ename,sal,deptno from emp where sal > 1000 and (deptno = 20 or deptno = 30);
**in等同于or:找出工作岗位是MANAGER和SALESMAN的员工: select ename,job from emp where job = ‘MANAGER’ or job = ‘SALESMAN’;
同样也可以这样写: select ename,job from emp where job in(‘MANAGER’,‘SALESMAN’); 执行出来的结果是一样的 **
not in: 不在这几个值当中:查询出工作岗位是MANAGER和SALESMAN的员工: select ename,job from emp where job not in(‘MANAGER’,‘SALESMAN’);
2.2.2.6.模糊查询(like),在模糊查询当中,必须掌握两个特殊的符号,一个是%: %代表任意多个字符,一个是_: _代表任意1个字符。
找出名字当中含有O的: select ename from emp where ename like ‘%O%’;
找出名字中第二个字母是A的: select ename from emp where ename like ‘_A%’;
找出名字中最后一个字母是T的: select ename from emp where ename like ‘%T’;
转译字符: 由于_为特殊字符,所以在数据表中查询带 ‘_’ 的数据时,通常用使用转义字符,_的转义字符为: \ _
语法格式: select
字段
from
表名
order by
通过什么字段排序;(默认是升序)
2.2.3.1.按照工资升序,找出员工名和薪资
2.2.3.2.按照工资降序排列,当工资相同的时候再按照名字的升序排列: select ename,sal from emp order by sal desc,ename asc;
找出工作岗位是SALESMAN的员工,并且要求按照薪资的降序排列: select ename,job,sal from emp where job = ‘SALESMAN’ order by sal desc;
注意:
分组函数一共5个。
分组函数还有另一个名字:多行处理函数。多行处理函数的特点:输入多行,最终输出的结果是1行。
2.2.4.1.分组函数自动忽略null: select sum(comm) from emp; 这条 SQL 语句执行的结果是null还是员工的津贴和?
答案是: 员工的津贴和.因为分组函数自动忽略null,所以null不参与到运算当中,所以最后得到的是员工的津贴和.(如上图示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。