千锋教育-做有情怀、有良心、有品质的IT职业教育机构

400-811-9990
当前位置:千锋视频教程 > Java视频教程  >  Java学习之Mysql数据库语言基础及入门

Java学习之Mysql数据库语言基础及入门

时间:2018-03-05 17:14:19     来源:千锋视频教程 作者:教学部

   MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

  MySQL的安装和配置

  参考文档:https://jingyan.baidu.com/article/9f7e7ec04407ff6f29155478.html

  相关概念:

  数据库: 数据的仓库,存储数据的地方。

  表: 分类对数据进行存储,实际保存数据的地方

  列(字段): 具体的一项信息,如:姓名、年龄

  行(记录): 实际的实体信息

  主键: 能唯一地标识一行记录的列

  Navicat图形工具的使用:

  Navicat for MySQL是常用的MySQL客户端工具,可以从网上下载,免费使用30天。

  参考文档:https://jingyan.baidu.com/article/d7130635cd6b7913fcf47573.html

  MySQL数据类型:

据类型

所占字

取值范

tinyint

1

-128~127

smallint

2

-32768~32767

mediumint

3

-8388608~8388607

int

4

-2147483648~2147483647

bigint

8

+-9.22*1018次方

float(m, d)

4

精度浮点型,m总个 d

double(m, d)

8

双精度浮点型,m总个 d

decimal(m, d)

 

decimal是存储为字符串的浮点

CHAR

0-255

定长字符串

VARCHAR

0-255

变长字符串

TINYBLOB

0-255

不超255个字符的二制字符串

TINYTEXT

0-255

短文本字符串

BLOB

0-65535

制形式的长文本

TEXT

0-65535

长文本

MEDIUMBLOB

0-16 777 215

制形式的中等长度文本

MEDIUMTEXT

0-16 777 215

中等长度文本

LOGNGBLOB

0-4 294 967 295

制形式的极大文本

LONGTEXT

0-4 294 967 295

极大文本

VARBINARY(M)

长度0-M个字的定长字符串

值的长度+1个字

BINARY(M)

M

长度0-M个字的定长字符串

  SQL语言:

  SQL全称是结构化查询语言(Structured Query Language)。使用SQL能进行数据库的增删查改。学习数据库的基本核心内容就是SQL。

  SQL分类如下:

  数据定义语言(DDL:Data Definition Language)

  数据操作语言(DML:Data Manipulation Language)

  数据查询语言(DQL:Data Query Language)

  数据控制语言(DCL:Data Control Language)

  一、DDL

  数据库定义语言:

  创建数据库

  create database 数据库名;

  使用数据库

  use 数据库名;

  删除数据库

  drop database 数据库名;

  drop database if exists 数据库名;

  创建表

  create table 表名(

  列名 数据类型 约束,

  ...

  );

  主键:primary key

  自动增长: auto_increment

  删除表

  drop table 表名;

  drop table if exists 表名;

  练习:

  创建my_db数据库

  在my_db中,创建学生表,包含编号(主键,自增)、姓名、年龄和地址

  二、DML

  数据新增

  insert into 表名(列1,列2...) values(值1,值2...)

  示例:

  -- 插入一行记录

  insert into student(name,age,gender,address)

  values('张三',20,'男','湖北武汉');

  -- 插入多行记录

  insert into student(name,age,gender,address)

  values

  ('李四',20,'男','湖北武汉'),

  ('李大四',22,'女','北京'),

  ('李小四',25,'女','北京'),

  ('李四四',27,'女','上海');

  -- 将表中的数据插入到其它表

  insert into student2(name,age,gender,address)

  select name,age,gender,address from student;

  注意:

  1、自动增长列不要添加数据

  2、列的数量、类型和顺序要和值一致

  数据修改

  update 表名 set 列1=值1,列2=值2 where 条件

  示例:

  -- 更新李小四的地址为四川成都

  update student set address = '四川成都'

  where name = '李小四';

  -- 更新多列

  update student set address = '四川成都',age = 18

  where name = '李小四';

  数据删除

  delete from 表名 where 条件

  示例:

  -- 删除id=2的学生

  delete from student where id = 5;

  练习:

  在学生表中添加5行记录,

  更新id为5的学生年龄为22

  删除id为3的学生

  四、DQL

  查询所有数据

  select * from 表;

  查询指定字段的所有数据

  select 列1,列2 from 表;

  where条件查询

  select * from 表 where 条件

  =、!=、in、not in、and、or

  示例:

  -- 查询所有行所有列

  select * from student;

  -- 查询部分列

  select name,address from student;

  -- 添加where条件 查询id为2的学生

  select * from student where id = 2;

  -- 查询id不为2的

  select * from student where id != 2;

  -- 查询地址为湖北武汉以及四川成都的学生

  select * from student where address = '湖北武汉' or address = '四川成都';

  -- 查询年龄20岁以上的男的

  select * from student where age >= 20 and gender = '男';

  -- 查询地址为湖北武汉以及四川成都的学生2

  select * from student where address in('湖北武汉','四川成都');

  -- 查询地址不是湖北武汉以及四川成都的学生

  select * from student where address not in('湖北武汉','四川成都');

  去掉重复数据

  distinct关键字

  select distinct 列 from 表;

  示例:

  -- 查询学生的地址,不重复

  select DISTINCT address from student;

  -- 给列设置别名

  select id 编号,name 姓名,age 年龄,gender 性别,address 地址 from student;

  -- 查询年龄在20到25之间的女生

  select * from student where age >= 20 and age <=25 and gender='女';

  select * from student where age between 20 and 25 and gender ='女';

  -- 查询北京或武汉的男生

  select * from student where address in ('北京','湖北武汉') and gender ='女';

  排序查询

  select * from 表 order by 列 desc\asc

  示例:

  -- 按年龄升序排序

  select * from student where gender = '男' order by age asc;

  -- 降序

  select * from student order by age desc;

  分页查询

  limit n; 返回长度为n的行

  limit n,m; 返回从n位置,长度为m的行

  select * from tb_name limit 5; 显示结果的前5条记录

  select * from tb_name limit 0,5; 区段查询

  示例:

  -- 按年龄升序排序

  select * from student where gender = '男' order by age asc;

  -- 降序

  select * from student order by age desc;

  -- 通过limit限制行数 前5行

  select * from student limit 5;

  -- 通过limit分页查询 第一页 第0行到第5行,第二页 第6行到第10行...

  select * from student LIMIT 0,5;

  select * from student LIMIT 5,5;

  select * from student LIMIT 10,5;

  练习:

  年龄最大的男学生

  年龄最小的五个女学生

  聚合函数

  求和:sum

  求平均值:avg

  求最大值:max

  求最小值:min

  求数量: count

  示例:

  select sum(col_name) from tb_name;

  分组查询

  group by 分组列

  where 在分组之前进行条件筛选

  having 在分组之后进行条件筛选

  where --> group by ---> having

  示例:

  -- 使用聚合函数

  select sum(age) 总年龄,avg(age) 平均年龄,

  max(age) 最大年龄,min(age)最小年龄,count(*) 学生数量 from student;

  -- 求来之不同地方的学生人数

  select address 籍贯,count(*) 人数 from student group by address;

  -- 求男女学生的人数

  select gender 性别,count(*) 人数,avg(age) 平均年龄 from student group by gender;

  -- 求人数超过5人的籍贯

  select address 籍贯,count(*) 人数 from student

  group by address having count(*) >= 5;

  -- 年龄总和超过200的性别

  select gender 性别,sum(age) 总年龄 from student

  group by gender having sum(age) > 200;

  模糊查询

  通配符:

  % 匹配任意多字符

  _ 匹配一个字符

  like关键字

  示例:

  -- 查找所有姓李的人

  select * from student where name like '李%';

  select * from student where name like '%大%';

  select * from student where name like '李_';

  作业

  写SQL语句:

  1、创建员工表:

