数据库之mysql的教程

Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

在本教程中,会让大家快速掌握Mysql的基本知识,并轻松使用Mysql数据库。

什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,

每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

RDBMS 术语

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

  • 数据库: 数据库是一些关联表的集合。.
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

~~~~

1. 什么是MySQL #

  • MySQL是一个开源的关系型数据库管理系统
  • 数据库是指用特定方式存储数据的仓库
  • 关系型是指数据库中的各种实体之间可以建立关系

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • Mysql是开源的,所以你不需要支付额外的费用。
  • Mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL使用标准的SQL数据语言形式。
  • Mysql可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
  • Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
  • MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
  • Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

2. RDBMS术语 #

  • 数据库: 数据库是一些关联的表的组成的集合。
  • 数据表: 表是数据的载体。在一个数据库中的表看起来像一个简单的excel表格。
  • 列: 一列包含了相同类型的数据, 例如用户表中的用户名。
  • 行:一行是一组列组合成的数据,例如一条用户的数据。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表

3. 官方下载 MySQL #

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

4. 云盘下载MySQL #

http://pan.baidu.com/s/1pLf6B7X#path=%252Fmysql

4.1 双击MSI安装文件 #

2. 同意许可协议 #


#

3. 典型安装是安装服务器和客户端 #


#

4. 开始安装,安装完成后还有广告也可以忽略 #


#

5. 可以立即可以配置服务 #


#

6. 开始配置向导 #


#

7. 执行典型配置 #


#

8. 配置mysql实例 #


#

9. 修改安全设置 #


#

10. 开始执行配置 #


#

11. 配置成功 #


#

12. 查看服务配置 #



[/magic]
[slide]

##mac安装

  1. 先安装 homebrew
    http://brew.sh/

  2. 安装mysql

    brew install mysql

[slide]

[magic]

1. 双击MSI安装文件 #

#

2. 同意许可协议 #

[slide]

##windows停止启动mysql

[magic data-transition=”cover-circle”] #

##1. 通过服务界面启动

#

##2. 通过命令行启动 #

net stop mysql 停止mysql
net start mysql 启动mysql


[/magic]

[slide]

##mac停止启动mysql

service stop mysql 停止mysql
service start mysql 启动mysql

[slide]

##mysql登录
使用root用户以123456密码登陆本机上的mysql服务器

mysql -uroot -p123456 -h127.0.0.1 登录
//如果你想允许用户root从ip为192.168.1.3的主机连接到mysql服务器,访问studb数据库的所有表,并使用123456作为密码 
GRANT ALL PRIVILEGES ON studb.* TO 'root'@'192.168.1.3' IDENTIFIED BY '123456' WITH GRANT OPTION;
//如果想远程访问需要打开 /etc/mysql/my.cnf 注释掉 #bind-address        = 127.0.0.1

参数说明 #

命令 参数 描述
mysql -u 用户名
mysql -p 密码
mysql -h 指定服务器的IP
mysql -V 输出版本号并退出

[slide]

##mysql退出

exit;
quit;
\q

[slide]

#mysql语句规范

  • 关键字与函数名称全部大写
  • 数据库名称表名称字段名称全部小写
  • SQL语句必须以分号结尾

[slide]

#数据库语句
|功能|语句|示例|
|:—-|:—-|:—-|
|创建数据库|CREATE DATABASE db_name CHARACTER SET charname |create database studb CHARACTER SET utf8|
|查看当前数据库|SHOW DATABASES|show databases|
|删除数据库|DROP DATABASE db_name|drop database studb|

[slide]

#数据类型

选择最合理最合适的数据类型 #

数据类型 说明
INT 整数
FLOAT 浮点数
DATETIME 日期日期型
DATE 日期日期型
CHAR(M) 定长字符类型
VARCHAR(M) 不定长字符类型

[slide]

#数据表操作

表是一个二维的表格,行称为记录,列称为字段 #

功能 语句 示例
打开数据库 USE db_name use studb
创建表 CREATE TABLE table_name(column_name data_type,…) CREATE TABLE student(id int identify,name varchar(20),age int)
查看数据表 SHOW TABLES show tables
查看表结构 SHOW COLUMNS FROM tbl_name show columns from student

[slide]

#行记录操作 #

功能 语句 示例
插入记录 INSERT INTO tbl_name[(col_names…)] values (val…) insert into student(name,age) values(‘张静’,18)
查询记录 SELECT expr… FROM tbl_name select * from student

[slide]

#列级约束 #

语法 说明
AUTO_INCREMENT 自动递增 自动编号,且必须与主键组合使用,数据类型,起始值为1,每次增量为1
PRIMARY KEY 主键约束 每张表只能存在一个主键,主键保证记录的唯一性,主键自动为NOT NULL
FOREIGN KEY 外键约束 保持数据一致性,实现一对一或一对多的关系

[slide]

#记录操作 #

功能 语句 示例
插入记录 INSERT INTO tbl_name[(col_names…)] values (val…) insert into student(name,age) values(‘张静’,18)
更新记录 UPDATE tbl_name SET col_name1=expr1,col_name2=exp2 WHERE where_condition update student where age = age+1
删除记录 DELETE tbl_name where where_condition delete from student where age < 20

[slide]

#SELECT查询

SELECT select_expr 查询表达式,列以英文逗号分隔,星号表示所有列
[
  FROM tbl_name  要查询的表
  WHERE where_condition 条件表达式,对记录进行过滤,如果不指定WHERE则查询所有记录
  GROUP BY col_name [ASC|DESC] 以哪列作为分组
  HAVING group_condition 对分组后的结果进行过滤
  ORDER BY col_name [ASC|DESC] 按哪些列进行排序
  LIMIT offset,row_count 从哪条开始查询,查询多少条
]

[slide]

#数据准备

##学生表

student (id 主键,name 名称) #

id name
1 张三
2 李四

##课程表

course (id 主键,name 名称) #

id name
1 语文
2 数学
3 英语

##成绩表

score(cid 科目名称,sid 学生ID,score 成绩) #

cid sid score
1 1 70
1 2 70
1 3 70
2 1 80
2 2 80
2 3 80

[slide]

##练习题

  1. 查询全班的语文平均分
  2. 查询每个学生的平均成绩
  3. 按总分进行全班排名
    [note]
  4. select student.name,avg(score.score) from score inner join course on score.cid = course.id
    inner join student on score.sid = student.id
    group by score.sid,student.name
  5. select avg(score.score) from score inner join course on score.cid = course.id ;
    3.
    select student.name,avg(score.score) from score inner join course on score.cid = course.id
    inner join student on score.sid = student.id
    group by score.sid,student.name
    having sum(score.score)>60
    order by sum(score.score) desc
    [/note]

~~~

未经允许不得转载:WEB前端开发 » 数据库之mysql的教程

赞 (0)