MySQL数据库

一.数据库概念

1.数据库类型

关系数据库:MySQL,Oracle

非关系数据库:NoSQL,MongoDB,CouchDB

2.数据库模型

  • 对象模型
  • 层次模型(轻量级数据访问协议)
  • 网状模型(大型数据存储)
  • 关系模型
  • 面向对象模型
  • 半结构化模型
  • 平面模型(表格模型,一般形式上是一个二维数组,如表格型数据Excel)

3.数据库架构

大致区分为三个概括层次:内层,概念层和外层。

  • 内层:最接近实际存储体,有关数据的实际存储关系。
  • 外层:最近接近用户,有关个别用户观看数据的方式。
  • 概念层:介于两者之间的间接层

4.数据库操作:事务

事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分割的工作单位。事务的ACID特性:

  • 基元性(atiomicity)
  • 一致性(consistency)
  • 隔离性(isolation)
  • 持续性(durability)

事务的并发性是指多个事务的并行操作轮流交叉运行,事务的并发可能会访问和存储 不正确的数据,破坏交易的隔离性和数据库的一致性。

网状数据模型的数据结构 网状模型 满足下面两个条件的基本层次联系的集合为网状模型:

  1. 允许一个以上的节点无双亲。
  2. 一个节点可以有多于一个的双亲。

二.关系型数据库

1.如何使用终端操作数据库?

1).如何登陆数据库服务器?

mac:~ lyt$ mysql -uroot -p123456

2).如何查询数据库服务器中所有的数据库?

mysql> shoa databases;

3).如何选中某一个数据库进行操作?

未选中数据库报错:No database selected

退出服务器命令:mysql> exit;

在服务器中创建数据库:create database 数据库名pet;

选中服务器:use 数据库名;

查看数据库中所有的数据表:show table;

创建数据表:CREATE TABLE 数据表名 (name VARCHAR(20),species VARCHAR(20), sex CHAR(1), birth DATE, death DATE) {注:=>数据字段 数据类型}

查看数据表是否创建成功:show tables;

查看创建好的数据表的结构:describe 数据库名pet;

查看数据表中的记录:select * from 数据库名per;

往数据表中添加数据:mysql> INSERT INTO 数据库名pet;-> VALUE ('hello','2000-12-13',NULL);

再此查询数据表:select * fron 数据库名pet;

再次插入数据表:

INSERT INTO pet

VALUES('name01','owner01','species01','boy','birtf',NULL);

4).mysql常用数据类型有哪些?

MySQl支持多种类型,大致分为三类:数值,日期/时间和字符串类型。

数值类型:

MySQL数据库_第1张图片

日期和时间类型:

MySQL数据库_第2张图片

字符串类型:

MySQL数据库_第3张图片

5).数据类型如何选择?

日期选择按照格式

数值和字符串按照大小

6).如何删除数据?

删除name01数据:delete from 数据库名pet where name='name01'; 

7).如何修改数据?

修改name01为name02:update 数据库名pet set name='name02' where owner='owner01'

8).总结:数据记录的增删改查操作

  • 增加:insert
  • 删除:delete
  • 修改:update
  • 查询:select

2.mysql建表约束

1).主键约束

能够唯一确定一张表中的一条记录,也就是通过给某个字段添加约束就可以是的该字段不重复且不为空。

create table user( 创建user表

        id int primary key, 创建主键为id的user表

        name varchar(20)

);

出现主键重复报错:

insert into user values(1,'张三')

Dup;icate enter '1'for key 'PRIMARY'

出现主键为空报错:

insert into user values(NULL,'张三')

Column 'id' cannot br null

联合主键:

只要联合组件加起来不重复就可以,每个字段都不能为空

create table user2(

        id int,

        name varchar(20),

        password narchar(20),

        parimary key(id,name) id和name为联合主键

)

insert into user2 values(1,'张三','123')

insert into user2 values(2,'张三','123')

2).自增约束

自增约束和主键约束一起使用,自动填充未传入主键。

create table user3(

        id int primary key auto_incerment, 主键为auto_incerment

        name varchar(20)

);

insert into user3 (name) values ('张三') 插入name为张三的字段

select* from user3;  查询输出:id:1,name:张三

insert into user3 (name) values ('张三') 再次插入name为张三的字段select* from user3;  查询输出:id:2,name:张三

如果在建表的时候忘记创建主键约束,该怎么办?

create table user4(

        id int, 没有创建主键

        name varchar(20)

);

修改表结构,添加主键元素:alter table user4 add primarykey(id);

修改表结构,删除主键元素:alter table user4 drop primary key;

室友modify修改字段,添加主键元素:alter table user4 modify id int primary key;

3).唯一约束

唯一约束:约束修饰的字段的值不可以重复

create table user5(

        id init,

        name varchar(20)

);

修改表结构给name字段添加唯一约束:

name的key值为UNI:alter table user5 add unique(name)

insert into user5 values(1,'张三')

insert into user5 values(2,'张三')

UIN出现重复报错:Duplicate entery '张三' for key 'name'

create table user5(

        id init,

        name varchar(20)

);

建表时直接设置唯一约束:

create table user6(

        id init,

        name varchar(20) unique

);

create table user7(

        id init,

        name varchar(20),

        unique(name)

);

联合唯一约束:

create table user8(

        id init,

        name varchar(20),

        unique(id,name)

);

desc user8;输出id和name的key值为MUL,多个元素唯一约束时,key为MUL

联合唯一约束组合在一起不重复

insert into user8 values(1,'张三')

insert into user8 values(2,'张三')

4).外键约束 

5).非空约束

6).默认约束

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