MySQL基础

数据库设计(MySQL,ORACLE)


python编程快速上手(持续更新中…)

概念

数据库概念

一些特殊格式的文件的集合

数据库作用

用来存储各种数据

数据库的使用优势

持久存储、存取效率高、支持可扩展

数据库分类和特点

关系数据库
基于关系模型建立,用二维表进行数据存储的数据

非关系数据库
mangondb.redis

数据库管理系统(DBMS)

数据文件集合
数据服务端
数据客户端

关系型数据库管理系统: RDBMS

  • SQL

    • 作用: 客户端跟服务端通信的 特殊 “语言”
    • 含义:结构化查询语言
    • 分类:
      • DQL 数据查询语言,用来查询
      • DML 数据操作语言,用来增删改查
      • DDL 数据定义语言,创建、删除
  • 数据库的核心元素

    • 数据库: 数据库系统
    • 数据表: 二维表,(行、列)
    • 记录(二维表的一行,要求数据要完整)
    • 字段(二维表的列,要求一列的数据类型要一致)
  • 数据保存的流程

    • 创建数据库 --> 创建数据表—>字段 —> 保存数据

MySQL环境搭建

  • MySQL 数据库管理系统的安装

    sudo apt-get install mysql-server
    
  • MySQL 数据库的配置

    配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf

  • MySQL 数据库操作

    • 启动:sudo service mysql start
    • 检测:ps -ajx | grep mysql
    • 重启:sudo service mysql restart
    • 停止:sudo service mysql stop
  • 客户端连接服务器(*)

    sudo apt-get install mysql-client
    
    • 图形化工具Navicat

    • 命令行连接

      • 可以看到密码

        mysql -u用户名 -p密码

        回车

      • 不可以看到密码

        mysql -u用户名 -p

        输入密码

        回车

    • 命令行退出: exit 或者 quit

数据完整性和约束

完整性的作用: 保证数据的正确性

实体完整性

主键约束:不能为空,也不能重复 primary key
唯一约束:能为空,但是不能重复 unique key

域完整性约束

非空约束: 该字段信息不能为空 not null
默认约束:这个字段可以设置默认值 default

参照完整性

外键约束: 建立表和表外键的关系 foreign key

用户定义完整性

字段的值必须是设定的范围之内 sex 男女

客户端Navicat使用

新建连接

MySQL基础_第1张图片
选择编码“utf8”,排序规则:utf8-bin,点击“确认”

创建库

MySQL基础_第2张图片

创建表

MySQL基础_第3张图片
保存,填入表名“classes”

修改表

右键,设计表

表记录操作

双击表名,输入记录

  • 添加记录
  • 删除记录
    改 双击记录

表转储

转储:表名,右键,转储sql文件
执行sql,运行SQL文件

用户

root用户,改为%,可实现远程ip访问
MySQL基础_第4张图片

数据类型

选择合适的类型保存数据,好处:
1)节省存储空间
2)提升查询效率

数值

整型:int tinyint

浮点型
float(6) double(16) decimal(M,D)
float(5,2) 总共5个数字,2位小数
精确价格选用decimal

字符串

Char(255)/varchar(65535)/tinytext(255)/text(65535)
/mediumtext(16777215)/longtext(49838332323)

char与varchar区别
Char长度固定

Utf8 占3个字符

字符串选择
能用varchar不用text

枚举

Enum最多65535

时间类型

date 年月日
datetime 年月日时分秒 1000年 5字节
timestamp 年月日时分秒 1970年 4字节

SQL命令

登录与退出数据库

cmd

mysql -uroot -p

root

查询版本号

select version();

当前时间

select now

数据库操作

show databases; 查看数据库

create database 数据库名;

drop database数据库名;

use 数据库名;

select database(); 显示当前数据库

show create database 数据库名称 显示建表语句

创建数据库
create database python1 charset=utf8;

表结构创建(DDL)

show tables; 查看表

创建表

create table classes(
        id int unsigned primary key auto_increment,
        name varchar(10) not null,
        num tinyint

        );
 create table students(
        id int unsigned primary key auto_increment,
        name varchar(20) not null,
        age tinyint(1) ,
        high decimal(3,2),
        gender enum("男","女","妖"),
        cls_id int unsigned

        );

查看表结构
desc classes;

查看创表语句+格式化
show create table students \G:

表结构修改(DDL)

增加生日表
alter table students add bithday datetime;

重命名
alter table students change bithday birthday datetime;

修改类型
alter table students modify birthday date not null;

删除字段
alter table students drop birthday;

删除表
drop table students

表数据操作-增删改查

set character_set_client=gbk;
set character_set_results=gbk;

查询select
查询所有
select * from classes
select * from students

条件where
select * from students where name=‘二狗子’;

别名as, 不加引号
select id as ‘编号’, name as ‘名称’ from students where name=‘二狗子’;

插入记录insert
insert into classes values(1,‘python20’,78);

自增长,可以忽略
insert into classes values(null,‘python21’,78);
insert into students values(null, ‘司马二狗’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’);

列名
insert into students(id, name) values(null, ‘狗胜’);

多行
insert into students values(null, ‘二狗子’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’), (null, ‘二狗子’, 18, 1.78, ‘妖’, 1, ‘2001-12-12’),(null, ‘狗蛋’, 18, 1.78, ‘男’, 1, ‘2001-12-12’),(null, ‘狗杂种’, 18, 1.78, ‘女’, 1, ‘2001-12-12’);

修改update
update students set age=28;

条件
update students set age=28 where name=‘狗杂种’;
多字段
update students set age=19,gender='男’where name=‘二狗子’;

逻辑删除
alter table students add is_delete bit default 0;

update students set is_delete = 1 where id = 3;

数据库备份与恢复

导出库:(需要管理员身份运行cmd)
mysqldump -uroot -p python1 > d:\python1 .sql

导入表(先删除库,再创建python1库)
mysql -uroot –p python1 < d:\students.sql

Navicat再次刷新,可见

你可能感兴趣的:(db,mysql,数据库,redis)