mysql基础

 一、MySQL概述

1、什么是数据库 ?

 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库

2、什么是 MySQL、Oracle、SQLite、Access、MS SQLServer等?

 答:他们均是一个软件,都有两个主要的功能:

a. 将数据保存到文件或内存

b. 接收特定的命令,然后对文件进行相应的操作

3、什么是SQL ?

 答:MySQL等软件可以接受命令,并做出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是是SQL语句。

 

二、MySQL安装

 

     MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

 

想要使用MySQL来存储并操作数据,则需要做几件事情:

  a. 安装MySQL服务端

  b. 安装MySQL客户端

  b. 【客户端】连接【服务端】

  c. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)

 

 

 

复制代码

    下载

          http://dev.mysql.com/downloads/mysql/   

    安装

        windows:            

             http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html

 

         linux:

               yum install mysql-server

          mac:

              

一直点下一步

复制代码

 

 

客户端连接

 

复制代码

 连接:

     1、mysql管理人默认为root,没有设置密码则直接登录

               mysql -h host -u root  -p 不用输入密码按回车自动进入

     2、如果想设置mysql密码

               mysqladmin -u root password123456

     3、如果你的root现在有密码了(123456),那么修改密码为abcdef的命令是:

              mysqladmin -u root -p passwordabcdef

 退出:

      QUIT 或者 Control+D

复制代码

三、数据库基础

 

 分为两大部分:

 

 1、数据库和表的创建;

 

  2、数据库和表内容的操作

 

1、数据库和表的创建

     (一)数据库的创建

1、显示数据库

1 SHOW DATABASES;

 默认数据库:

        mysql - 用户权限相关数据

      test - 用于用户测试数据

      information_schema - MySQL本身架构相关数据

 

  1.2、创建数据库

 

  #utf-8

 CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

  #gbk

 CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

  1.3、打开数据库

 

  USEdb_name;

  注:每次使用数据库必须打开相应数据库

显示当前使用的数据库中所有表:SHOW TABLES;

 

(二)数据表的创建

 

 显示数据表

 

show tables;

创建数据表

 

create table 表名(

    列名  类型  是否可以为空,

    列名  类型  是否可以为空

)ENGINE=InnoDB DEFAULT CHARSET=utf8

 

 

 设置是否为空

 设置默认值

 设置自增

 设置主键

 设置外键

主键与外键关系(非常重要)

 

删除表

 

drop table 表名

清空表

 

delete from 表名

truncate table 表名

基本数据类型

 

MySQL的数据类型大致分为:数值、时间和字符串

数据表关系

 

关联映射:一对多/多对一

存在最普遍的映射关系,简单来讲就如球员与球队的关系;

一对多:从球队角度来说一个球队拥有多个球员即为一对多

多对一:从球员角度来说多个球员属于一个球队即为多对一

关联映射:一对一

 

一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。

 

数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。

一对一外键关联:

 

一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系

 

关联映射:多对多

 

多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。

 

数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多

 

数据表之间的约束

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

 

MYSQL中,常用的几种约束:

 

 

 

===================================================

 

主键(PRIMARY KEY)是用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要。主键要求这一行的数据不能有重复且不能为空。

 

 还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识

 

===================================================

 

默认值约束(DEFAULT)规定,当有DEFAULT约束的列,插入数据为空时该怎么办。

 

DEFAULT约束只会在使用INSERT语句(上一实验介绍过)时体现出来,INSERT语句中,如果被DEFAULT约束的位置没有值,那么这个位置将会被DEFAULT的值填充

 

===================================================

 

唯一约束(UNIQUE)比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。

 

当INSERT语句新插入的数据和已有数据重复的时候,如果有UNIQUE约束,则INSERT失败.

 

===================================================

 

外键(FOREIGN KEY)既能确保数据完整性,也能表现表之间的关系。

 

一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

 

在INSERT时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列(department表的dpt_name)中没有dpt3,则INSERT失败

 

===================================================

 

非空约束(NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空。

 

在MySQL中违反非空约束,不会报错,只会有警告.

 

 例子

2、数据库和表内容的操作(增、删、改、查)

 

 1、增

 

insert into 表 (列名,列名...) values(值,值,值...)

insert into 表 (列名,列名...) values(值,值,值...),(值,值,值...)

insert into 表 (列名,列名...) select(列名,列名...) from 表

2、删

 

delete from 表

delete from 表 where id=1 and name='alex'

3、改

 

update 表 set name = 'alex'where id>1

4、查

 

普通查询

 

select * from 表

select * from 表 where id> 1

select nid,name,gender as gg from 表 where id> 1

 更多选项查询

 4.2、数据排序(查询)

 

排序

   select * from 表 order by 列 asc              - 根据 “列” 从小到大排列

   select * from 表 order by 列 desc             - 根据 “列” 从大到小排列

   select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序

模糊查询

 

通配符(模糊查询)

   select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)

   select * from 表 where name like 'ale_'  - ale开头的所有(一个字符

 

你可能感兴趣的:(mysql基础)