MySQL_day 1

Content

  1. 数据库基础
  2. 数据库和数据表管理
  3. 简单查询与数据操作
  4. 备份和回复数据

数据库j经历过程:手工管理阶段>文件管理阶段>数据管理阶段

数据库的特征

  • 数据结构化
  • 实现数据共享
  • 减少数据冗余
  • 数据独立性

数据库管理系统(DBMS)

数据库类型(按数据模型特点分)

  • 网状型数据库(采用记录类型为节点的网状数据模型)
  • 层次型数据库(采用层次模型模拟现实世界中按层次组织起来的事物)
  • 关系型数据库(采用二维表结构组织和管理数据,并规定了表内和表间数据的依赖关系)

数据库基础概述

关系数据库是指一些相关的表和其他数据库对象的集合。对于关系数据库来说,关系就是表的同义词。

  • 是由行和列组成(类似二维数组的结构)
  • 包含一组命名的属性(也称字段)
  • 包含一组记录,每行包含一条记录
  • 行和列的交集称为数据项,指出了某列对应的属性在某行上的值,也称为字段值
  • 列需定义数据类型,比如整数或者字符型的数据

常见关系型数据库:

  • Oracle
  • MySQL
  • SQL Server

SQL语言主要是用来操作关系型数据库的一本语言,称之为结构化查询语句

SQL语句主要分为

  • DQL:数据查询语言,用于对数据进行查询,如select
  • DML:数据操作语言,对数据进行增加、修改、删除,如insert、update、delete
  • TPL:事务处理语言,对事物进行处理,包括begin transaction、commit、rollback
  • DCL:数据控制语言,进行授权与权限回收,如grant、revoke
  • DDL:数据定义语言,进行数据库、表的管理等,如create、drop
  • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor

MySQL的特点:

  • 使用C和C++编写,使用了多种编译器进行测试,保证源代码的可移植性
  • 全面支持SQL的group by/order by语句,聚合函数(count()、count(distinct)、avg()、std()、sum()、max()、min())可以在同一查询中混来自不同数据库的表
  • 为多种编程语言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等
  • 支持多种存储引擎

数据库的管理

连接数据库:

  • mysql-u账号-p密码-h主机地址-P端口
  • mysql-uroot-pmysql

查看数据版本

  • select version()

显示当前时间

  • select now()

查看所有数据库

  • show databases

创建数据库

  • create database 数据库名  charset=utf8

切换数据库

  • use数据库名

查看当前正在使用哪个数据库

  • select database()

删除数据库

  • drop datatbase数据库名

数据表管理-数据表设计

  • 数据表设计包括ER图、表的主键、字段、数据类型、约束、表之间关系的设计
  • E-R (Entity-Relationship) 模型 即 实体-关系模型,主要用于定义数据的存储需求,该模型已经广泛用于关系数据库设计中。E-R模型由实体、属性、和关系三个基本要素构成
  • 主键(Primary Key)数据库表要求表中的每一行记录都必须是唯一的,即在同一张表中不允许出现完全相同的两条记录。在设计数据库时,为了保证记录的“唯一性”,最为普遍、最为推荐的做法是为表定义一个主键(primary key)。主键有2个特征:1)可以由一个字段构成,也可以由多个字段构成(即复合主键);2)主键的值具有唯一性且不能取空值(NULL),当由多个字段构成时,每个字段的值不能取NULL值
  • 实体间的关系与外键(Foreign Key),比如班级实体和班主任实体之间一对一的关系,班级实体和学生实体之间为一对多的关系,学生实体和课程实体之间为多对多的关系。实体之间的关系可以通过外键来表示,如果表A中的一个字段a对应于表B的主键b,则字段a称为表A的外键。此时存储在表A中字段a的值,同时这个字段值也是表B主键b的值
  • 约束(Constraint)是定义在表上的一种强制规则。当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败,约束类型有:
约束说明
NOT NULL非空约束,指定某列的所有行数据不能包含空值
UNIQUE唯一性约束,指定列或者列的组合的所有行数据必须唯一
PRIMARY KEY主键约束,在列及引用列上建立的一种强制依赖关系
FOREIGN KEY外键约束,在列及引用列上建立的一种强制依赖关系
CHECK检查性约束,在列上指定一个必须满足的条件

数据表管理-创建表

  • 查看当前数据库中的表:show table
  • 创建表:

