一、数据库基础概念
1.数据库的相关定义:
- 数据库:是按照数据结构来组织和存储数据的仓库。(数据库>表>数据)
- 数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务。
2.关系型数据库定义:
- 关系型数据是指采用了关系模型来组织数据的数据库,关系模型为数据库结构的主流模型
3.MySQL-关系型数据库管理系统
MySQL数据库的优点:
1. MySQL是开源的、免费的。
2. 支持大型的数据库,可以处理拥有上千万条记录的大型数据库。
3. 运行速度快,MySQL体积小,命令执行的速度快。
4. 使用标准的SQL数据语言形式。
5. 支持多种计算机语言。
6. 可移植性强。MySQL能够运行与多种系统平台上,如windows,Linux,Unix等。
二、MySQL基本使用
1.cmd命令提示符使用
启动:net start MySQL
停止:net stop MySQL [注:一般情况下,MySQL服务是默认打开的]
2.MySQL登录
• mysql -h host_name -u user_name –p password
1) -h:当连接MySQL服务器不在同台主机时,填写主机名或IP地址,本地环境为localhost或者127.0.0.1
2) -u:登录MySQL的用户名
3)-p:登录MySQL的密码
【mysql -u root -p之后再输入密码】
3.MySQL命令基本用法
1)MySQL命令不严格区分大小写
2)每个完整命令的结束,以“;"英文状态下的分号结束
3)注释内容可以用 # 、 -- 、 /* */ ,这三个符号
4.MySQL常用命令
在cmd命令提示符下常用的命令:
命令说明 | 语法 |
创建一个数据库 | create database 数据库名; |
显示所有数据库 | show database; |
选定默认数据库 | use db_name; |
显示数据库中所有表 | show tables; |
查看表信息 | desc table_name; |
查看帮助信息\h | \h 、help create 、 ?create |
结束当前操作 | \c |
查看MySQL服务器状态信息 | \s |
退出MySQL | \q 、 exit 、quit |
5.MySQL授权管理命令
创建用户 CREATE USER us1@localhost IDENTIFIED BY 'us1';
删除用户 DROP USER us1@localhost;
修改用户密码 SET PASSWORD FOR us1@localhost = PASSWORD(‘新密码’); --MySQL5版本使用
ALTER USER us1@localhost IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';
用户授权 GRANT SELECT,INSERT ON t库.t表 TO us1@localhost; (部分权限)
GRANT ALL ON *.* TO us1@localhost; (所有库所有权限)
查看用户权限 SHOW GRANTS FOR us1@localhost;
取消用户权限 REVOKE ALL ON *.* FROM us1@localhost;
刷新 FLUSH PRIVILEGES;
6.数据导入导出
1)外部数据导入方法
一、➢ 不登录MySQL导入.sql文件( .sql文件一般是MySQL数据库导出的备份文件或SQL代码)
• 命令(只可在cmd中执行) :mysql -u 用户名 -p 库名 <路径 +文件名.sql
示例:mysql -u root -p test <D:\\test.sql
二、➢ 登录MySQL导入.sql文件
• 命令(只可在cmd中执行) : source 路径+ 文件名.sql
示例:source D:\\test.sql
2)外部数据导入方法
通过python导入数据,需安装sqlalchemy第三方模块
示例:
import pandas as pd
from sqlalchemy import crete_engine
#MySQL的用户: root,密码:123456, 端口:3306, 数据库: test
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
data = pd.read_csv('D:\\test.csv')
data.to_sql('test1',engine,index=False,if_exists='append')
3)内部数据导出方法
通过python导入数据,需安装sqlalchemy第三方模块
示例:
import pandas as pd
import pymysql
con = oymysql.connect(host='localhost',port=3306,user='root',password='123456',db='test',charset='utf8') #这里要注意是utf8,不是utf-8
df_data = pd.read_sql('select * from user',con)
df_data.to_csv('D:\\sc.csv')
三、基础数据类型和数据运算
1.字符串类型
类型 | 说明 |
CHAR(n) | 固定长度,最多255个字符 |
Varchar(n) | 可变长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
2.数值类型
类型 | 说明 |
tinyint(m) | 1个字节 范围(-128~127) |
smallint | 2个字节 范围(-32768~32767) |
mediumint(m) | 3个字节 范围(-8388608~8388607) |
int(m) | 4个字节 范围(-2147483648~2147483647) |
bigint(m) | 8个字节 范围(+-9.22*10的18次方) |
float(m,d) | 单精度浮点型 8位精度(4字节) m总个数,d小数位 |
double(m,d) | 双精度浮点型 16位精度(8字节) m总个数,d小数位 |
3. 日期和时间类型
类型 | 说明 |
DATE | 日期,格式:YYYY-MM-DD,例如:2022-12-12 |
TIME | 时间,格式:HH:MM:SS,例如:12:25:36 |
DATETIME | 日期时间,格式:YYYY-MM-DD HH:MM:SS,例如:2022-12-12 12:25:36 |
TIMESTAMP | 当前时间,显示格式类似DATETIME,例如:2022-12-12 12:25:36 |
MySQL中的数据类型转换
使用的主要函数是:CAST 或 CONVERT
语法:
CAST(expr AS type)、 CONVERT(expr, type) 、CONVERT(expr USING type)
示例:
SELECT CAST(3.14 AS SIGNED),CAST(3 AS DECIMAL(3,1)),CAST('3.14' AS CHAR(4)),
CONVERT('2030-08-01 12:12:12', DATETIME),
CONVERT('2030-08-01 12:12:12', DATE);
比较它们的不一样:
select DATE_FORMAT('2030-8-01 13:10:00','%y-%m-%D'),
DATE_FORMAT('2030-8-01 13:10:00','%Y-%m-%d %T'),#日期+时间
DATE_FORMAT('2030-8-01 13:10:00','%r'),#时间
DATE_FORMAT('2030-8-01 13:10:00','%h:%i:%s'),#时间
DATE_FORMAT('2030-8-01 13:10:00','%H:%i:%s');#时间
数值运算
比较运算符
运算符 | 说明 | 语法 |
IS NULL 或 ISNULL | 判断一个值是否为 NULL(空值) | a IS NULL |
IS NOT NULL | 判断一个值是否不为 NULL(空值) | a IS NOT NULL |
BETWEEN AND | 判断一个值是否落在两个值之间,包含= | a BETWEEN b AND c |
IN | 判断一个值是IN列表中的任意一个值 | a IN (a,b,c) |
NOT IN | 判断一个值不是IN列表中的任意一个值 | a NOTIN (a,b,c) |
LIKE | 通配符匹配 | a LIKE 'A%' |
regexp | 正则表达式匹配 | REGEXP '^a' |