一、数据库概述

1.数据库的组织结构

     (1)数据库就是用来存放信息的仓库。

     (2)数据库里的数据集合都存放在数据表(table)里。

     (3)数据表由数据行(row)和数据列(column)构成。

     (4)一个数据行就是数据表里的一条记录。

 

二、数据库设计的三大范式

     为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。

 

1.第一范式(确保每列保持原子性)

     如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式。
     例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。

 

2.第二范式(确保表中的每列都与主键相关)

     如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式。
例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。

 

3.第三范式(属性不依赖于其它非主属性,消除传递依赖)

     简而言之,第三范式就是属性不依赖于其它非主属性。

 

三、数据库基本操作

 

1.创建表

格式: create table tb_name(column_specs);

     tb_name: 数据表名字。

     column_specs: 数据表各个数据以及各种索引(如果有的话)。

CREATE TABLE president
(
last_name VARCHAR(15) NOT NULL,
first_name VARCHAR(15) NOT NULL,
city VARCHAR(20) NOT NULL,
state VARCHAR(2) NOT NULL,
birth DATE NOT NULL
);

 

2.查看表结构

格式:  describe tb_name;desc tb_name;

DESCRIBE president;

结果:

 

3.添加数据

(1)一次性的列出全部数据的值

    格式: insert into tb_name values(...)

     关键字values后面的括号必须为数据表全体数据列准备好对应的值,这些值的顺序也表存储的顺序一致。

     还可以一次性插入多个数据行,格式如下。

    格式: insert into tb_name values(...),(...),...;

INSERT INTO president VALUES('Tom','A','China','Bj','1992-10-30');
INSERT INTO president VALUES('Jerry','B','China','SH','1991-10-31'),('Li','B','China','BJ','1991-11-11');

结果:

 

(2)给出数据列的名字再列出它的值

     这种适合与只有少数几个数据列需要有初始值的情况。

     格式: insert into tb_name (name1,name2,...) values (value1,value2,...);

 

4.查询数据

 

(1)推荐明确指定列名

     格式: select column_1,column_2,... from tb_name;    

     使用'*'来无条件的地获取所有列数据,当然简单,但是会产生几个问题。如果针对拥有很多列的表情况,那些不需要的列就会浪费很多内存。

SELECT last_name,city,birth FROM president;

结果:

 

(2)条件检索

     如果想获取与特定条件一致的记录必须使用where语句。

SELECT last_name,city,birth FROM president WHERE birth >= '1991/10/31';

 

(3)模糊检索

     模糊检索就是以列中是否有指定字符串为条件的检索。

SELECT last_name,city,birth FROM president WHERE last_name LIKE 'T%';

     T%: 代表以T开头的所有字符串。

     %T: 代表以T结尾的所有字符串。

     %T%: 代表所有包含T的所有字符串。

 

(4)NULL条件

     不是使用=运算符,必须得使用 is。

SELECT last_name,city,birth FROM president WHERE birth IS NULL;

结果:

 

(5)多个条件表达式

     AND运算符是左右都为True返回True。

     OR运算符是只要有一个为True时返回True。

     NOT: 求反值的运算符。

运算符的优先级: NOT---AND---OR

所以应该这样写。

SELECT name,birth,sex FROM customer WHERE (birth<= '1976-01-01' OR birth >= '1980-01-01' ) AND sex='1';

 

(6)结果排序

    使用order by语句进行数据的排序。

 

(7)取得指定区间的

SELECT name, age,address FROM person LIMIT 2;

结果:

     limit 2: 是从开始取出两个数据。要取出2、3行数据,使用limit 1,2。即[开始位置,数量],开始位置从0开始。

SELECT name, age,address FROM person LIMIT 1,2;

结果:

    原则上limit语句是要与order by语句同时使用的,如果没有指定排序方式,数据库就会按照随机的顺序将数据取出。

 

(7)数据分组

     group by通常与统计函数一起使用。

