数据库管理系统(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.解压到一个目录下
3.在此目录下创建一个my.ini的配置文件,并写上配置代码
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的环境变量
7.执行mysqld启动MySQL,mysql -u root -p 启动客服端,MySQL默认没有设置密码所以p不用写,如下图所示表示连接成功,也可以通过应用商店去下载那些已经集成好服务端客户端的数据库
以上就是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';
退出并再次修改配置文件,删除 [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.