create table 表名(

     id int unsigned auto_increment primary key not null,

     name varchar(10)  not null,

     is_delete bit(1) not null default 0

);

  • 创建学生表

create table students(

      id int auto_increment primary key not null,

      name varchar(10) not null,

     gendar bit(1) default 0,

     hometown varchar(40) deafault ""

);

  • comment 注释,在创建表的时候如果字段很多,防止忘记字段是存什么数据的,可以给字段添加注释

create table students(

      id int auto_increment primary key not null comment '主键',

      name varchar(10) not null comment '学生姓名',

     gendar bit(1) default 0 comment ‘性别’,

     hometown varchar(40) default "" comment '家乡地址'

);

  • 查看创建表的sql语句

show create table 表名

  • 添加字段

alter table 表名 add 列名 类型;给students添加一个生日字段:

mysql>alter table students add birthday date;

  • 删除字段

alter table 表名 drop 字段名字;将students表中的gendar字段删除:

mysql>alter table students drop gendar;

  • 修改字段

1)不修改字段名,只修改类型及约束

alter table 表名 modify 列名 类型及约束;

mysql>alter table students modify hometown varchar(40) default NULL;

2)需要修改字段名字

alter table 表名 change 原名 新名 类型及约束;

mysql>alter table class change is_delete delete bit(1) NOT NULL DEFAULT b'0'; 

  • 删除表

mysql>drop table 表名;

navicat  for mysql连接不上mysql服务的原因排除:

1.确保mysql的数据库服务正确启动

2.输入的用户名和密码是否正确

3.数据是否开启远程连接【默认安装mysql数据完成后 只允许本地连接】

注意:对mysql配置文件更改完毕之后,一定要重启mysql服务,否则不会生效

基本查询语句

select * from 表名:

例:select * from students; 查询students表中的所有内容

插入数据

  • 全部插入,有多少个字段,必须插入多少个字段,即使默认可以为空的字段也要占用。主键自增也需要占位一般使用0占位

insert into 表名 values(......)

例:insert into students values(0,'韩信',0,'广州'); 在students表中插入学生信息

  • 部分插入

insert into 表名(字段1,字段2) values(值1,值2);

例:insert into students(name,gendar) values('貂蝉',1);

  • 全列多行插入,多行插入每一行的内容写在一个小括号内,用逗号分隔多行

insert into 表名 values(...),(...),(...);

例:insert into students values(0,'后羿',0,'广州'),(0,1,'广州'),(0,'嬴政',0,'广州');

  • 部分列多行插入

insert into 表名 (字段1,字段2) values (...),(...);

例:insert into students(name,gendar,hometown) values('狄仁杰',0,'深圳'),('鲁迅七号',1,’深圳'),('孙尚香',1,'深圳');

修改数据

update 表名 set 字段=xxx where 字段=xxx; 修改某一行的内容一定要加where限定条件,否则会造成全表修改,除非是想要全表修改效果

例:update students set hometown='珠海' where id=5;

删除数据

delete from 表名 where 字段=xxx;

例:delete from students where id=3;

查询指定列

select id,name from student; 指定id和name列查询

备份数据库

mysqldump -uroot -p 数据库名 > python.sql;

mysqldump -uroot -p pyhthon > python.sql

提示输入密码,mysql的密码

备份某个表直接在数据库名后面加表名

mysqldump -uroot -p 数据库名 数据表名 >  class.sql

mysqldump -uroot -p python class > class.sql

恢复数据库

mysql -uroot -p 新数据库名 < python.sql

备份数据库,转储SQL文件即可以进行数据库备份

知识小结

  • 数据库基础、SQL数据库介绍(基本了解)
  • MySQL安装(重点)
  • 数据库和数据表管理:数据库管理(E-R模型)、数据表管理、图形化界面操作数据库(Navicat)
  • 简单查询与数据操作(基本查询语句、插入数据、修改数据、删除数据)
  • 备份和恢复数据库(备份数据库、恢复数据库、图形界面备份和恢复数据库)

Practice

1.写出全列插入和部分插入的语法格式:

insert into 表名 values('值1','值2',...)  值的数量必须和列的数量一致

insert into 表名('列1','列2',...) values('值1','值2',...) 值的数量必须和列的数量一致

2.使用Navicat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JZszd511112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值