1. 环境搭建
1.1 数据库安装
安装mysql、sqlyoy
2. sqlyog连接mysql
Windows操作和虚拟机操作两种
练习常windws
……
Mysql既是一个数据库(database),也是一个数据库管理系统(DBMS)
3.数据库基础知识
3.1数据库基本概念:
数据库:database,DB
数据库系统:database system,简称DBS,由电脑硬件、操作系统、数据库管理系统(DBMS:database managerment system)、数据库(DB)、数据库管理员(DBA:database administrator)
mysql—关系型数据库
3.2数据表的构成
3.3 数据库,表和表之间的关系
直接关系:同一个数据库中,不同的两个表之间,具有相同字段。
间接关系:同一个数据库中,不同的两个表之间,没有直接关系,但是可以通过第三个或者其他相关的表(即通过的第三个表,建立起彼此间的关系)可以建立起联系。
表和表之间关系的另一种描述:
一对多
多对一
多堆多
3.4 数据库管理系统分类
关系型数据库:实现关系模型,并用它来处理数据。关系模型在表中将信息与字段关联起来(也叫schemas),从而存储数据。
这种数据库管理系统需要结构(例如表)在存储数据之前被定义出来。有了表,每一列(字段)都存储一个不同类型(数据类型)的信息。数据库中每个记录,都有自己唯一的key,作为某一表的一行,行中的每一个信息都对应了表中的一列,所有的关系一起,构成了关系模型。
常用关系型数据库:oracle、mysql、sql server, DB2
非关系型(nosql)数据库:文档型存储、列存储、缓存存储
4.dos命令模式下连接mysql数据库及相关操作(相关操作命令适用linux平台下的mysql操作)
4.1常用dos命令
Cd
………
4.2 Mysql工作目录
在目录中:C:\xampp\mysql\bin
………
4.3 dos命令模式下连接mysql数据库(相关sql语句也适用于linux平台)
4.3.1 cmd 进入 mysql
(1)进入目录C:\xampp\mysql\bin
(2)连接mysql数据库语法
--连接本地数据库:
mysql -u 用户名字 -p;
--连接远程数据库:
Mysql -h ip 地址 -u 用户名字 -p;
解释:mysql 就是mysql.exe
-u:user,用户的意思,后面跟用户名
-p:password,后面跟密码
H:host 主机
说明:MariaDB 是mysql的一个特定版本
Sql语句编写注意事项
------sql语句编写注意事项dos-------
- 编写sql语句时,单词都要小写;
- 输入sql语句之前,需要将切入发切换到英文模式;
- 一个sql语句编写完成,需要以分号结尾;
- 单词要写对;
- 引号可以使用单引号或者双引号
- 语法正确
4.4 数据库连接后,可以有如下操作:
操作目的:【从hrbd数据库中的员工表employees中查询表中员工的姓/名】
- 查看mysql数据库管理系统中存在哪些数据库
show databases;
--show :显示
--databases:数据库的负数形式
- 选中或者打开一个数据库
use 数据库名;
举例:打开hrdb数据库
use hrdb;(语句执行完成,会有出现database changerd提示)
- 查看打开数据库中的哪些表
show tables;
--show 显示
- 查看一个表结构(目的:查看表中有哪些字段)
--语法1:
desc 表名;
--语法2:
describe 表名;
举例1:从 hrdb 数据库中的员工表 employees 中,查询表中所有员工的姓、名两个字段的值
SELECT first_name,last_name FROM hrdb.employees;
举例2:查看 hrdb 数据库的国家表 countries 表中的 country_name 数据
select country_name from countries;
- 查看当前打开的数据库是哪一个
select database();
- 查看当前使用的哪个用户连接的数据库
select user();
User:用户
说明当前连接数据库的用户为本地的 root 用户。
7)dos 模式下退出 mysql 数据库
方法一:exit
方法二:quit
方法三:ctr+c 强制退出
#典型问题说明:
1)错误的连数据库
在 dos 命令行模式下,root 用户密码为空的情况下,直接输入 mysql,而未输入其他内容(用户名、密码等)输入后,直接回车;
-- 结果:可以进入数据库,但会导致有些数据库看不到
2) 、SQL 语法错误:
一条 sql 语句输入后,如果存在语法错误,mysql 会给出如下提示:
1 queries executed, 0 success, 1 errors, 0 warnings 一个查询被执行,0 个成功,1 个错误,0 个警告
查询:selec1t * from aa.foods -- select 单词写错
错误提示代码: 1064
You have an error in your SQL syntax; check the manual that corresponds
你有一个错误,在你的 sql 语法中
to your MariaDB server version for the right syntax to 'selec1t *
from aa.foods' at line 1、
Near 后面引号中的内容附近为可能出错的地方。
5. 数据库操作
5.1 数据库的创建【重名时报 XX already】
-- 数据库库名命名规则重要说明:
-- (1)数据库名称可以支持大写字母 A-Z,小写字母 a-z,数字 0-9,字符包括下划线
_、,可以组合使用;-- 数字、字母、下划线
-- (2) 数据库名称一般以字母开头;
-- (3)数据库名称不建议以纯数字命名;
-- (4) 数据库名称在 1-30 个字符之间;
-- (5) 数据库名称可以支持中文,但不建议使用中文命名
总结:数据库名称,不能重名,以字母、数字、下划线组合构成,以字母开头,
不建议使用纯数字或者中文命名。
-- 创建数据库语法:
create database 库名 设置默认字符集 字符集名称 COLLATE 排序规则;
create database 库名 default character set 字符集名称 COLLATE 排序规则;
举例:创建数据库 schoolc,使该数据库可以支持中文,创建好的数据库,对输入的 sql 语句中的字符不区分大小写
CREATE DATABASE schoolc DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 解释:
-- CREATE DATABASE:创建数据库的意思
CREATE:创建的意思
-- schoolc:数据库名称
-- DEFAULT CHARACTER SET utf8:指定默认字符集为 utf8
-- 支持中文的字符集:utf8、gbk、utf16、gb2312、big5(繁体) -- DEFAULT:默认的意思
-- CHARACTER:字符
-- Set:集合的意思
-- CHARACTER SET:字符集的意思
-- COLLATE:校对的意思
-- utf8_general_ci:排序规则,也叫校对规则,语法:字符集_地区_不区分大小写
-- ci:character insensitive:不敏感,就是对于输入的 sql 语句中的单词不区
分大小写的意思
sensitive:敏感
insensitive:不敏感
--cs:区分大小写
5.2 修改数据库的字符集
-- 特别说明:
(1)只能对存在的数据库进行修改,否则报错;
(2)用本方法修改数据库的字符集后,新的字符集只对修改后创建的表有效;
(3)如果修改前的数据库不支持中文,那么,修改数据库前建的表,修改后 仍然不支持中文。
解决办法: 使用语句,执行如下语句,修改表的字符集:
alter table 库名.表名 convert to character
-- 语法:
ALTER DATABASE 库名 CHARACTER SET 新字符集名称 COLLATE 排序规则;
举 例 : 修 改 数 据 库 school2, 指 定 字 符 集 为 gb2312, 排序gb2312_chinese_ci,使该数据库对输入的 sql 语句不区分大小写
ALTER DATABASE school1 CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
-- 解释:Alter 修改的意思
-- ALTER DATABASE school:修改数据库 school -- CHARACTER SET gb2312:设置字符集为 gb2312
-- COLLATE gb2312_chinese_ci:设置排序规则为 gb2312_chinese_ci,ci 意思是不区分大小写
5.3 删除数据库
-- 语法:
DROP DATABASE 库名; -- drop 删除的意思
-- DROP DATABASE:删除数据库的意思
举例:删除指定的数据库 school
DROP DATABASE school;
提示语句说明:
You have an error in your SQL syntax:你的 sql 语法错误(包括可能单词写错)。
use near 'databaseeeee school2' at line 1 -- 红色字体的位置,就是在 usenear 之后的位置,一般为错误的地方。
6. MySQL 数据类
软件研发过程:
需求à概要设计à详细设计à编码à测试à发布à运维
定义数据库的依据:数据库设计说明书(数据字典)
架构师设计数据库时,对库名、表名、字段名进行定义时,要做到望文生义。
说明:MySQL 支持四种数据类型
数值型、字符型、日期时间型、混合型数值型:用来放数字 [整数 小数]
字符型:用来放名称、文字描述、文章等字符或者字符串
日期时间型:用来放日期、时间
混合型:用来放字符序列、性别(男、女)等
6.1 数值型
TINY:微小
SMALL:小
MEDIUM:中等的
INTEGER:整数,int 为 integer 的简写
Big:大
Byte 字节
bit:位
1byte=8bit
KB 千字节 1kB=1024*8 bit
MB 兆字节
GB 吉字节
说明:
一般 tinyint、int、integer、mediumint、bigint 类型存放整数Float、double、decimal 类型存放小数,一般做测试需要建表时,对于整数字段,常用 INT 型号
注意:在 sql 语句(insert、update、select 等语句)中使用数值型数据,包括各种整数和小数,都不用使用引号;
-- unsigned 关键字: 无符号类型,该字段的值只能是非负数,该关键字只对整数有效。
-- zerofill 关键字: 默认无符号,零填充,mysql 中,在数字长度不够的时候数据前面填充
0,以达到设定的长度;
-- 如果只希望表示零和正整数,可以使用无符号关键字“unsigned”
-- 如果往表中特定字段中输入的数据前面 0,建表时可以考虑使用关键字 zerofill -- zerofill 一般和 unsigned 配合使用
-- 特别说明:建表时,整型数据类型后的字符长度,只有在使用了 unsigned 和 zerofill
关键字时才有意义
-- 一般 unsigned 关键字和 zerofill(零填充) 关键字搭配在一起使用。
Zero:零的意思
Fill:填充
6.2 字符型
Char -- 单词 character 字符的简写
Varchar -- variable character 可变字符串的简写
Byte:字节,一个字节为 8bit
注意:字符型数据,在 insert、update,select 等语句中,需要用单引号或者双引号引起
来,如’张三’,"Tom";
6.3 日期时间型
DATE:日期Time:时间
Year:年
DATETIME:日期时间
TIMESTAMP :时间戳
STAMP:邮票,印章
Month:月
Day:日
Hour:小时
Minute 分钟
Second:秒
注意:insert、update、delete 等语句中,日期时间型数据,需要用引号(单引号或者双
引号)引起来,如果插入数据时使用的为通过函数获取日期时间,函数不需要加引号。
6.4 混合型
ENUM 类型:枚举类型,逐个列举的意思,一般为单选
F:female 女
M:male 男
SET 类型:集合类型,可以多选
注意:eENUM 枚举类型和 SET 集合类型在 insert 或者 update、select 表中数据时,需
要用引号将数据引起来。
总结:mysql 中,在 insert 语句、update 语句、select 语句中,除数值型数据,不需要加
引号,其他数据类型都需要加引号,引号可以是单引号或者双引号。例外:对于日期时间型数据,插入数据时,如果是使用日期时间相关函数获取系统日期时间,这时不用加引号,如果是插入数据时,直接给出具体的日期时间,需要用引号将之括起来。
7. 数据库中表的操作
7.1 创建表--笔试题
提醒:mysql 中,在数据库中建表,表不能重名。 表的表名命名规则:
-- 数据库表命名规则重要说明:
-- (1)数据库表名称可以支持大写字母 A-Z,小写字母 a-z,数字 0-9,字符包括下划线 _ ,可以组合使用;
--(2) 数据库表名称一般以字母开头;
--(3)数据库表名称不建议以纯数字命名;
--(4) 数据库表名称在 1-30 个字符之间;
--(5) 数据库表名称可以支持中文,但不建议使用中文命名;
--(6) 数据库表不能重名。
-- 语法:
CREATE TABLE 库名.表名(字段名 1 字段类型 1(字符长度 1),字段名 2 字段类型 2(字符长度 2));
举例:在 schoola 库中,创建表班级表 sclass,表中有字段班级编号 cno,数据类型为 int,长度为 5,班级名称 cname,数据类型为 char,长度为 20,系号为dno,数据类型为 int,长度为 3
Create table schoola.sclass( Cno int(5), Cname char(20), Dno int(3) );
执行结果: 1 queries executed, 1 success, 0 errors, 0 warnings 翻译:一个查询被执行,1 个成功,0 个失败,0 个告警
#建表时指定数据库引擎和字符集 -- 数据库引擎是什么?
-- 数据库引擎是一种存储、处理、保护数据库数据的核心服务。
举例:查看 mysql 数据库的引擎 SHOW ENGINES;
查询结果说明:mysql 的数据库默认引擎为 innoDB,这个数据库引擎可以支持外键和事务。 举例:查看指定数据库中表的引擎 SHOW TABLE STATUS;
-- 查看结果显示 mysql 数据库的默认引擎 innodb。
举例:在 test 库,创建表商品 goods,商品编号 gid,商品名称 gname,创建 表时,指定数据库的引擎为 innodb 和字符集为 utf8
CREATE TABLE test.goods( gid INT(3), gname CHAR(30) )
ENGINE=INNODB DEFAULT CHARACTER SET=utf8;
SHOW TABLE STATUS;
-- 通过查看表的状态,可以查看表的引擎
7.2修改表
-- 说明:修改表就是修改表的表名、增加字段、删除字段、更换字段、修改数据类型及数据长度、修改表的约束等。
(1)为一个表增加字段
语法:
alter table 库名.表名
add [column] 字段名 数据类型(数据长度);
-- column,列,字段的意思,这里该关键字可以省略
-- 解释
Add column:增加字段
Column:列,字段
Add:增加
举例:为表 sclass 增加班主任名称字段 cOwner,数据类型为 char,数据长度 20
Alter table school2.sclass
Add column cowner char(20);
解释:
-- Alter table :修改表
-- Add column:添加
-- cowner :列名,字段名
-- char(20):数据类型(数据长度)
举例:修改 test2 库的表 cc 的字符集为 utf8
ALTER TABLE test2.`cc` CONVERT TO CHARACTER SET utf8;
SHOW TABLE STATUS;
-- 查看表的字符集,检查修改结果
7.3 删除表
-- 语法:
drop table 库名.表名;
举例:删除 school 数据库中的表 sclass
drop table school.sclass;
特别说明:Mysql 中,库名、表名、字段名都不允许重名;表中的数据,如果表在已
经添加主键约束或者唯一键约束的情况下,数据不可以重复。