2018年5月8日笔记

  • CentOS 7上安装mysql
# CentOS 7 安装mysql

1. 检测系统是否自带安装 mysql
rpm -qa | grep mysql

2. 若已安装,可以进行卸载
rpm -e mysql    //普通删除模式
rpm -e --nodeps mysql   //强力删除模式,若普通删除时提示存在依赖文件,则进行强力删除

3. 安装mysql
# centOS 7
yum install mariadb-server mariadb      //在CentOS 7中,由于 MySQL数据库已从默认的程序列表中移除,可以使用 mariadb 代替
systemctl start mariadb         //启动mariadb
mysqladmin --version            //验证mysql是否工作正常

# centOS 6
yum install mysql
yum install mysql-server
yum install mysql-devel
service mysqld start            //启动mysql

4. 安装完成后需设置root密码
mysqladmin -u root password xxxxxx     //设置root密码
mysql -u root -p                //连接到sql服务器
  • mysql常用的show命令

1. show databases;                //显示所有数据库名称

2. show tables; 或 show tables from databse_name;  //显示数据库中所有变的名称

3. show variables;                 //显示系统变量

4. show processlist;                //显示当前运行的所有进程

5. show columns from database_name.table_name;  //显示表中列名称

6. show grants for user_name;           //显示一个用户的权限

7. show index from table_name;          //显示表的索引

8. show create database database_name;      //显示一个数据库的create语句

9. show create table table_name;          //显示一个表的create语句

10. show status;                 //显示一些系统特定资源的信息,例如,正在运行的线程数量

11. show table status;              //显示当前使用或者指定的database中的每个表的信息,信息包括表类型和表的最新更新时间

12. show privileges;               //显示服务器所支持的不同权限

  • mysql 数据类型

1. 数值类型:

类型大小范围(有符号)范围(无符号)用途
TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
浮点数值
DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

2. 日期和时间类型:

类型大小
(字节)
范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4

1970-01-01 00:00:00/2038

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS 混合日期和时间值,时间戳

3. 字符串类型:

类型大小用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据
  • Python中pymysql模块的一般用法
 1 import pymysql
 2 
 3 # 创建连接
 4 conn = pymysql.connect(host="xx.xx.xx.xx", port=xxxx, user="user1", passwd="passwd1", db="test")
 5 # 创建游标
 6 cur = conn.cursor()
 7 # 定义sql
 8 sql = "select * from test;"
 9 
10 # 执行sql语句
11 # cur.execute(sql)
12 # 执行多条语句(不常用)
13 # cur.executemany()
14 # 取所有结果
15 # cur.fetchall()
16 # 取一个结果
17 # cur.fetchone()
18 # 取10行数据
19 # cur.fetchmany(size=10)
20 # 关闭游标
21 # cur.close()
22 
23 try:
24     cur.execute(sql)
25     result = cur.fetchone()
26     print(result)
27 except Exception as e:
28     raise e
29 finally:
30     cur.close()
31     conn.close()
  • 创建表格

一般语法为:

create table table_name(

  column_name  type  not null,

  ...... );

例如:

create table Student(
stdID int not null,
stdName varchar(100),
age int,
score int);
  • 如何给用户user1授予超级用户权限
grant all privileges on *.* to 'user1'@'%' identified by '123456' with grant option;
  • mysql的增删改查

1. 查询记录

select column_names from table_name where condition group by column_name1 having count(*)>1 order by column_name2 desc;

2. 插入记录

insert into table_name (id, name, age) values (1001, 'Karl', 20);

3. 删除记录

delete from table_name where condition;

4. 更改记录

update table_name set column_name=xxx where condition;
  • 索引

1. 创建索引

CREATE INDEX indexName ON mytable(username(length)); 

2. 修改表结构(添加索引)

ALTER table tableName ADD INDEX indexName(columnName);

3. 创建表的时候直接指定

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);  

4. 删除索引

CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);  
  • mysql的其他常用语句

以下2个语句均能查看表结构,第2种显示更清晰

(1) show create table_name;

(2) desc table_name;

truncate  //只清楚数据,不删除表结构

drop     //删除表结构

原文地址:https://www.cnblogs.com/karl-python/p/9017431.html