一、Mysql安装
ubuntu上安装mysql非常简单只需要几条命令就可以完成。
1. sudo apt-get install mysql-server
2. sudo apt-get isntall mysql-client
3. sudo apt-get install libmysqlclient-dev
安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功:sudo netstat -tap | grep mysql
通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。
登陆mysql数据库可以通过如下命令:
mysql -u root -p
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
二、在terminal中简单操作MySQL
启动之后,进入mysql命令为:$ mysql -u用户名 -p密码
a.创建数据库
由于mysql命令与linux命令有点不同,因为mysql的命令总是以“;”作为结束的。这是需要稍微注意一下的。(以上的密码可以直接输在-p之后,也可以输在第二行,区别是第二行的密码以不可见的形式出现)
进入mysql之后,首先要查看一下数据库:> show databases;
(注意分号“;”不要落下)
系统会自带几个数据,例如performance_schema ,information_schema,mysql。这几个自带的数据库最好不要删,以免它出异常。
新建一个数据库命令:> create database 数据库名称;
删除一个数据库命令:> drop database 数据库名称;
切换和选择数据库命令:> use 数据库名称;
对数据库而言也是如此,进来之后首先要查看一下数据库中的”表“(数据库中可以放很多表这是不容质疑的,就像房间里可以放置多种多样的家具一样,查看一下是否有没有表或你需要的表)。
查看表命令:> show tables;
(由于是新建的表,就像新买的房,里面是空的。)
b.创建表格
create table tutorials_tbl(
tutorial_id INT NOT NULL AUTO_INCREMENT,
tutorial_title VARCHAR(100) NOT NULL,
tutorial_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( tutorial_id )
);
在这里,一些数据项需要解释:
·字段使用NOT NULL属性,是因为我们不希望这个字段的值为NULL。 因此,如果用户将尝试创建具有NULL值的记录,那么MySQL会产生错误。
·字段的AUTO_INCREMENT属性告诉MySQL自动增加id字段下一个可用编号。
·关键字PRIMARY KEY用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。
通过命令提示符来创建表:在mysql>提示符下,创建一个MySQL表这是很容易的。使用 SQL 命令 CREATE TABLE 来创建表。
下面是一个例子,创建一个表: tutorials_tbl
root@host# mysql -u root -p
Enter password:
mysql> use TUTORIALS;
Database changed
mysql> CREATE TABLE tutorials_tbl(
-> tutorial_id INT NOT NULL AUTO_INCREMENT,
-> tutorial_title VARCHAR(100) NOT NULL,
-> tutorial_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( tutorial_id )
-> );
Query OK, 0 rows affected (0.16 sec)
mysql>
注: MySQL不会终止命令,直到给一个分号(;)表示SQL命令结束。
还有另外一种创建表格的语法:
create table if not exists `users`(
`user_id` INT NOT NULL AUTO_INCREMENT, #设置自增性质
`user_name` VARCHAR(20) NOT NULL,
`password` VARCHAR(20) NOT NULL,
`sex` VARCHAR(2) NOT NULL,
`birthday` datetime NOT NULL,
`role_id` INT NOT NULL,
PRIMARY KEY(`user_id`) #设置主键
)CHARSET=utf8;
#注意两个引号不是常规的引号,而是键盘左上角的``符号。
show tables;#查看数据库中的表格
show columns from users;#查看表格中的属性等
如果要增加或者删除属性,可使用下述语句。
alter table users add/drop <属性名> <属性的数据类型>;
如果需要修改属性名,可使用下述语句。
alter table <表名> change column <原属性名> <现属性名> <数据类型>;
建表后需要设置外键,可以用如下sql语句
ALTER TABLE <表名>
ADD FOREIGN KEY (属性名)
REFERENCES 另一个表名(属性名)
建表后需要设置唯一键,可以用如下sql语句
alter table <表名> add unique(属性名);
参考资料:
补充:数据类型
类型 说明
CHAR 1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR(1)
VARCHAR 可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符的变长串
TEXT 最大长度为64K的变长文本
LONGTEXT 同Text,最大长度为4GB(纯文本,一般不会到4G)
ENUM 接受最多64K个串组成的预定义集合的某个串
SET 接受最多64K个串组成的预定义集合的零个或多个串
INT[(M)] 4字节(整数值,有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1) 无符号值:0到4294967295(0 到2^32 – 1))
DATE 4字节(以年月日的格式显示日期,范围是1000-01-01——9999-12-31)
TIME 3字节(以时分秒的格式显示时间,范围是-838:59:59——838:59:59)
DATETIME 8字节(显示日期和时间,范围是1000-01-01 00:00:00——9999-12-31 23:59:59)
BLOB 存储二进制数据类型,最大长度为64KB。
说明:(1)TIME时间范围居然有这么大的范围,特别是 time 可以取负值,这是mysql为了满足两个日期时间相减才这样设计的。
(2)BLOB二进制数据类型是比较重要的数据类型,因为所有的图片,视频,音频文件都是以二进制进行存储的。
C .mysql数据库的导入导出(ubuntu)
参考资料:
具体的方法是:
在当前目录下,运行mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
,即可将数据库导出到当前目录下。
mysql -u root -p abc < abc.sql
#(导出数据库abc到当前目录下,且文件名为abc.sql)
三.Mysql的文件配置
A.查看数据库的默认存放位置
打开”终端窗口”,输入”mysql -u root -p”–>回车–>输入mysql中”root”用户的密码–>回车–>登录成功。
用命令行连接到数据库(最好是mysql的root用户)
mysql> show variables like ‘%data%’;
其中,datadir的值就是数据库所在的位置
B.查看Mysql的默认端口号和修改端口号
登陆Mysql之后,使用命令show global variables like 'port';
查看端口号
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.00 sec)
修改端口,编辑/etc/mysql/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出
[root@test etc]# vi my.cnf
[mysqld]
port=3506
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
"my.cnf" 11L, 261C written
[root@test etc]#
重新启动mysql
[root@test ~]# /etc/init.d/mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
C.配置文件生成
C.MySQL数据库的启动停止
1、查看mysql版本
方法一:status;
方法二:select version();
2、Mysql启动、停止、重启常用命令
a、启动方式
(1)、使用 service 启动:
[root@localhost /]# service mysqld start (5.0版本是mysqld)
[root@szxdb etc]# service mysql start (5.5.7版本是mysql)
(2)、使用 mysqld 脚本启动:/etc/inint.d/mysqld start
(3)、使用 safe_mysqld 启动:safe_mysqld&
在16.04Ubuntu中目前是使用
service mysql start
启动数据库
b、停止
(1)、使用 service 启动:service mysqld stop
(2)、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop
(3)、mysqladmin shutdown
在16.04Ubuntu中目前是使用
service mysql stop
启动数据库
c、重启
(4)、使用 service 启动:
service mysqld restart
service mysql restart (5.5.7版本命令)
(5)、使用 mysqld 脚本启动:/etc/init.d/mysqld restart
提醒注意:Mysql 与Mysqld的区别:
mysql是个命令行程序;mysqld是服务,一般linux系统里的服务都是以d结尾的,比如httpd,vsftpd等等。d的全拼应该是daemon,也就是守护程序的意思,常驻后台嘛。
4.Python连接数据库
在本文中介绍 Python3 使用PyMySQL连接数据库,并实现简单的增删改查。(注意是python3)
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。
语言版本 | 链接库 |
Python 2 | mysqldb |
Python 3 | PyMysql |
A. PyMySQL
#pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码
#connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接
#cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
游标充当指针的作用。
尽管游标能遍历结果中的所有行,但他一次只指向一行。
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。
A.PyMysql的安装
① 使用pip命令安装pip install PyMySQL
② 如果你的系统不支持 pip 命令,可以使用以下git方式安装
//使用git下载安装包
$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL/
$ python3 setup.py install
B.Python连接MySql数据库
连接数据库前,请先确认以下事项:
Ⅰ 在你的机子上已经安装了 Python MySQLdb 模块。
Ⅱ 您已经创建了数据库 test
Ⅲ 连接数据库test使用的用户名为 root,密码为 root,你可以可以自己设定或者直接使用root用户名及其密码。