欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql知识点

程序员文章站 2024-01-29 13:52:22
...

一、数据库的描述
数据库:是指长期保存在计算机中,按照一定规则组织起来的,可以被各种用户或应用共享的数据集合,简而言之,数据库
就是存储数据的容器
数据库管理系统:是指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库的,对数据库进行统一管理和控制的
,以保证数据库的安全性和完整性,用户通过数据库管理系统访问数据库中的数据。简单来说说,数据库
管理系统就是用来操作数据库的。

二、SQL的概述
1、SQL:就是以一种数据结构化查询语言
2、数据库记录跟java对象的关系
数据库中的一行记录相当于java中的一个对象,
数据库中的一张表相当于java中的一个类

三、SQL的分类
1、DDL:数据定义语言,关键字为:create、alter、drop,其作用是对数据库、表、列的创建、删除、修改
2、DML: 数据库操作语言,关键字为:insert、update、delete,其作用是对数据库中表的插入、更新、删除
3、DQL:数据库查询语言,关键字为:select,用于对数据库中记录的查询
4、DCL:数据库控制语言,用于定义访问安全权限和安全级别的
四、DDL 操作数据库、表、列
关键字:CREATE、ALTER、DROP
1、操作数据库
1.1 创建数据库
create database mydb2;
1.1.1 创建数据库并修改它的字符集
create database mydb2 character set utf8;
1.2 查询所有的数据库
show databases;
1.3 查询数据库的创建信息
show create database mydb2;
1.4 查询当前使用数据库
select database();
1.5 修改数据库的字符集
alter database mydb2 character set utf8;
1.6 切换数据库
use mydb1;
1.7删除数据库
drop database mydb2;

2、操作表
2.1 创建数据库: create table 表名(字段名1 数据类型,字段名2 数据类型,…);
create table stu(id int,name varchar(20));
数据表以;结尾。
2.2 数据类型
int:整型
double:浮点类型,double(5,2)表示最多五位数,其中有两位是小数;
char:固定长度类型
varchar:可变字符串类型,就是会根据输入的的长度确定,不会有空格
text:字符串类型,用于存储大文本
blob:字节类型
date:日期类型,格式为:yyyy-MM-dd
time:时间类型,格式为:HH:mm:ss
datestamp:时间戳类型,yyyy-MM-dd hh:MM:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:MM:ss
2.3 简单操作
2.3.1 查询数据库中所有的表
show tables;
2.3.2 查询数据表的字段名信息
desc stu;
2.3.3 给表中添加字段
alter table stu add sex varchar(3);
2.3.4 给指定字段修改数据类型
alter table stu modify sex char(3);
2.3.5 给指定的表修改名称
rename table stu to student;
2.3.6 删除某一个字段
alter table student drop sex;
2.3.7 给某一个字段重新命名
alter table student change name sname char(10);
(重命名也可以更改类型)
2.3.8 查看创建表的细节
show create table student;
2.3.9 删除表
drop table student;
五、DML对数据表的插入、更新、删除
关键字为:insert、update、delete
在mysql中日期类型和字符串类型都要用单引号扩起来
5.1 插入操作(insert)
语法:INSERT INTO 表名 (列名1,列名2…) values(列值1,列值2,…);
(1)列名与列值的类型、个数、顺序都要一一对应
(2)可以把列名当做java中的形参,把列值当做实参;
(3)值不要超过定义长度
(4)如果是空值,直接使用null
(5) 如果插入是日期或者是字符串,都要单引号扩起来
5.1.1 在表中插入值
如:(1)在student表中添加id为1,姓名为xiaoming,性别为male;
insert into student(id,name,sex) values(1,‘xiaoming’,‘male’);
要插入全部字段值,可以省略字段名
(2)在student表中添加id为1,姓名为xiaoming,
insert into student values(1,‘xiaoming’,null)
(3)批量插入数值
insert into student(id,name,sex) values(1,‘xiaoming’,‘male’),(2,‘xiaoming’,‘male’);
5.2 更新操作(update)
基本格式:update 表名 set 列名=列值
5.2.1将员工的工资设置为5000
update emp set salary=5000;
5.2.2 将姓名为”zhangsan“的工资设为7000
update emp set salary=7000 where name=‘zhangsan’
5.2.3 将每一员工的工资在原来的基础上加200
update emp set salary=salary+200;
5.2.4 将姓名为lisi的员工工资设置为6000,且年龄为33;
update emp set salary=6000,age=33 where name=‘lisi’
5.3 删除操作(detele)
基本格式为 DELETE FROM 表名 [where 列名=列值]
5.3.1 删除名字为lisi的记录
delete from emp where name=‘lisi’;
5.3.2 删除表的所有记录
delete from emp;(删除整个表的记录,但是表还存在)
六、DQL(查询表中的记录,关键字:select)
DQL语句不会对数据进行改变,而是把结果返还给客户端,查询返回的一张虚拟的表
基本格式: select 列名 from 表名 [where,group by,having,order by]
6.1 简单查询
6.1.1查询表中的所有记录
例:select * from emp;
6.1.2 查询某一列的记录
select ename from emp;
6.2 条件查询
条件查询就是查询的时候给where字句,在where语句中可以使用一下的运算符以及关键字
(1)>,<,=,<=,>=,<>,!=
(2) BETWEEN … AND…
(3)IN(SET)
(4) IS NULL、 IS NOT NULL
(5)AND
(6)OR
(7)NOT
6.2.1 查询工资在3000~7000的记录
(1)select * from emp where sal between 3000 and 7000;
(2)select * from emp where sal>=3000 and sal<=7000;
6.2.2 查询编号为s0001,s002,s003的记录
select * from stu where sno in(s0001,s002,s003);
6.2.3查询编号不为s0001,s002,s003的记录
select * from stu where sno not in(s0001,s002,s003);
6.2.4 查询奖金为空的记录
select * from emp where comm is null;
6.2.5 查询奖金不为空的记录
select * from emp where comm is not null;
6.3 模糊查询(like)
模糊查询中的通配符
_:任意一个字符
%:任意0~n个字符

			6.3.1 查询姓名有5个字母构成的学生记录
				select * from stu where name like '_____';
		   6.3.2 查询姓名第5个字母以i组成的学生记录
				select * from stu where  name like '____i';
			6.3.3 查询姓名以”z“开头的学生姓名和年龄
			  select  name, age from stu where name like 'z%';
			6.3.4 查询姓名中第2个字母为“i”的学生姓名和性别。
			 select name,sex from stu where name like '_i%';
			6.3.5 查询姓名中包含"a"字母的学生记录。
			select * from stu where name like '%a%';

