学习目标
能够理解数据库的概念
能够安装MySQL数据库
能够启动,关闭及登录MySQL
能够使用SQL语句操作数据库
能够使用SQL语句操作表结构
能够使用SQL语句进行数据的添加修改和删除的操作
能够使用SQL语句简单查询数据
学习内容
数据库的基本知识
目标
能够掌握数据库的概念
能够说出常用的数据库
讲解
什么是数据库
存储数据的仓库,我们通常说的数据库指的是数据软件
数据的存储方式
1.数据保存在内存
int[] arr = new int[]{1, 2, 3, 4};
ArrayList<Integer>list = new ArrayList<Integer>();
list.add(1);
list.add(2);
new出来的对象存储在堆中.堆是内存中的一小块空间
优点:内存速度快 缺点:断电/程序退出,数据就清除了.内存价格贵
2.数据保存在普通文件 优点:永久保存 缺点:查找,增加,修改,删除数据比较麻烦,效率低
3.数据保存在数据库 优点:永久保存,通过SQL语句比较方便的操作数据库
数据库的优点
通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的高效的解决方案。
常见数据库
Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。MYSQL:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.
SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。 SQLite: 嵌入式的小型数据库,应用在手机端。
常用数据库:MYSQL,Oracle 在web应用中,使用的最多的就是MySQL数据库,原因如下:
1.开源、免费
2.功能足够强大,足以应付web应用开发(最高支持千万级别的并发访问)
小结
1.说出数据库的概念:存储数据的仓库
2.说出常用的数据库:MYSQL,Oracle
数据库的安装
目标
能够安装mysql数据库软件
讲解
安装过程:
1.文件复制的过程,解压文件到指定的目录下
2.服务器的配置
3.端口号是:3306
4.管理员名字叫:root
5.可以远程访问:
小结
1.MySQL安装过程的两个步骤:解压复制, 配置信息
2.MySQL端口号是:3306
3.管理员名字:root
命令行客户端连接服务器
目标
1.能够打开和关闭mysql服务
2.能够连接到mysql
讲解
打开和关闭mysql服务
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录
1.登录格式1:mysql -u用户名 -p密码
例如:
mysql -uroot -proot
后输入密码方式:
mysql -uroot -p
下一行输入密码
2.登录格式2:mysql -hip地址 -u用户名 -p密码
例如:
mysql -h127.0.0.1 -uroot -proot
3.退出MySQL:exit
小结
1.打开和关闭mysql服务?
找到window的服务-> Mysql -> 右键
2.连接到本机的mysql?
mysql -uroot -proot
3.连接到指定主机的mysql?
mysql -hip地址 -uroot -proot
图形界面SQLyog客户端
目标
能够掌握SQLyog的安装
能够使用SQLyog连接mysql
讲解
SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库
1.双击
2.一直下一步,直到出现下面对话框
3.输入名称和秘钥
4.重启SQLyog即可
5.使用SQLyog登录数据库
小结
1.SQLyog的安装?
一直下一步
2.使用SQLyog连接mysql?
输入主机名,用户名,密码,端口
服务器与数据库、表、记录的关系
目标
能够理解mysql服务器与数据库、表、记录的关系
讲解
实体类与表的对应关系
关系型数据库的核心单元是表
小结
mysql服务器与数据库、表、记录的关系?
mysql服务器管理多个数据库
一个数据库中包含多张表
一张表中包含多条记录
SQL语句的分类和语法
目标
能够掌握SQL的概念和作用
讲解
什么是SQL
结构化查询语言(Structured QueryLanguage)简称SQL。
SQL语句就是对数据库进行操作的一种语言。
SQL作用
通过SQL语句我们可以方便的操作数据库、表、数据。SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
SQL语句分类
1.DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter等
2.DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update等
3.DQL(Data Query Language) 数据查询语言
对数据库进行数据查询,关键字select。
4.DCL(Data Control Language)数据控制语言(了解)
是用来设置或更改数据库用户或角色权限的语句,这个比较少用到。
SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾。
2.可使用空格和缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
SELECT * FROM student;
4.3种注释
单行注释: -- 注释内容
多行注释: * 注释 */
# 注释内容(mysql特有的单行注释)
小结
1.SQL的作用?
SQL用于操作数据库,表,记录
2.SQL的分类?
DDL:操作数据库,表
DML:操作记录的
DQL:查询记录的
3.SQL的语法特点?
可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性。
SQL语句不区分大小写,关键字建议使用大写
注释 :
单行注释: --
多行注释: * 注释 */
DDL创建数据库
目标
能够掌握创建数据库的三种语法
讲解
创建数据库
1.直接创建数据库
CREATE DATABASE 数据库名;
2.判断是否存在并创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
3.创建数据库并指定字符集(编码表)
CREATE DATABASE 数据库名 character set 字符集;
注意:创建表时必须设置列的类型
4.具体操作:
直接创建数据库db1
CREATE DATABASE db1;
判断是否存在并创建数据库db2
CREATE DATABASE IF NOT EXISTS db2;
创建数据库db3并指定字符集为gbk
CREATE DATABASE db2 CHARACTER SET gbk;
查看数据库
1.查看所有的数据库
SHOW DATABASES;
2.查看某个数据库的定义信息
SHOW CREATE DATABASE 数据库名;
小结
创建数据库语法:CREATE DATABASE 数据库名;
查看有哪些数据库:SHOW DATABASES;
DDL修改和删除数据库
目标
能够修改数据库的字符集
能够删除数据库
讲解
修改数据库字符集
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET新字符集;
具体操作:
将db3数据库的字符集改成utf8
ALTER DATABASE db3 DEFAULT CHARACTER SET utf8;
删除数据库
DROP DATABASE 数据库;
DROP -- 表示删除
具体操作:
删除db2数据库
DROP DATABASE db2;
小结
1.修改数据库的字符集格式?
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 新的字符集;
2.删除数据库格式?
DROP DATABASE 数据库名;
DDL使用数据库
目标
能够掌握切换数据库语法
能够查看正在使用的数据库
讲解
1.查看正在使用的数据库
SELECT DATABASE();
2.使用/切换数据库
USE 数据库名;
具体操作:
1.查看正在使用的数据库
SELECT DATABASE();
2.使用db1数据库
USE db1;
小结
目标DDL创建表
能够掌握SQL创建表
讲解
前提先使用某个数据库(db1)
创建表
CREATE TABLE 表名 (字段名 字段类型, 字段名 字段类型...);
建议写成如下格式:
CREATE TABLE 表名 (
字段名 字段类型,
字段名 字段类型
...
);
关键字说明:
CREATE -- 创建
TABLE -- 表
MySQL数据类型
MySQL中的我们常使用的数据类型如下:
详细的数据类型如下(不建议详细阅读!)
具体操作:
创建student表包含id,name,birthday字段
CREATE TABLE student (
id INT,
name VARCHAR(20),
birthday DATE
);
小结
1.创建表语句:CREATE TABLE 表名 (字段名 字段类型, 字段名 字段类型...);
2.常用数据类型:int, double, varchar, date
DDL查看表
目标
能够查看某个数据库中的所有表
能够查看表结构
讲解
1.查看某个数据库中的所有表
SHOW TABLES;
2.查看表结构
DESC 表名;
3.查看创建表的SQL语句
SHOW CREATE TABLE 表名;
具体操作:
查看mysql数据库中的所有表
SHOW TABLES;
查看student表的结构
DESC student;
查看student的创建表SQL语句
SHOW CREATE TABLE student;
小结
1.查看某个数据库中的所有表:SHOW TABLES;
2.查看表结构:DESC 表名;
3.查看创建表的SQL语句:SHOW CREATE TABLE 表名;
DDL删除表
目标
能够掌握删除表语法
能够掌握快速创建一个表结构相同的表
讲解
快速创建一个表结构相同的表
CREATE TABLE 表名 LIKE 表名;
具体操作:
创建s1表,s1表结构和student表结构相同
CREATE TABLE s1 LIKE student;
删除表
1.直接删除表
DROP TABLE 表名;
2.判断表是否存在并删除表
DROP TABLE IF EXISTS 表名;
具体操作:
直接删除表s1表
DROP TABLE s1;
判断表是否存在并删除s1表
DROP TABLE IF EXISTS s1;
小结
快速创建一个表结构相同的表:CREATE TABLE 新表名 LIKE 其他表;
删除表语法:DROP TABLE 表名;
DDL修改表结构
目标
能够掌握修改表结构的语法
讲解
所有的修改表结构的语句都是:ALTER TABLE 表名 xxx;
修改表结构使用不是很频繁,只需要了解,等需要使用的时候再回来查即可
1.添加表列
ALTER TABLE 表名 ADD 新字段名 字段类型;
具体操作:
为学生表添加一个新的字段remark,类型为varchar(20)
ALTER TABLE student ADD remark VARCHAR(20);
2.修改列类型
ALTER TABLE 表名 MODIFY 字段名 新的类型;
具体操作:
将student表中的remark字段的改成varchar(100)
ALTER TABLE student MODIFY remark VARCHAR(100);
3.修改列名
类名和类型可以一起修改
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 字段类型;
具体操作:
将student表中的remark字段名改成intro,类型varchar(30)
ALTER TABLE student CHANGE remark intro varchar(30);
4.删除列
ALTER TABLE 表名 DROP 字段名;
具体操作:
删除student表中的字段intro
ALTER TABLE student DROP intro;
5.修改表名
RENAME TABLE 旧表名 to 新表名;
具体操作:
将学生表student改名成student2,再删除student2表
RENAME TABLE student TO student2;
DROP TABLE student2;
6.修改字符集
ALTER TABLE 表名 character set 新字符集;
具体操作:
将sutden2表的编码修改成gbk
ALTER TABLE student2 character set gbk;
小结
1.所有修改表前面的语法都是相同的?ALTER TABLE 表名 xxx
2.添加一列:ADD 字段名 字段类型;
3.修改类型:MODIFY 字段名 新类型;
4.修改字段名和类型:CHANGE 旧字段名 新字段名 类型;
5.删除一列:DROP 字段名;
DML插入记录(重点)
目标
能够掌握往表中添加记录
讲解
DML是对表中的数据进行增删改.
创建student表包含id,name,birthday,sex,address字段。
CREATE TABLE student (
id INT,
name VARCHAR(20),
birthday DATE,
sex char(2),
address varchar(50)
);
插入全部字段
所有的字段名都写出来
INSERT INTO 表名 (字段名1, 字段名2...) VALUES (值1, 值2...);
不写字段名
INSERT INTO 表名 VALUES (值1, 值2...);
插入部分数据
INSERT INTO 表名 (字段名1, 字段名2...) VALUES(字段值1, 字段值2...);
没有添加数据的字段会使用NULL
具体操作:
插入部分数据,往学生表中添加 id, name, age, sex数据
INSERT INTO student (id, NAME, age, sex) VALUES (1, '张三', 20, '男');
向表中插入所有字段
所有的字段名都写出来
INSERT INTO student (NAME, id, age, sex, address) VALUES ('李四', 2, 23, '女', '广州');
不写字段名
INSERT INTO student VALUES (3, '王五', 18, '男', '北京');
注意
值与字段必须对应,个数相同,类型相同
值的数据大小必须在字段的长度范围内
除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
如果要插入空值,可以不写字段,或者插入null
小结
1.向表中添加一条完整记录:
所有的字段都写出来: INSERT INTO 表名 (字段名, 字段名) VALUES (值1, 值2);
不写字段名: INSERT INTO 表名 VALUES (值1, 值2);
2.向表中添加一条记录部分列:必须写字段名,否则不知道添哪个字段.
DOS命令窗口操作数据乱码问题
目标
能够理解DOS命令行乱码的原因
讲解
当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败
错误原因:因为MySQL的客户端设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码
解决方案:
1.快捷设置
在DOS命令行输入:set names gbk;
注意:以上方式为临时方案,退出DOS命令行就失效了,需要每次都配置
2.修改MySQL安装目录下的my.ini文件,重启服务所有地方生效。此方案将所有编码都修改了[不建议]
小结
如何解决DOS命令行乱码:setnames gbk;
DML更新表记录
目标
能够掌握更新表记录
讲解
1.不带条件修改数据
UPDATE 表名 SET 字段=新的值, 字段=新的值;
2.带条件修改数据
UPDATE 表名 SET 字段=新的值, 字段=新的值 WHERE 条件;
3.关键字说明
UPDATE: -- 表示修改
SET: -- 修改的字段
WHERE: -- 指定条件
4.具体操作:
不带条件修改数据,将所有的性别改成女
UPDATE student SET sex='女';
带条件修改数据,将id号为2的学生性别改成男
UPDATE student SET sex='男' WHERE id=2;
一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京
UPDATE student SET age=26, address='北京' WHERE id=3;
小结
1.不带条件的更新数据库记录:UPDATE 表名 SET 字段名=字段值;
2.带条件:UPDATE 表名 SET 字段名=字段值 WHERE 条件;
DML删除表记录
目标
能够掌握删除表记录
讲解
1.不带条件删除数据
DELETE FROM 表名;
2.带条件删除数据
DELETE FROM 表名 WHERE 条件;
3.具体操作:
带条件删除数据,删除id为3的记录
DELETE FROM student WHERE id=3;
不带条件删除数据,删除表中的所有数据
DELETE FROM student;
小结
1.指定条件删除:DELETE FROM 表名 WHERE 条件;
2.没有条件删除所有的记录:DELETE FROM 表名;
创建student2表,student2结构和student表结构一样
将student表中的数据添加到student2表中
DQL没有条件的简单查询
目标
能够掌握简单查询
讲解
注意:查询不会对数据库中的数据进行修改,只是一种显示数据的方式。
查询表中所有列数据
1.写出查询每列的名称
SELECT 字段名, 字段名 FROM 表名;
SELECT -- 表示查询
FROM -- 从哪个表查询
具体操作:
SELECT id, NAME ,age, sex, address FROMstudent;
2.使用*表示所有列
SELECT * FROM 表名;
具体操作:
SELECT * FROM student;
查询表中指定列数据
查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名1, 字段名2 FROM 表名;
具体操作:查询student表中的name 和 age 列
SELECT NAME, age FROMstudent;
别名查询
1.查询时给列、表指定别名需要使用AS关键字
2.使用别名的好处是方便观看和处理查询到的数据
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;
注意:
查询给表取别名目前还看不到效果,需要到多表查询的时候才能体现出好处
AS关键字可以省略
3.具体操作:
查询sudent表中name 和 age 列,name列的别名为”姓名”,age列的别名为”年龄”
SELECT NAME AS 姓名, age AS 年龄 FROM student;
清除重复值
1.查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;
2.具体操作:
查询address列并且结果不出现重复的address
SELECT DISTINCT address 城市 FROM student;
查询结果参与运算
1.某列数据和固定值运算
SELECT 字段名 + 数值 FROM 表名;
2.某列数据和其他列数据参与运算
SELECT 字段1 + 字段2 FROM 表名;
注意: 参与运算的必须是数值类型
3需求:
添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
查询的时候将数学和英语的成绩相加
4.实现:
修改student表结构,添加数学和英语成绩列
ALTER TABLE student ADD math INT;
ALTER TABLE student ADD english INT;
给每条记录添加对应的数学和英语成绩
查询math + english的和
SELECT math + english FROM student;
结果确实将每条记录的math和english相加,但是效果不好看
查询math + english的和使用别名”总成绩”
SELECT math + english 总成绩 FROM student;
查询姓名、年龄,将每个人的数学增加10分
SELECT name, math + 10 FROM student;
小结
1.简单查询格式:SELECT 字段名, 字段名 FROM 表名;
2.定义别名:SELECT 字段名 AS 别名, 字段名 别名 FROM 表名;
3.去除重复行:SELECT DISTINCT 字段名 FROM 表名;
4.数值列,可以进行计算,不会影响表中数据
目标蠕虫复制
了解蠕虫复制
讲解
什么是蠕虫复制:在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中语法格式:
INSERT INTO 表名1 SELECT * FROM 表名2;
作用:将表名2中的数据复制到表名1中
具体操作:
CREATE TABLE student2 LIKEstudent;
INSERT INTO student2 SELECT* FROM student;
注意:如果只想复制student表中name,age字段数据到student2表中使用如下格式INSERT INTOstudent2(NAME, age) SELECT NAME, age FROM student;
总结
1.能够理解数据库的概念
存储数据的仓库
2.能够安装MySQL数据库
1.双击,下一步,解压复制
2.配置MYSQL, 编码UTF8,root账号的密码
3.能够启动,关闭及登录MySQL
启动,关闭: 找到Mysql服务,右键启动,关闭
登录MySQL: mysql -uroot -proot
4..能够使用SQL语句操作数据库
创建数据库: CREATE DATABASE 数据库名;
查看所有数据库: SHOW DATABASES;
删除数据库: DROP DATABASE 数据库名;
切换数据库: USE 数据名;
5.能够使用SQL语句操作表结构
1.创建表: CREATE TABLE 表名 (字段名 字段类型);
2.查看所有表: SHOW TABLES;
3.修改表: ALTER TABLE 表名 xxx
添加一列: ADD 字段名 字段类型;
修改字段类型: MODIFY 字段名 新类型;
修改字段名: CHANGE 旧字段名 新字段名 类型;
删除一列: DROP 字段名;
4.修改表名: RENAME TABLE 表名 TO 新表名;
5.删除表: DROP TABLE 表名;
6.能够使用SQL语句进行数据的添加修改和删除的操作(DML)
添加数据: INSERT INTO 表名 (字段名) VALUES (值);
修改数据: UPDATE 表名 SET 字段名=字段值;
删除数据: DELETE FROM 表名;
7.能够使用SQL语句简单查询数据
SELECT 字段名 FROM 表名;