MySQL数据库

MySQL数据库

数据库简介

  • 数据库说到底就是一个文件,就像一个Excel文件
    • 列 =====> 字段,能够 唯一 标记某个字段:这就是 主键
    • 行 =====> 记录

RDBMS

  • 相当于一个程序,用来管理数据库的

  • 当前主要使用的两种类型的数据库:关系型数据库非关系型数据库

    • 关系型数据库:

      mysql:一般用作于网站

      redis:一般用作与缓存

    • 非关系型数据库:

      mongodb:一般用作于爬虫

  • RDBMS数据库的关系

  • SQL 为一种用来操作RDBMS的数据库语言,也是要重点理解!

SQL

  • SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,可以用 SQL语句 完成对数据库的 增删查改
  • SQL 是一门特殊的语言,专门用来操作关系数据库
  • 不区分大小写

MySQL

  • MySQL是一个关系型数据库管理系统
  • 开源 免费 不要钱 使用范围广,跨平台支持性好,提供了多种语言调用的 API
MySQL 安装
  • 服务端

    sudo apt-get install mysql-server  # 安装
    sudo service mysql start  # 启动
    ps ajx|grep mysql  # 查看是否存在mysql服务
    sudo service mysql stop  # 停止
    sudo service mysql restart  # 重启
    
  • 客户端

    • 图形化界面的客户端 : Navicat (可去官网下载对应版本)

    • 命令行客户端(最主要)

      sudo apt-get install mysql-client  # 安装
      sudo mysql -uroot -pmysql  #  链接数据库
      quit/exit/ctrl+d  # 退出
      
数据
  • 数据类型

    • 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间

    • 常用数据类型如下:

      • 整数:int,bit
      • 小数:decimal
      • 字符串:varchar,char
      • 日期时间: date, time, datetime
      • 枚举类型(enum)
    • 特别说明的类型如下:

      • decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
      • char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为'ab '
      • varchar表示可变长度的字符串,如varchar(3),填充’ab’时就会存储’ab’
      • 字符串text表示存储大文本,当字符大于4000时推荐使用
      • 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
    • 数值类型

      类型字节大小有符号范围(Signed)无符号范围(Unsigned)
      TINYINT1-128 ~ 1270 ~ 255
      SMALLINT2-32768 ~ 327670 ~ 65535
      MEDIUMINT3-8388608 ~ 83886070 ~ 16777215
      INT/INTEGER4-2147483648 ~21474836470 ~ 4294967295
      BIGINT8-9223372036854775808 ~ 92233720368547758070 ~ 18446744073709551615
    • 字符串

      类型字节大小示例
      CHAR0-255类型:char(3) 输入 'ab', 实际存储为'ab ', 输入'abcd' 实际存储为 'abc'
      VARCHAR0-255类型:varchar(3)'ab',实际存储为'ab', 输入'abcd',实际存储为’abc’
      TEXT0-65535大文本
    • 日期时间类型

      类型字节大小示例
      DATE4‘2020-01-01’
      TIME3‘12:29:59’
      DATETIME8‘2020-01-01 12:29:59’
      YEAR1‘2017’
      TIMESTAMP4‘1970-01-01 00:00:01’ UTC ~ ‘2038-01-01 00:00:01’ UTC
  • 约束

    • 主键primary key:物理上存储的顺序
    • 非空not null:此字段不允许填写空值
    • 惟一unique:此字段的值不允许重复
    • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
    • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
    • 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制
数据库的基本使用
-- 数据库操作
	-- 链接数据库
	mysql -uroot -p  -- 需密码
	mysql -uroot -pmysql  -- 不需密码

	-- 退出数据库
	exit/quit/ctrl+d

	-- sql语句最后需要有分号;结尾
	-- 显示数据库版本
	select version();

	-- 显示时间
	select now();

	-- 查看所有数据库
	show database-- 创建数据库
	--create database 数据库名 charset=utf8;
	create database python04 charset=utf8;

	-- 查看创建数据库的语句
	show carte database ....

	-- 查看当前使用的数据库

	-- 使用数据库
	use 数据库的名字

	-- 删除数据库
	-- drop database 数据库名;
	drop database python04;


-- 数据表的操作
	-- 查看当前数据库中所有表
	show tables;

	-- 创建表
	-- auto_increment表示自动增长
	-- not null 表示不能为空
	-- primary key 表示主键
	-- default 默认值
	-- create table 数据表名字(字段 类型 约束[, 字段 类型 约束]);
	-- 创建classes表(id, name)
	create table xxxx(id int, name varchar(30));
	create table yyyy(
		id int primary key not null auto_increment,
		name varchar(30)
		);

	--查看表结构
	-- desc 数据表结构名字;
	desc xxxx;

	-- 创建students表(id, name, age, hight, gender, cls_id)
	create table students(
		id int unsigned not null auto_increment primary key,
		name varchar(30),
		age tinyint unsigned default 0,
		hight decimal(5,2),
		gender enum("男", "女", "保密") default "保密",
		cls_id int unsigned);

	-- 查看表创建的语句
	show create table 表名字;

	-- 修改表-添加字段
	alter table 表名 add 列名 类型;

	-- 修改表-修改字段:不重命名版
	alter table 表名 modify 列名 类型及约束;

	-- 修改表-修改字段:重命名
	alter table 表名 change 原名 新名 类型及约束;

	-- 修改表-删除字段
	alter table 表名 drop 列明;

	-- 删除表
	drop table 表名;
	drop database 数据库名;


-- 增删改查
	-- 增加
		--全列插入
		--insert [into] 表名 value(...);
		-- 主键字段 可以用 0 null  default 来占位
		-- 例:向students 表中插入 一个学生信息
		insert into students values(0, "小明", 20, "男", "1997-09-01");

		-- 部分插入
		--insert into 表名(列1,...) values(值1,....);
		insert into students(name, gender) values("小明", 1);
			-- 枚举中的下表值从1开始,即此处的 1 为 男

		-- 多行插入
		insert into students(name, gender) values("小明", 1),("小红", 2);
		insert into students values(0, "小明", 20, 1, "1997-09-01"),(0.....);

	-- 删除
		-- 物理删除
		delete from students;  -- 整个数据表中的所有数据全部删除(慎用!!!)
		delete from students where name="xxx"

		-- 逻辑删除
		-- 用一个字段来表示,这条信息表中的所有数据全部删除
		-- 给students表添加一个 is_delete字段 bit类型
		alter table students add is_delete bit default 0;
		update students set is_delete=1 where id=0;

	-- 修改
		--update 表名 set 列1=值1,列2=值2,... where 条件;
		update students set gender=1;  -- 全改
		update students set gender=1 where id=3; --只改id=3的

	-- 查询
		-- 查询所有列
		--select * from 表名;
		select * from students;
		select * from students where name = "xx";  --条件查询

		-- 查询指定列
		-- select 列1,列2,... from 表名;
		select name, gender from students;

		-- 可以使用as为列或表指定别名
		-- select 字段[as 别名], 字段[as 别名] from 数据表 where ...;
		select name as 姓名,gender as 性别 from students;  -- 哪个在前面就先显示谁
备份
mysqldump –uroot –p 数据库名 > python.sql;

# 按提示输入mysql的密码
恢复
  • 链接 mysql,创建新的数据库
  • 退出连接,执行如下命令
mysql -uroot –p 新数据库名 < python.sql

# 根据提示输入mysql密码

END…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值