6.4 字段控制查询
  关键字:distinct
  解释:去除重复记录(两行或者两行以上记录中系列的上数据都相同),就是将出现重复的记录,进行删除
  6.4.1 将emp表中的重复记录进行删除
   select distinct from emp;
6.5 ifnull
  当工资列salary和奖金列comm数据类型都一样的时候,就可以进行相加。如果奖金列中有为空的数据null,
这个时候两列相加就会出现错误,所以这个时候就用到IFNULL。
6.5.1
select * salary+ifnull(comm,0) as ‘总金额’ from emp;
6.6 排序 (order by)
基本格式:ORDER BY 列名 asc(默认) desc
6.6.1 查询所有学生记录,并按照年龄进行升序排序
select * from stu order by age asc; (asc是默认的,可以省略)
6.6.2 查询所有学生记录,并按照年龄进行降序排序
select * from stu order by age desc;
6.6.3 查询所有雇员,按照月薪的降序排序,如果月薪相同时,按照编号进行排序。
select * from emp order by sal desc,empno asc;
6.7 聚合函数
  关键字:sum, avg,max,min,count
 1.聚合函数使用来做纵向运算的函数:
  count():统计指定列不为null的记录行数。
  max():计算指定列的最大值,如果指定列是字符串类型,那么就会使用字符串排序运算。
  min():计算指定列的最小值,如果指定列是字符串类型,那么就会使用字符串排序运算。
  sum():计算指定列的数值和,如果指定列的类型不是数值类型,那么计算结果为0;
  avg():计算指定列的平均值,如果指定列的类型不是数值类型,那么计算结果为0;
 2.count:当需要纵向统计的时候可以使用count()。
 6.7.1 查询emp中的记录数
  select count() from emp;
 6.7.2 查询emp表中月薪大于2500的人数
  select count(
) from emp where sal>2500;
 3.SUM和AVG
  sum是用于求取纵向列的总和,avg是用于求取平均值的
6.7.3 查询所有员工的月薪之和
select sum(sal) from emp ;
6.7.4 统计所有员工的平均工资
select avg(sal) from emp;

4. max和min

 查询最大值和查询最小值
 6.7.5 查询最高工资和最低工资
     select max(sal), min(sal)  from emp;

5. 分组查询

	关键字:group by
	解释:当要进行分组时,需要使用group by

注意事项:凡是和聚合函数同时出现的列名,一定要写在group by之后
6.7.6 查询每个部门的部门编号和每个部门的工资和
select deptno,sum(sal) from emp group by deptno;
6.7.7 查询每个部门的部门编号以及每个部门工资大于1500的人数
select deptno,count(*) from emp where sal>1500 group by deptno;

6.having

			查询工资总和大于9000的部门编号以及工资和。
			select  deptno,sum(sal) from emp group by deptno  having sun(sal)>9000;

注意:having与where的区别:
   1.having是在分组后对数据进行过滤
   where是在分组前对数据进行过滤
   2.having后面可以使用聚合函数
   where后面不可以使用聚合函数
where是对分组前记录的条件,如何某行记录没有满足where子句的条件,那么这行记录将不会参加分组。而
   having是对分组后数据的约束。
   查询中各个关键字的先后顺序:
   select–>from–>where–>group by–>having–>order by

6. limit方言

limit是用来限定查询结果的起始行,以及总行数
  6.7.8 查询5行记录,起始行从0开
   select * from limit 0,5;(从0开始,即就是从第一条记录开始。读五条记录)
  分页查询:
如果一页记录为10条,希望查看第三页记录应该怎么查看?
第一页记录起始行为0,一共查询为10行。
第二页记录起始行为0+10,一共查询为10行。
第三页记录起始行为0+10+10,一共查询为10行。
查询总结:
 查询语句的书写顺序:select-from-where-group by-having-order by-limit;
 查询语句的执行顺序:from-where-group by-having-select-order by-limit;

7 DCL 操作数据库用户

7.1创建用户
指定ip地址创建用户 create user 用户名@IP地址 identified by ‘密码’;
用户可以在任意的IP地址上登录 create user 用户名@’%’ identified by ‘密码’;
 7.2用户授权
grant create,alter,drop,delete,insert,update,select on 数据库名.* to 用户名@IP地址
select * from emp limit 2,10;
grant ALL on 数据库名.* to 用户名@IP地址
 7.3撤销用户权限
revoke create on 数据库名.* from 用户名@IP地址
 7.4查看权限
show grants for 用户名@IP地址
 7.5删除用户
drop user 用户名@ip地址
 7.6查看所有用户
select user from mysql.user;
查看当前用户 select user();
 7.7给用户修改密码
set password for ‘用户名’ @ ‘IP’ = password(‘密码’)

相关标签: java

上一篇: 24点小游戏

下一篇: 第1周总结