python学习---9.11---数据库mysql

1、认识数据库java

1.什么是mysql?python

  数据库mysql

  永久存储数据的仓库linux

  

1.管理不方便
2.文件操做效率问题
3.一个程序不太可能仅运行在同一台电脑上
提升计算机性能的方式
    1.垂直扩展  指的是更换性能更好的硬件
    2.水平扩展  指的就是添加更多的计算机  把任务分配给每一台 (分布式计算)
        分布式计算 的好处
        1.其中某一台挂了 不会致使整个系统瘫痪  稳定性高
        2.理论上性能能够无限扩展


分布式计算其实也是总体 

数据须要被共享  这就须要socket技术
共享就存在竞争问题   加锁处理
文件存取效率问题 

数据库 本质上就是一套软件 由服务器端 和 客户端组成  C/S  B/S

早些年 没有数据库的时候  程序员要想实现功能 得本身写一套socket 并解决上述问题 
因而就有了数据库软件公司 
问题

 

目前常见的数据库

    关系型数据库
        数据与数据之间能够创建关联关系(用户数据和购买信息)
    SQLServer 
        仅支持windows
    MySQL
        免费 开源 性能也不差   mysql 前后被sun  和 oracle收购 
        mariaDB  mysql的创始人 担心mysql的将来  因而推出mariaDB  使用起来彻底一致 

    
    Oracle
        目前最牛逼的数据库 收费很高 
        

    DB2
        IMB 收费的  通常与计算机绑定销售
    

    非关系型数据库
        速度贼快
        key value 存取
    MongoDB
    redis
    memcache

 

 

 

    数据 用于记录某事物状态的符号 或 别的形式  数字 音频
        age = 20
    记录 就是一个事物的典型特征的组合  在文件中体现为一行文本
        yyh,20,man,180
    表  就是一个一个的文件

    库  就是一个文件夹

    数据库管理系统(DBMS) 就是一个软件用来管理库的  C/S程序

    数据库服务器  运行着DBMS的计算机称为数据库服务器
数据库相关概念

 

2、安装mysql程序员

  

1.下载安装包
下载的时候提供了带界⾯的和不带界⾯的 ⽤哪一个呢?
你到公司后你想一想服务器是什么系统?
linux 有界⾯吗? 因此咱们安装不带界⾯的
2.mysql⽬录解析
bin
mysqld
mysql
data
⽂件夹 库
my-default.ini
3.启动mysql服务器
cd ...... mysqld
这是⼀个socket程序 这时候至关于作了什么事?
启动服务器socket 并监听端⼝ 默认绑定当前ip 端⼝默认3306
接下来作什么呢?
启动客户端,
运⾏mysql 注意他是⼀个socket程序 要链接服务器须要什么?
ip 和 端⼝
mysql -h ip -P port -uroot -p 密码默认为空
看到欢迎界⾯了是吧 说明socket连接成功了
这个命令提示符本质是什么?
就是⼀个input 对不对
接受⼀条指令而后怎么办?
发送个服务器
服务器接收到以后呢?
解析指令 取出你要的数据在send给客户端
那问题来了 指令确定不能随便写,不认服务器不认识,⼤家的有套规范
就是sql 
show databases;
对⽐data⽂件夹
那在讲命令以前呢 你想一想 咱们每次要使⽤mysql都得先cd到这个⽬录中
⾮常麻烦
怎么解决呢?
4.加到环境变量
命令总结:
启动服务器
mysqld
启动客户端
mysql -h -P -u -p
简写 mysql -u -p
关闭服务器
tasklist | findstr mysqld
taskkill /F /PID 8372
5.服务器的启动和关闭都须要执⾏命令 仍是不够⽅便 怎么办呢?
将mysql注册到系统服务中
终端执⾏ mysqld --install
运⾏->services.msc 查看系统服务
三.修改管理员密
安装过程

 

 

3、修改管理员密码redis

 

