数据库管理系统(DBMS)

  • 专注于帮助开发者解决数据存储的问题,这样开发者就可以把主要精力放在实现业务功能上了。
  • MySQL,原来是sun公司,后来被甲骨文收购。现在互联网企业几乎都在使用。【免费 + 收费】
  • Oracle,甲骨文。收费,一般国企、事业单位居多。【收费】
  • Microsoft SQL Server,微软。【收费】
  • DB2,IBM。【免费 + 收费】
  • SQLite,D. Richard Hipp个人开发。【免费】
  • Access, 微软。【收费】
  • PostgreSQL,加州大学伯克利分校。【免费】

mysql

安装与配置

window:

1.官网下载:https://dev.mysql.com/downloads/mysql/

2.解压到一个目录下

mysql数据库需要联网吗 mysql需要钱吗_mysql


3.在此目录下创建一个my.ini的配置文件,并写上配置代码

mysql数据库需要联网吗 mysql需要钱吗_学习_02


4.初始化,打开终端输入以下命令

路径为安装路径,执行完后安装路径会生成一个data文件

"C:\mysql\bin\mysqld.exe"  --initialize-insecure

5.启动

"C:\mysql\bin\mysqld.exe"

或者

# 制作成window的服务
"C:\mysql\bin\mysqld.exe" --install test
# 启动
net start test
# 关闭
net stop test

6.配置环境变量,在path变量下加入mysql的环境变量

mysql数据库需要联网吗 mysql需要钱吗_开发语言_03


7.执行mysqld启动MySQL,mysql -u root -p 启动客服端,MySQL默认没有设置密码所以p不用写,如下图所示表示连接成功,也可以通过应用商店去下载那些已经集成好服务端客户端的数据库

mysql数据库需要联网吗 mysql需要钱吗_mysql_04


以上就是mysql的安装配置和启动过程

常用操作

  • 设置密码:默认安装没密码,通过设置命令设置密码
set password = password("root");    不适用8.0以上版本
  • 忘记密码重置
  • 修改安装目录下的my.ini文件,在[mysqld]下添加skip-grant-tables=1,这个语句表示免授权登录
    -修改完成后保存重启mysql,
登录
mysql -u root -p
设置新密码
use mysql;
update user set authentication_string = password('新密码'),password_last_changed=now() where user='root';

mysql数据库需要联网吗 mysql需要钱吗_开发语言_05


退出并再次修改配置文件,删除 [mysqld] 下的 skip-grant-tables=1再次重启,以后就可以使用新密码登录了。

基础内置命令一览

–表示注释,;表示语句结束

数据库操作

  • show databases; 查看所有数据库
  • create database test default charset utf8; 创建一个名字为test的数据库,字符编码设置为utf-8
  • drop database test; 删除test数据库
  • use test; 使用数据库

数据表操作

  • show tables; 显示数据库里的所有表,前提条件是先执行使用数据库命令
  • create table ta1(id int,other varchar(16) not null)default charset = utf8;
    创建表,在列名后加not null 表示不允许为空,加null表示可以为空,后default 0 表示默认值为0
  • primary key:主键一般用于表示当前这条数据的ID编号(类似于人的身份证),需要我们自己来维护一个不重复的值,比较繁琐。所以,在数据库中一般会将主键和自增结合。
  • 注:一个表中只能有一个自增列,一般都是主键。
id int not null auto_increment primary key,	-- 不允许为空,为自增值,为主键
  • drop table ta1;删除名字为ta1的表
  • 清空表
  • delete from ta1;
  • truncate table ta1;(速度快、无法回滚撤销等)
  • 添加列
  • alter table 表名 add 列名 类型;
  • alter table 表名 add 列名 类型 DEFAULT 默认值;
  • alter table 表名 add 列名 类型 not null default 默认值;
  • alter table 表名 add 列名 类型 not null primary key auto_increment;
  • 删除列
  • alter table 表名 drop column 列名;
  • 修改列 类型
  • alter table 表名 modify column 列名 类型;
  • 修改列 类型 + 名称 alter table 表名 change 原列名 新列名 新类型;
  • 修改列 默认值 ALTER TABLE 表名 ALTER 列名 SET DEFAULT 1000;
  • 删除列 默认值 ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
  • 添加主键 alter table 表名 add primary key(列名);
  • 删除主键 alter table 表名 drop primary key;

增删改查

  • insert into 表名 (列名,列名,列名) values(对应列的值,对应列的值,对应列的值);
  • delete from 表名;
  • delete from 表名 where id = 1;
  • update 表名 set 列名=值;
  • update 表名 set 列名=值 where 条件;
  • select * from 表名;
  • select 列名,列名,列名 from 表名;
  • select 列名,列名 as 别名,列名 from 表名;
  • select * from 表名 where 条件;

数据库表数据类型

  • int
  • 整形 取值范围:-2147483648 ~ 2147483647
  • int unsigned 取值范围:0 ~ 4294967295
  • int(5)zerofill 当不满足5位时,按照左边补0
  • decimal(m,d)
  • 小数 m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。
  • char(m)
  • 字符串 定长字符串 m代表字符串的长度,最多可容纳255个字符。即使内容长度小于m,也会占用m长度。
  • varchar(m)
  • 字符串 可变字符串 m代表字符串的长度,最多可容纳65535个字节。内容小于m时,会按照真实数据长度存储;如果超出m长度限制((默认MySQL是严格模式,所以会报错)
  • text
  • text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。
时间
  • datetime
  • YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
    -timestamp
  • YYYY-MM-DD HH:MM:SS(1970-01-01 00:00:00/2037年)
  • 对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储,查询时,将其又转化为客户端当前时区进行返回。对于DATETIME,不做任何改变,原样输入和输出。
  • date
  • YYYY-MM-DD(1000-01-01/9999-12-31)
  • time
  • HH:MM:SS(‘-838:59:59’/‘838:59:59’)

使用python操作数据库

Python操作MySQL需要安装第三方模块pymysql

pip intsall pymysql

代码如下:

import pymysql
# 连接
conn = pymysql.connect(host = "127.0.0.1",port = 3306,user = "root",passwd = "root",charset = "utf-8")
# 获取cursor操作数据库
cursor = conn.cursor()

# 数据库,excute 函数用于向数据库发送命令
cursor.excute("show databases")
# 用于接受数据库查询所返回的结果
result = cursor.fetchall()
# 如果要操作数据库(增删改),在执行excute后还要执行commit命令才会被执行
conn.excute("drop database test")
cursor.commit()

总结,数据库的操作命令不需要全部记忆,只要有个印象就可以,常用的用得多了也就熟悉了,用python操作MySQL,实际上还是跟数据库的内置操作语句有关,会内置语句自然就会用python去使用sql.