基础语法
相关概念
数据库
(1)就是存储数据的文件系统,特点:方便用户对数据的操作,通过标准的sql进行访问
(2)注意事项:
centOS7下面mysql5.7对大小写敏感,如果表名中含有大写,就会提示不存在
(3)解决
a) 找到mysql的配置文件(/etc/my.cnf文件)
b) 在[mysqld]加入lower_case_table_names=1 //不区分表名大小写
c) 输入命令service mysqld restart 重启mysql服务
数据库软件
(1)分类
关系型:采用了关系模型组织数据的数据库(mysql,oracle保存的都是有关系的实体)
非关系型:使用键值对存储数据(redis,mongoDb)
(2)设计数据库常用的ER模型图
实体用矩形表示,属性用椭圆形表示,他们之间的关系用菱形表示
(3)什么时候创建数据库,什么时候创建表,什么时候添加记录
一台数据库服务器可以创建很多数据库,一般一个项目创建一个数据库
一个数据库中可以创建很多张表,一般一个实体会创建一个表
一个表中可以插入很多条记录,一按一个对象的实例会添加一条新的记录
(3)数据库中表和java实体类的对应关系
表名 ------ java类
表中的字段 —类中的属性
表中的记录 —类创建的对象
SQL
结构化查询语言,定义了操作所有关系型数据库的一种规则
DDL:定义语言,操作数据库,表,字段等。–掌握建数据库,建表语句
DML:操作语言,对表中的记录进行增删改。–熟练掌握
DQL:查询语言,对表中的记录进行查询。 --熟练掌握
DCL:控制语言,定义数据库的访问权限和安全级别,及创建用户。----了解即可
数据库的操作
1、增(创建数据库)
create database 数据库名称;
2、删(删除数据库)
drop database 数据库名称;
3、改(修改数据库(修改字符集))
alter database 数据库名称 character set 字符集名称;
4、查
(1)查询所有数据库
show databases;
(2)查看当前使用的数据库
select database()
(3)使用数据库
use 数据库名称;
数据表的操作
1、增
(1)创建数据表
create table 表名(
列名 数据类型 约束,
列名 数据类型 约束,
...
列名 数据类型 约束
);
(2)常见数据类型
int 和 double:整数和小数类型
char 和 varchar:固定长度和可变长度的字符
date:只有日期(年月日) 生日
time:只有时间(时分秒)
dateTime和timestamp:既有时间又有日期
dateTime:如果没有向这个字段中存值,默认使用null存到数据库中
timestamp:如果没有向这个字段中存值,默认使用当前系统时间存到数据库中//订单时间
2、删(删除数据表)
DROP TABLE 表名;
3、改
(1)单独添加一列
alter table 表名 add 列名 数据类型;
(2)修改某列的数据类型
alter table 表名 modify 列名 新数据类型;
3、查
(1)查询所有的数据表
show tables;
(2)查询表结构
desc 表名;
表记录的操作
1、增
(1)给全部列添加数据
insert into 表名 values (值1,值2,…);
(2)给指定列添加数据
insert into 表名(列名1,列名2,…) values (值1,值2,…);
(3)注意:
值的最大长度不能超过列设置的最大长度
除了数字类型,其他类型都需要使用引号,单双都可以,推荐使用单引号
2、删(删除表中的数据)
delete from 表名 [where 条件]
3、改(修改表中的数据)
update 表名 set 列名1=值1,列名2=值2,… [where 条件]
4、查
基本语法:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后的过滤条件
ORDER BY
排序
LIMIT
分页
查询全部
(1)查询全部的表数据
select * from 表名;
(2)查询指定字段的表数据
select 列名1,列名2,… from 表名;
(3)去除重复查询
select distinct 列名1,列名2,… from 表名;
(4)计算列的值(四则运算)
select 列名1 运算符(+ - * /) 列名2 from 表名;
(5)起别名查询
select 列名 as 别名 from 表名;
(6)示例
# 查询每个商品的库存总金额,用别名totalMoney表示
SELECT NAME,price * IFNULL(stock,0) AS totalMoney FROM product
条件查询
条件查询语法
select 列名列表 from 表名 where 条件;
聚合函数
聚合函数查询语法
select 函数名(列名) from 表名 [where 条件];
排序查询
排序查询语法
select 列名列表 from 表名 [where 条件] order by 列名 排序方
分组查询
(1)分组查询语法
select 列名列表 from 表名 [where 条件] group by 分组列名 [having 分组后的条件过滤] [order by 排序列名 排序方式];
(2)注意:
分组之后的查询字段,要么是分组的字段,要么是聚合函数,其他字段没有意义
分页查询
分页查询语法
select 列名列表 from 表名
[where 条件]
[group by 分组列名]
[having 分组后的条件过滤]
[order by 排序列名 排序方式]
limit 当前页数,每页显示的条数
总结
(1)书写的顺序
select—from—where—group by—having—order by
(2)执行的顺序
from—where—group by—having—select—order by
from:需要从哪些表中检索数据
where:根据条件过滤表中的数据 —针对所有的数据进行筛选
group by:将where过滤之后的数据进行分组
having:对上面已经分组后的每一组数据进行过滤 —针对分组之后的每一组数据进行筛选
select:查看结果集中的哪一列
order by:把最终结果按照什么顺序展示在用户面前