1.什么是数据库?
数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的过去人们将数据
存放在文件柜里。
2.为什么用数据库?
现在数据量庞大,已经不再适用数据库是长期存放在计算机内、有组织、可共享的数据即可。数据库中的数据按
一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
3.如何使用数据库?
如何科学地组织和存储数据,如何高效获取和维护数据成了关键这就用到了一个系统软件---数据库管理系统
数据库管理系统(DataBase Management System 简称DBMS)
如MySQL、Oracle、SQLite、Access、MS SQL Server
mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的
他现在是甲骨文公司的产品。
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
4.数据库服务器、数据管理系统、数据库、表与记录的关系(重点理解!!!)
记录:1 刘海龙 324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)
表:student,scholl,class_list(即文件)
数据库:oldboy_stu(即文件夹)
数据库管理系统:如mysql(是一个软件)
数据库服务器:一台计算机(对内存要求比较高)
总结:
数据库服务器:运行数据库管理软件
数据库管理软件:管理-数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
5.数据管理系统的特点
1) 数据结构化(如上图odboy_stu)
2) 数据共享,冗余度低,易扩充
3) 数据独立性高
4) 数据由DBMS统一管理和控制
a:数据的安全性保护
b:数据的完整性检查
c:并发控制
d:数据库恢复
数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的过去人们将数据
存放在文件柜里。
2.为什么用数据库?
现在数据量庞大,已经不再适用数据库是长期存放在计算机内、有组织、可共享的数据即可。数据库中的数据按
一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
3.如何使用数据库?
如何科学地组织和存储数据,如何高效获取和维护数据成了关键这就用到了一个系统软件---数据库管理系统
数据库管理系统(DataBase Management System 简称DBMS)
如MySQL、Oracle、SQLite、Access、MS SQL Server
mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的
他现在是甲骨文公司的产品。
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
4.数据库服务器、数据管理系统、数据库、表与记录的关系(重点理解!!!)
记录:1 刘海龙 324245234 22(多个字段的信息组成一条记录,即文件中的一行内容)
表:student,scholl,class_list(即文件)
数据库:oldboy_stu(即文件夹)
数据库管理系统:如mysql(是一个软件)
数据库服务器:一台计算机(对内存要求比较高)
总结:
数据库服务器:运行数据库管理软件
数据库管理软件:管理-数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
5.数据管理系统的特点
1) 数据结构化(如上图odboy_stu)
2) 数据共享,冗余度低,易扩充
3) 数据独立性高
4) 数据由DBMS统一管理和控制
a:数据的安全性保护
b:数据的完整性检查
c:并发控制
d:数据库恢复
6.数据库管理软件分类
分两大类:
关系型: sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
关系型数据库需要有表结构
非 关系型: mongodb,redis,memcache
非关系型数据库是key-value存储的,没有表结构
分两大类:
关系型: sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
关系型数据库需要有表结构
非 关系型: mongodb,redis,memcache
非关系型数据库是key-value存储的,没有表结构
就数据库而言,我们将会采用mysql数据进行数据学习
7.mysql数据库安装
Window版本
1、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/
2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64
3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 -->【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
4、初始化
mysqld --initialize-insecure
5、启动MySQL服务端
mysqld # 启动MySQL服务
杀掉进程方法:
tasklist | findstr mysqld ,查找服务,查看服务的进程号
taskkill /pid /f pid号 ,f是强制杀掉
6、启动MySQL客户端并连接MySQL服务
mysql -u root -p # 连接MySQL服务器
↑上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:
注意:--install前,必须用mysql启动命令的绝对路径
8.制作MySQL的Windows服务
1、在终端执行此命令:
"c:\mysql-5.6.41-winx64\bin\mysqld" --install
安装成功提示
Service successfully installed.
如果出现拒绝安装,请以管理员身份运行cmd
2、移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.6.41-winx64\bin\mysqld" --remove
注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
@启动MySQL服务
net start mysql
@关闭MySQL服务
net stop mysql
7.mysql数据库安装
Window版本
1、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/
2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64
3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 -->【将MySQL的bin目录路径追加到变值值中,用 ; 分割】
4、初始化
mysqld --initialize-insecure
5、启动MySQL服务端
mysqld # 启动MySQL服务
杀掉进程方法:
tasklist | findstr mysqld ,查找服务,查看服务的进程号
taskkill /pid /f pid号 ,f是强制杀掉
6、启动MySQL客户端并连接MySQL服务
mysql -u root -p # 连接MySQL服务器
↑上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:
注意:--install前,必须用mysql启动命令的绝对路径
8.制作MySQL的Windows服务
1、在终端执行此命令:
"c:\mysql-5.6.41-winx64\bin\mysqld" --install
安装成功提示
Service successfully installed.
如果出现拒绝安装,请以管理员身份运行cmd
2、移除MySQL的Windows服务,在终端执行此命令:
"c:\mysql-5.6.41-winx64\bin\mysqld" --remove
注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
@启动MySQL服务
net start mysql
@关闭MySQL服务
net stop mysql
9.在windows下,为mysql服务指定配置文件
强调:配置文件中的注释可以有中文,但是配置项中不能出现中文
在mysql的解压目录下,新建my.ini,然后配置
#1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1
#解压的目录
basedir=c:\mysql-5.6.41-winx64
#data目录
datadir=c:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
#2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123
#3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=joke
password=123
#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
强调:配置文件中的注释可以有中文,但是配置项中不能出现中文
在mysql的解压目录下,新建my.ini,然后配置
#1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1
#解压的目录
basedir=c:\mysql-5.6.41-winx64
#data目录
datadir=c:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据
#2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123
#3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=joke
password=123
#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准
10.统一字符编码
1. 修改配置文件
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
2. 重启服务
3. 查看修改结果:
\s
show variables like '%char%'
1. 修改配置文件
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
mysql5.5以上:修改方式有所改动
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
2. 重启服务
3. 查看修改结果:
\s
show variables like '%char%'
---------------------------------数据库’基础‘操作---------------------------------------
包括如下:
1.密码修改
2.用户登录
3.数据操作相关
1.建库操作
2.建表操作
1.表结构操作
2.表内容操作
3.创建用户操作
4.用户权限操作
小贴士:
增
删
改
查
包括如下:
1.密码修改
2.用户登录
3.数据操作相关
1.建库操作
2.建表操作
1.表结构操作
2.表内容操作
3.创建用户操作
4.用户权限操作
小贴士:
增
删
改
查
1.数据库密码修改
1)如果密码已知,进行密码修改
当前root账户未设置密码
mysqladmin -uroot -p password123
2)如果密码不知道了,就需进行Miami破解
windows平台下,5.6版本mysql,破解密码的两种方式:
方式1:
1 关闭mysql
2 在cmd中执行:mysqld --skip-grant-tables
3 在cmd中执行:mysql
4 执行如下sql:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges;
5 taskill mysqld #或taskkill -f /PID 7832
6 重新启动mysql
方式2:
1. 关闭mysql,可以用taskill mysqld将其杀死
2. 在解压目录下,新建mysql配置文件my.ini
3. my.ini内容,指定
[mysqld]
skip-grant-tables
4.启动mysqld
5.在cmd里直接输入mysql登录,然后操作
update mysql.user set authentication_string=password('') where user='root and host='localhost';
flush privileges;
6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
2.登录数据库:
mysql -uroot -p123#不推荐,因为密码明文出现
mysql -uroot -p#推荐,命令行会提示输入密码,此时密码输入时不是明文显示的哦
1)如果密码已知,进行密码修改
当前root账户未设置密码
mysqladmin -uroot -p password123
2)如果密码不知道了,就需进行Miami破解
windows平台下,5.6版本mysql,破解密码的两种方式:
方式1:
1 关闭mysql
2 在cmd中执行:mysqld --skip-grant-tables
3 在cmd中执行:mysql
4 执行如下sql:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges;
5 taskill mysqld #或taskkill -f /PID 7832
6 重新启动mysql
方式2:
1. 关闭mysql,可以用taskill mysqld将其杀死
2. 在解压目录下,新建mysql配置文件my.ini
3. my.ini内容,指定
[mysqld]
skip-grant-tables
4.启动mysqld
5.在cmd里直接输入mysql登录,然后操作
update mysql.user set authentication_string=password('') where user='root and host='localhost';
flush privileges;
6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
2.登录数据库:
mysql -uroot -p123#不推荐,因为密码明文出现
mysql -uroot -p#推荐,命令行会提示输入密码,此时密码输入时不是明文显示的哦
3.数据库操作相关
SQL(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
SQL语言分为3种类型:
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
数据库四个基本操作:
增
删
改
查
分别映射到------对数据库操作
------对表操作
对表结构操作
对表内容操作
SQL(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
SQL语言分为3种类型:
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
数据库四个基本操作:
增
删
改
查
分别映射到------对数据库操作
------对表操作
对表结构操作
对表内容操作
库操作
默认数据库:已经存在的数据库
mysql - 用户权限相关数据
test - 用于用户测试数据
information_schema - MySQL本身架构相关数据
创建数据库
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
查看数据库
SHOW DATABASES;
使用数据库
USE 数据库名;
默认数据库:已经存在的数据库
mysql - 用户权限相关数据
test - 用于用户测试数据
information_schema - MySQL本身架构相关数据
创建数据库
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
查看数据库
SHOW DATABASES;
使用数据库
USE 数据库名;
表结构操作
创建表
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
create table tb1(
nid int not null defalut 2,
num int not null
)
自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null auto_increment,
num int null,
index(nid)
)
注意:1、对于自增列,必须是索引(含主键)。
2、对于自增可以设置步长和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10;
shwo global variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)
外键,一个特殊的索引,只能是指定内容
creat table color(
nid int not null primary key,
name char(16) not null
)
create table fruit(
nid int not null primary key,
smt char(32) null ,
color_id int not null,
constraint fk_cc foreign key (color_id) references color(nid)
)
修改表
添加列:alter table 表名 add 列名 类型
创建表
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
create table tb1(
nid int not null defalut 2,
num int not null
)
自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null auto_increment,
num int null,
index(nid)
)
注意:1、对于自增列,必须是索引(含主键)。
2、对于自增可以设置步长和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10;
shwo global variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)
外键,一个特殊的索引,只能是指定内容
creat table color(
nid int not null primary key,
name char(16) not null
)
create table fruit(
nid int not null primary key,
smt char(32) null ,
color_id int not null,
constraint fk_cc foreign key (color_id) references color(nid)
)
修改表
添加列:alter table 表名 add 列名 类型