我想列出每个部门最高薪水的结果。
SELECT dep,MAX(salary) AS MaxSalary FROM person GROUP BY dep;

结果:

MySQL学习笔记(一)—数据库基础的更多相关文章

  1. MySQL学习笔记01_数据库基础知识

    01_1 mysql数据库启动与停止 以<管理员权限>启动cmd: 输入net stop mysql停止mysql服务: 输入net start mysql启动mysql服务: 输入mys ...

  2. SQL学习笔记之 数据库基础(一)

    数据库基础 数据库系统的组成:由数据库,数据库管理软件,数据库管理员DBA,支持数据库系统的硬件和软件组成,其中数据库管理员是对数据库进行规划.设计.维护.和监视的专业管理人员,在数据库系统中起着非常 ...

  3. MySQL学习笔记02_数据库和表的基本操作

    02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...

  4. MySQL学习笔记_8_SQL语言基础复习

    SQL语言基础复习 一.概述 SQL语句注释方式 1)以"#"开头直到行尾的所有内容都是注释 2)以"--"(--后还有一个空格)开头直到行尾的所有内容都是注释 ...

  5. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  6. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

  7. MySQL学习笔记-数据库文件

    数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...

  8. MySQL学习笔记-数据库内存

    数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...

  9. MySQL学习笔记-数据库后台线程

    数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...

随机推荐

  1. Angular.js之内置过滤器学习笔记

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. EWS 通过SubscribeToPullNotifications订阅Exchange新邮件提醒

    摘要 在ews中提供了一种拉通知的方式获取服务端邮件的操作,通过这种方式客户端可以订阅该通知,在邮箱有变化的时候,可以收到通知. 工作方式 EWS 通知是在订阅的基础上处理的.通常是一个订阅每个邮箱, ...

  3. DIV+CSS布局命名规范

    一.命名规则说明 1).所有的命名最好都小写2).属性的值一定要用双引号("")括起来,且一定要有值如class="divcss5",id="divc ...

  4. 免费的ERP真的那么可怕?请少一些偏见!

    为什么说这个话题,因为看到了太多关于对免费ERP的偏见,也许这也只是那些卖软件的营销策略:从事这个行业的人,应该能看出其中的端倪,但是对于吃瓜群众来说,那就真是误导了... 所以今天发表下自己的看法, ...

  5. maven springmvc启动问题

    1.环境 SpringMVC + Maven + mybatis 2.报错提示 严重: Error configuring application listener of class org.spri ...

  6. HTM5新手学习的一些日常总结,相互交流和相互学习。

    第一天 一.HTML--网页的源码(超文本标签语言) HTML标签 标签式是HTML最基本单位和最重要的组成. 使<和>扩起来 标签都是闭合的(规范) HTML标签属性 是标签的一部分,用 ...

  7. server error in '/' applecation----Compiler Error Message: CS0016: Could not write to output file 'c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\xx' -- 'Access is denied

    今天在阿里云虚拟机上部署新站点后出现下面的错误:server error in '/' applecation Compiler Error Message: CS0016: Could not wr ...

  8. 有个程序猿要去当CEO了:(一)事情始末

    事情大概是这样的: 去年年底,我从原公司离职,原因大概是公司绩效不好,呆着也没意思. 后来听说,年终结算遣散了所有人. 今年年初的时候,前老板又找上我,说希望能和我再合作. 起先是想分我一部分干股,让 ...

  9. Android Handler消息机制不完全解析

    1.Handler的作用 Android开发中,我们经常使用Handler进行页面的更新.例如我们需要在一个下载任务完成后,去更新我们的UI效果,因为AndroidUI操作不是线程安全的,也就意味着我 ...

  10. 腾讯.NET面试题

    在整个面试过程中,作为面试者的你,角色就是小怪兽,面试官的角色则是奥特曼,更不幸的是,作为小怪兽的你是孤身一人,而奥特曼却往往有好几个~ 以下是网友发的关于腾讯的.NET面试题,不得不说还是有一定的难 ...