一.数据库前言
1.什么是数据库*****
存放数据的仓库 本质是文件夹
我们已经学过的文件操作存在的缺陷
1.程序的所有组件太大,不可能存在同一个计算机上
2.多用户竞争影响数据安全
3.多用户访问,服务器需要并发
总结:
我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
2.常见的数据库
关系型 数据库之间存在某种关联关系
oracle
目前最好的关系型数据库,体现在用户管理,分布式
商业用途收费
MySQL
免费开源,功能支持没有oracle强 但是足以满足中小企业使用
先后被sun和oracle 收购
mysql创始人Widenius担心被收购了以后 另起炉灶 开发了MariaDB
mariaDB和mysql 使用方法一模一样
二.数据库的相关概念******
age = 18
一个变量 被
1.称之为一个字段
age = 18 , name = "Jack" , genger = "man"
一堆变量一起,
2.称之为一条记录 对应文件中的一行
文件需要分门别列 每个文件存储不同的数
3.一个文件称之为表
文件越来越多 得分文件夹
4.一个文件夹称之为库
数据库中包含所有内容:
字段(列)
记录
表
库
DBMS 数据库管理系统
数据库服务器
一个库可以包含多个表 一个表可以包含多条记录 一条记录中有多个字段
数据库是什么,本子上就是一套C/S架构的socket软件
3.安装数据库与配置使用环境 ***
1.代码界面 傻瓜式安装 记住密码
2.绿色解压版
1. 5.7以后的版本需要先初始化 mysqld --initialize-insecure
2.启动需要先进入安装目录 比较麻烦 需要添加到环境变量
打开环境变量 将mysql安装目录下的bin加入path变量
3.将mysqld 加入到windows的系统服
4.绿色版修改默认密码
修改默认密码需要先登录成功
执行update语句直接修改 user表中的密码
5.7
update mysql.user set authentication_string = password("root") where user = "root";
5.6
update mysql.user set password = password("root") where user = "root";
修改密码方式2 不需要登录 需要知道旧密码
mysqladmin -uroot -p旧密码 password 123
破解密码,当忘记密码时 无法登录 也就不能值执行update语句
思路:
1.启动服务器时 控制它不要加载授权表
2.无密码登录服务器
3.执行update mysql.user set authentication_string = password("root") where user = "root"
4.重启服务器
用到的系统指令:
mysqld 直接运行服务器程序
mysqld --skip-grant-tables 跳过授权表 用于重设密码
tasklist | findstr mysqld taskkill /f /pid 结束服务器程序
mysql 运行客户端程序 -u用户名 -p密码 -h主机地址 -P端口号
mysqld --install 将mysqld注册当windows服务中 在服务中叫MySQL
windows就是绑定了一个exe程序
sc delete mysql 删除windows服务
exit 退出客户端
5.简单的sql语句*****
库:
增
create database 库名称
删
drop database 库名称
改
alter database 库名称 要改的属性名称
alter database db1 char set utf8:
alter database db1 CHARSET utf8
注意在mysql中 utf-8不能写成utf8
查
show databases 查看所有数据库
show create database 库名称 查看数据库语句
命名规范:
1.不能使用纯数字
2.可以是字母 数字 下划线的组合
3.可以下划线开头
4.不能是关键字 如 create
大致和python相同
不区分 大小写
表相关的操作
增
建表时要明确数据库
use db1;
create table 表名称(字段名 类型(长度),......)
create table dog(nikneame char(10),gender char(1),age int)
#创建时同时指定数据库
create table 库名称.表名称(字段名 类型(长度),....)
删
drop table 表名;
改 alter table 表名称 drop|change|modify|add
drop 字段名称
alter table dog drop color;
change 旧的字段名 新的字段名 新的类型
modify 字段名 新的类型
add 字段名称 类型
alter table dog add color char(10);
重命名表
rename table 旧表名称 to 新表名称
rename table dog to dogtable;
修改表的属性
aleter table dotable DEFAULT CHARSET gbk;
查
show table;查看所有表
desc 表名称; 查看表结构
记录相关操作
增
insert into 表名 values(值1,值2......)
删
delete from 表名 where 字段名称 = 值
没有条件的话修改全部
查
select *from 表名: *表示通配符 查看所有字段
select 字段名称1,字段名2.. from 表名;
六,修改默认编码
配置文件放在安装路径目录中 就是和bin同级 名称必须叫my.ini
# 客户端的配置
[client]
#mysql这个客户端的配置
[mysql]
user = root
password = root
default-character-set = utf8
#服务器端的配置
[mysqld]
character-set-server = utf8
七.数据库的引擎 ***
八. 5.6与5.7的区别
1.5.7需要初始化
2.5.6游客模式 没有密码可以登录 但是无法操作数据
3.5.7中 data数据存放目录 是由初始化时决定
带界面的 在C:ProgrmData中
不带界面的就在安装目录中
5.6就在安装目录中
4.密码存储字段名 在5.6中时password 5.7中叫authentication_string
小结:
1.数据库是什么?
mysql 一种DBMS
是一个CS的socket软件
数据库服务器
DBMS
文件夹 库
文件 表
一个完整数据 记录
单个数据 字段
数据库的分类
关系型 数据之间存在某种关联 存在硬盘上
非关系型 数据之间存在某种关联 以key value形式存储 存在内存中
为什么用mysql
免费开源 能够支持中小企业使用
安装两种方式
1.界面
2.解压安装
环境变量
系统服务
修改默认密码
破解密码
修改编码(配置文件)
简单Create Read Update Delete
作业:
1.int(10) 该数据类型占几个字节,10的含义是什么?
一个,占用十个字符数即十进制十位数.
2.总结char 和varchar的区别以及优缺点:
char 定长 速度快 资源浪费
varchar 变长 准确 速度慢 资源利用率高
3.float(10,5) 能存储的最大数据是多少
99999.99999
4 创建学生表:有学生 id,姓名,密码,年龄 默认密码000000 性别必须是w 或 m 姓名 密码不能为空
Create table student(id int primary key,name char(4) not null,psw char(6) default 000000 not null,age int,sex enum("m","w"));
5 创建学校表:有学校id,学校名称,地址 校区不能重复
Create table school(id int primary key,name char(4) not null,campus char(10)unique,address char(10) unique);
6 创建课程表:有课程id,课程名称,课程价格,课程周期,所属校区(其实就是学校id) 校区不能为空,
Create table cscb(id int primary key,name char(4) ,price int not null,cycle float(2,1),campus char(10),
foreign key (campus) references school(id)
);
添加学生:张三,20岁,密码123
insert into student values(100321,"张三","123345",20,'m')
李四,18岁,密码111
创建学校:oldboyBeijing 地址:北京昌平
oldboyShanghai 地址:上海浦东
创建课程:Python全栈开发一期,价格2w, 周期5个月,属于上海校区
Linux运维一期 价格200,周期2个月,属于上海校区
Python全栈开发20期 ,价格2w,周期5个月,属于北京校区