id

name

age

salary

dept

1

20

3000

2

李四

24

4000

3

王五

27

2000

4

28

5000

5

周琪

18

6000

修部

  2、在表中插入上面的数据

  3、更新id为2的工资,将工资加200

  4、删除年龄低于20的员工

  5、查询年龄超过24,工资小于5000的员工

  6、查询每个部门的工资总和和平均年龄

  7、查询平均工资小于4000的部门

  • 北京天丰利校区(总部):北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼2层、南区服务楼2层
    咨询电话:400-186-9990 010-82790226-801
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、大数据开发培训、VR/AR混合
    现实培训、Python培训、Linux云计算培训、软件测试培训、Android培训、iOS培训、好程序员
  • 深圳西部硅谷校区地址:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619
    深圳大学城校区地址:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    咨询电话:0755-33582485-801(硅谷校区)0755-86660670-801(大学城校区)
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android培训、iOS培训
  • 上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-56166283/56166279
    面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训、好程序员
  • 郑州校区地址:郑州市金水区纬五路21号河南教育学院综合楼(经纬中学楼)7/8层
    咨询电话:0371-55191750 400-186-9990
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 广州校区地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-186-9990
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 大连校区地址:辽宁省大连市甘井子区软件园路2号东软信息学院B5座一楼
    咨询电话:0411-39026086 400-186-9990
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、UI交互设计培训、Android课程培训、iOS课程培训
  • 武汉校区地址:武汉市光谷大道61号智慧园21号楼2层
    咨询电话:027-65523826
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 成都校区地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    咨询电话:028-83178771
    面授课程:全栈HTML5+培训、UI交互设计培训、PHP培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    咨询电话:029-85260160
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训
  • 杭州校区地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226-801
    面授课程:全栈HTML5+培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术学院南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226-801
    面授课程:全栈HTML5+培训、UI交互设计培训、JavaEE+云数据培训、Android课程培训、iOS课程培训
  • 重庆校区地址:重庆市高新区科园一路2号大西洋国际12-1
    咨询电话:023-68883009
    面授课程:JavaEE+云数据课程培训
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    咨询电话:0731-85513010/85513210
    面授课程:JavaEE+云数据课程培训
  • 哈尔滨校区地址:哈尔滨市松北区创新一路699号科技创新城19号楼五楼
    咨询电话:15663846969
    面授课程:全栈HTML5+培训
  • 千锋教育服务号

    了解千锋动态
    关注千锋教育服务号

  • 千锋互联服务号

    扫码匿名提建议
    直达CEO信箱