3

1.数据库概述

1.1 什么是数据库?

所谓的数据库就是指存储和管理数据的仓库。

拓展内容1:数据库有哪些分类?(了解)

早期:层次式数据库,网络型数据库
现在:关系型数据库,非关系型数据库

1.2 什么是关系型数据库?

底层以二维表的形式保存数据的库就是关系型数据库

stu-学生表

学生编号姓名年龄
1001刘培霞35
1002陈子枢18

拓展内容2:常见的关系型数据库有哪些?(了解)

  • SQL Server:微软提供,收费,适用于一些中型或大型的项目中,在JAVA中使用占比不高(.NET中使用的较多)
  • Oracle:甲骨文公司提供,收费,适用于一些大型或者超大型的项目中,在JAVA中的使用占比非常高
  • MYSQL:瑞士MYSQLAB公司提供,免费开源,适用于一些小型或者中型的项目中,在JAVA中的使用占比比较高(小巧轻量)

mariadb其实是MYSQL的一个分支,用法和Mysql完全一样

  • DB2:IBM公司提供,收费,在一些银行,金融等行业中使用较多。在JAVA中的使用占比也不高。
  • Sqlite:迷你数据库,嵌入式设备中(安卓,苹果手机,pad)

1.3 数据库相关概念

1.3.1 什么是数据库服务器

数据库服务器就是一个软件(比如mysql软件) 将数据库软件安装在电脑上,当前电脑就是一个数据库服务器。就可以对外提供存取数据的服务

在一个数据库服务器中可以创建多个数据库(databases),每一个数据库都是一个单独的仓库。

#### 1.3.2 什么是数据库
数据库就是存储和管理数据的仓库,通常情况下,一个网站中的所有数据会存放在一个数据库中。例如:

jd.com   db_jd(数据库)
taobao.com  db_taobao(数据库)
...

#### 1.3.3 什么是表
一个数据库中可以创建多张表,每张表用于存储一类信息(数据表),例如

jd.com中的用户数据  tb_user(表)
jd.com中的商品数据  tb_product(表)
jd.com中的订单数据  tb_order(表)
...

#### 1.3.4 什么是表记录
一张表中可以包含多行表记录,每一行记录用于存储某一个具体的数据

学生编号姓名年龄
1001刘沛霞35
1002陈子枢18
..........

1.4 什么是SQL语言?

SQL是一门用于操作关系型数据库的通用的语言(使用SQL可以操作所有的关系型数据库)

使用SQL可以操作数据库,表,表记录
(1) 创建数据库,删除数据库,修改数据库,查询数据库
(2) 创建表,删除表,修改表,查询表
(3) 新增表记录,删除表记录,修改表记录,查询表记录
使用SQL也可以操作存储过程/视图/索引等。

提示:SQL是一个标准通用的操作关系型数据库的语言(普通话),每个数据库厂商为了增强自己数据库的功能,都提供了支持自己数据库的语言,称之为数据库的方言。方言不通用!

2.连接mysql服务器

通过命令行工具可以登录mysql客户端,连接MySQLf服务器,从而访问服务器中的数据

1.连接mysql服务器:
mysql -uroot -p密码

-u : 后面的root是用户名,这里使用的是超级管理员;

-p : (小写的p)后面的root是密码,这是在安装MySQL时就已经指定的密码;

2.连接mysql服务器并指定IP和端口号:

mysql -uroot -proot -h127.0.0.1 -P3306

-h :后面给出的127.0.0.1是服务器主机名或ip地址,可以省略的,默认连接本机;

-P :(大写的P) 后面的3306是连接端口,可以省略,默认连接3306端口;

3.退出客户端命令:quit或exit或q

4.FAQ:常见问题:
image
解决方法:复制mysql安装目录下的bin目录的路径,将bin目录的路径添加到path环境变量中!!!
image
拓展内容3:
(1) 在CMD中连接mysql服务器之后,可以使用#、/**/、--等符号添加注释,例如:
image
(2) 在CMD中连接mysql服务器之后,在书写SQL语句时,可以通过c取消当前语句的执行。例如:
image

3.数据库及其表操作

3.1 创建、删除、查看数据库

提示:
(1) SQL语句对大小写不敏感。推荐关键字使用大写,自定义的名称(库名,表名,列名等)使用小写。

SHOW DATABASES;  --查看当前数据库服务器中的所有库
CREATE DATABASE mydb1; --创建mysql1库

(2) 并且在自定义名称时,针对多个单词不要使用驼峰命名,而是使用下划线连接。(例如: tab_name,而不是tabName)
--01.查看mysql服务器中所有数据库

SHOW DATABASES; --查询服务器所有的数据库
SHOW TABLES; --查询当前库所有