如今密码默认为空 这样安全吗?
不安全 万⼀谁过来把你数据删了 怎么办? 改密码
怎么改:
mysqladmin -uroot -p旧密码 password "123'
警告 不要紧
破解密码:
万⼀你不⼩⼼把密码忘记了 怎么办?不可能卸载重装吧
因此咱们下来说的是如何破解密码,如何破解呢?
那你就要想 这个密码它确定要找地⽅存储起来 ,那存客户端仍是服务器呢?
服务器 ,那存在内存仍是硬盘呢? 必然是硬盘,既然如此,⼀定有⼀⽂件⽤于⼲嘛
? 存放密码信息
那你有没有什么思路?
⽅式1:删⽂件
没问题 简单粗暴 可是,这个⽂件⾥不仅有你的帐号信息 还有别⼈帐号数据 还
有受权相关的数据
因此你最好不要这么⼲!
那你在思考⼀下,服务器验证⽤户的本质是什么,是否是读取⼀个⽂件的数据来
和你输⼊的数据进⾏对⽐,
那你可不能够这样⼦ 我告诉我服务器说你不要去读那个受权⽂件,能够!
⽅式2: 跳过受权表 进⼊系统修改受权表
跳过这个操做是服务器相关的操做因此 咱的先关掉服务器从新开 在从新开的
时候来告诉它
1.停⽌服务
2.启动服务器并添加参数
mysqld --skip-grant-tables
3.使⽤客户端登陆服务器 执⾏修改命令 此时不须要输⼊密码
update mysql.user set password = password("123123") where
user="root" and host="localhost"
刷新权限
flush privileges
命令⾏中重启服务器验证新密码
View Code

 

 

4、编码设置sql

  

来看⼀下 当前服务器的设置信息
使⽤客户端执⾏\s
来看⼀下 这边latin1 gbk 什么意思 是否是就是编码?
那这样有没有什么问题? 服务器是拉丁 客户端是 GBK
乱码 如何解决乱码?
保证编码⽅式⼀致!
如何设置呢?
在mysql安装⽬录下有个my_default.ini 他就是配置⽂件,可是他不是正在使⽤
的
⽽是⼀个模板⽂件,咱们若是要⾃⼰编写配置⽂件,须要⾃⼰复制⼀个叫作
my.ini的⽂件来编写
编写格式? 你已经学习过了
configpaser 回顾⼀下 conf⽂件包含什么?
分区 和 选项
[section]
option = value
要设置客户端的内容就写在mysql分区
要设置服务器的内容就写在mysqld分区下
原理:mysql在启动的时候会⾃动到安装⽬录下找my.ini⽂件 找到命令对应的标
题加载⾥⾯的设置项
在思考⼀下 咱们在登陆的时候是否是每次都须要输⼊⽤户信息 麻不麻烦?
麻烦 那怎么解决?
你看在mysql -uroot -p123 中 -u -p是否是参数 
是在你执⾏命令是⼿动传的参数,那既然是参数可不能够定义到配置⽂件中呢?
能够! 来看看如何定义
[mysql]
user = "root"
pasword = "123"
下⾯咱们来测试⼀下看⾏不⾏?
ok 报错了 说明他确实读取了配置⽂件 报错缘由 名字写错了
思考
好如今我问你: 你如今这个配置⽂件是给谁⽤的 是客户端仍是服务端?
便是客户端也是服务器端 由于咱们如今客户端和服务器端在同⼀台电脑上
正常状况下 咱们不会这么⼲ 你客户端想要⽤你就在客户端安装⽬录中建⼀个
my.ini
只写客户端相关的内容
一样服务器要⽤就在服务器端建 只写服务器相关内容
最终结果
[mysqld]
character-set-server = utf-8
collation-server = utf-8_general_ci
[mysql]
default-character-set = utf-8
[client]
default-character-set = utf-8
思考?
client是什么意思呢?
就是客户端的意思
和mysql有什么区别?
mysql也是客户端的其中⼀种
除了它 还有python客户端 java客户端等等
client是全部客户端的总称
若是都有的话 同时设置了两个的话 哪一个⽣效呢?
固然是mysql 由于他指名道姓说了mysql这个程序
验证⼀下
将client中加⼀个不存在的⽤户名
user = xxxxxxxxx
看看是否能成功登录
删除mysql分区 再次验证
注意:修改了mysqld配置须要重启服务器
View Code

 

 

5、基本sql语句数据库

  1.库相关windows

  增安全

    create database mydb charset utf8;

  查

    show databases;

     show creat databases mydb;

  改

    alter database mydb charset gbk

  删

    drop database mydb;

  2.表相关

  

    切换文件夹(选择数据库)

    use mydb;

    create table t1(id int,name,char)

  查

    show tables;

    show create table t1;

    desc t1;

  改

    改字段

    alter table 表名 add | modify | drop | change

      add 跟列名和类型

      modify 跟列名和类型

      drop 跟列名

      change 跟 旧列名 新列名 类型

    改字符编码

    alter table 表名 default character 类型

    更名称

    rename table  tname1 to tname2

  删

    drop table 表名

  3.记录相关

  

    insert into tablename values(data,...),(data)

  查 

    select id,name from t1;  列名可用*号表示通配符

  改

    update 表名 set 列名 =值 where 条件;可同时修稿多个字段

    用逗号隔开 列名=值,列名=值....

  删

    delete from 表名 where 条件;

    没有条件则删除全部;

    truncate table t1;

    重建表,清空全部数据;

相关文章
相关标签/搜索