--02.进入某一数据库(进入数据库后,才能操作库中的表和表记录)

 --语法:**USE 库名**
 USE mysql; --进入到‘mysql’数据库
 SHOW TABLES; --查询当前库中的所有表

--查看已进入的库(了解)
SELECT DATABAE();
--03.查看当前数据库中的所有表

--先进入某一个库,再查看当前库中的所有表
USE test;
SHOW TABLES;

--04.删除mydb1库

--语法: DROP DATABASE 库名;

DROP DATABASE mysql1; --删除mysql1库,但如果删除的库不存在,则会报错

--思考:当删除的库不存在时,如何避免错误产生?

DROP DATABASE IF EXISTS mysql1; --如果mysql1库存在则删除,如果不存在,也就不执行删除操作!

--05.重新创建mysql1库,指定编码为utf8

--语法:CREATE DATABASE 库名 CHARSET 编码

CREATE DATABASE mysql1 CHARSET utf8;

--如果不存在则创建mysql1:

CREATE DATABASE IF NOT EXISTS mysql1 CHARSET utf8

--06.查看建库时的语句(并验证数据库库使用的编码)

--语法:SHOW CREATE DATABASE 库名;

SHOW CREATE DATABASE mysql1;

3.2 创建、删除、查看表

--07.进入mysql1库,删除stu学生表(如果存在)
--语法:DROP TABLE 表名;

 USE mysql1;  --进入mysql1库
 DROP TABLE IF EXISTS stu; --如果存在stu库,则删除

--08.创建stu学生表(编号[数值类型]、姓名、性别、出生年月、考试成绩[浮点型]),建表的语法:

CREATE TABLE 表名(
  列名 数据类型,
  列名 数据类型,
  ...
  列名 数据类型,
);

SQL语句:

--如果存在,则删除stu表
DROP TABLE IF EXISTS stu;
--创建stu学生表
CREATE TABLE stu(
    id INT PRIMARY KEY AUTO_INCREAMENT,--给id添加主键约束,并设置自增
    name VARCHAR(50),
    gender VARCHAR(10) NOT NULL,--给gender添加非空约束
    birthday DATE,
    score DOUBLE
);

--09.查看stu学生表结构
--语法:DESC 表名

DESC stu;

image

4.新增、更新、删除表记录

--10.往学生表(stu)中插入记录(数据)
--语法:INSERT INTO 表名(列名1,列名2,列名3...)VALUES(值1,值2,值3...);

--如果是在cmd中执行插入记录的语句,先set name gbk;再插入记录!
--由于id已经设置了主键自增,所以在插入数据,id可以不用给值
INSERT INTO stu(id,name,gender,birthday,score) VALUE(null,'tom','male','2000-3-4',89);
INSERT INTO stu VALUE(null,'john','male','2002-5-6',78);
INSERT INTO stu VALUE(null,'andy','female','2004-7-6',91);
-- 查询学生表中的所有记录
SELECT * FROM stu;

提示:

(1)当为所有列插入值时,可以省写列名,但值的个数和顺序必须和声明时列的个数和顺序保持一致!
(2)SQL语句中的值为字符串或日期时,值的两边要加上单引号(有的版本的数据库双引号也可以,但推荐使用单引号)。
(3)(针对cmd窗口)在插入数据之前,先设置编码:set names gbk;
或者用以下命令连接mysql服务器:
    mysql --default-character-set=gbk -uroot -proot
等价于:
    mysql -uroot -proot
    set names gbk;

-- 11.查询stu表所有学生的信息
-- 语法:SELECT 列名 | * FROM 表名
select * from stu;

-- 12.修改stu表中所有学生的成绩,加10分特长分
-- 修改语法: UPDATE 表名 SET 列=值,列=值,列=值...[WHERE子句];

update stu set score=score+10;
-- score+=10 mysql中不支持+=

-- 13.修改stu表中编号为1的学生成绩,将成绩改为83分。

update stu set score=83 where id=1;
-- 修改3号学生的性别为 'male',成绩改为99;
update stu set score=99,gender='male' where id=3;

提示:where子句用于对记录进行筛选过滤,保留符合条件的记录,将不符合条件的记录剔除。
-- 14.删除stu表中所有的记录
-- 删除记录语法: DELETE FROM 表名 [where子句]
delete from stu; -- 删除stu表中的所有记录

-- 仅删除符合条件的
delete from stu where id>2; -- 删除stu表中id大于2的记录

5.查询表记录

------- 准备数据: 以下练习将使用db10库中的表及表记录,请先进入db10数据库!!!


Roy01
10 声望5 粉丝

« 上一篇
Servlet入门
下一篇 »
Spring AOP入门