MySQL基础

什么是MySQL?

MySQL是数据库管理系统,能够帮助你管理关系型数据库,并且是开源的,意味着这是免费的,如果必要,你可以修改源代码。

尽管MySQL是开源软件,你需要买社区版才能得到专项服务。

MySQL 对比Oracle和 SQL server 有非常大的优势。.

  • MySQL 可以在几乎所有平台上运营UNIX, Linux, Windows,小到你可以安装服务器在自己的pc中,而且,可靠,可拓展,运行速度飞快。
  • 如果你开发web或者webapp,mysql 是明智的选择,因为他拥有LAMP堆栈, 包含Linux, Apache, MySQL, 和 PHP。

市面上有很多种数据库

  • MySQL

  • SQL Server
    SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。
    目前最新版本是SQL Server 2005,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
    SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。

  • Oracle
    提起数据库,第一个想到的公司,一般都会是Oracle(甲骨文)。该公司成立于1977年,最初是一家专门开发数据库的公司。Oracle在数据库领域一直处于领先地位。 1984年,首先将关系数据库转到了桌面计算机上。然后,Oracle5率先推出了分布式数据库、客户/服务器结构等崭新的概念。Oracle 6首创行锁定模式以及对称多处理计算机的支持……最新的Oracle 8主要增加了对象技术,成为关系—对象数据库系统。目前,Oracle产品覆盖了大、中、小型机等几十种机型,Oracle数据库成为世界上使用最广泛的关系数据系统之一。
    Oracle数据库产品具有以下优良特性:
    兼容性 可移植性 可联结性 高生产率 开放性

  • Sybase
    *1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。Sybase主要有三种版本:一是UNIX操作系统下运行的版本; 二是Novell Netware环境下运行的版本;三是Windows NT环境下运行的版本。对UNIX操作系统,目前应用最广泛的是SYBASE 10及SYABSE 11 for SCO UNIX。
    Sybase数据库的特点:
    (1)它是基于客户/服务器体系结构的数据库。
    (2)它是真正开放的数据库。
    (3)它是一种高性能的数据库。

如何创建数据库?

create database 数据库名 ;
在这里插入图片描述
查看我们创建的数据库是否存在
show databases;这个语句是查看所有的数据库
在这里插入图片描述
如何删除一个数据库?
drop database 数据库名;
在这里插入图片描述
可以看见数据库已经被删掉了

MySQL里表的创建、字段的创建

创建表

建好了数据库,我们选择一个数据库,来对它进行表的相关操作。表是数据在数据库中一种逻辑上的存储形式,和常见的电子表格类似,其中每一行代表一个记录(可以理解成一个数据对象),而记录的每一列代表一个字段(其实你可以理解成数据对象的属性)。
表的基本操作有创建,查看,删除,修改4种基本操作。
建表:
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,

)

 create table student(
     sno varchar(10),
     sname varchar(10)
  );

这是一个学生表,这个表里一共就有两个字段,一个是学号,一个是学生的姓名
查看表:
show tables;
这个语句会将你所在数据库中的所有表显示出来
在这里插入图片描述
这里就显示出了我们的学生表

为了进一步详细的显示我们这个表中的信息,可以用到以下语句:
desc 表名
在这里插入图片描述
这个会将表中的字段,以及字段的类型等等都显示出来
删除表
drop table table_name语句用来删除表,其中"table_name"是表名。
修改表:
ALTER TABLE old_table_name RENAME new_table_name语句用来修改表名,其中"old_table_name"是旧表名,"new_table_name"是新表名,当然,这里所要操作的对象一定得是存在的,不然会报错。

字段

增加字段

ALTER TABLE table_name ADD Att_name_1 Data_type_1;

在表"table_name"末尾,增加属性名为Att_name_1,数据类型为Data_type_1的字段

ALTER TABLE table_name ADD Att_name_1 Data_type_1 FIRST;

在表"table_name"开头,增加属性名为Att_name_1,数据类型为Data_type_1的字段

ALTER TABLE table_name ADD Att_name_1 Data_type_1 AFTER Att_name_2;

在属性名为Att_name_2的字段后,增加属性名为Att_name_1,数据类型为Data_type_1的字段

删除字段

ALTER TABLE table_name DROP Att_name;

将属性名为"Att_name"的字段删除
修改字段

ALTER TABLE table_name MODIFY Att_name New_data_type;

将属性名为"Att_name"的字段的数据类型新设置为"New_data_type"。

ALTER TABLE table_name CHANGE Old_att_name New_att_name Old_data_type;

将属性名为"Old_att_name",数据类型为"Old_data_type"的字段名修改为"New_att_name"

表的约束

表的约束是用来检验表中数据的完整性的,说的直白一些,就是检验表中的数据是否满足了规定的条件。以tab_student表举例来说,如果我不愿意令字段ID为空,就可以在建表时定义相关的约束。如果用户在插入数据时,违反了这样的约束条件,就会报错。当然可以定义的约束条件分很多种,下面会一一讲解。

  1. 设置非空约束
    关键字NOT NULL用来约束某字段不能为空,语法形式如下:
CREATE TABLE table_name(
    Att_name Data_type NOT NULL,
    ...
);
  1. 设置字段的默认值
    关键字DEFAULT用来设置字段的默认值。如果在插入数据时,没有为某个字段赋值,则Mysql会自动为这个字段赋值为默认值。其语法形式如下:
CREATE TABLE table_name(
    Att_name Data_type DEFAULT deVal,
    ...
);
  1. 设置唯一约束
    关键字UNIQUE用来设置对某个字段的唯一约束,唯一约束表示,插入的数据在这个字段上的值得是唯一的,不能重复(你可以类比一般编程语言中“键值对”的“键”)。以学生的信息系统为例,每个人的学号信息应该是唯一的,那么在录入数据时,如果这一项出现了重复,那必然是出错了。所以我们最好设置唯一值约束,如果出现重复,则报错。其语法形式如下:
CREATE TABLE table_name(
    Att_name Data_type UNIQUE,
    ...
);

上述代码将字段"Att_name"设置为了唯一约束。

现在以上面的tab_student为例,我对tab_student中的属性设置上面说的“非空”,“默认值”,“唯一”的约束:

CREATE TABLE tab_student(
    ID VARCHAR(20) NULL UNIQUE, # 设置学生ID非空,且唯一
    Score INT DEFAULT 0, # 设置Score默认值为0
    Gender CHAR
);
  1. 设置主键约束
    主键的作用在于用某个字段唯一地标识所有记录,以便在数据库中快速地查找数据。比如我们一般用索引号来唯一标识每一条数据记录。由于主键可以是单一字段,也可以是多个字段,所以,下面分两种情况讨论:

单字段主键:用关键字PRIMARY KEY设置主键。比如,还是tab_student的例子,现在将学号设置为主键。

CREATE TABLE tab_student(
    ID VARCHAR(20) PRIMARY KEY, # 设置学生ID为主键
    Score INT,
    Gender CHAR
);
  • 多字段主键:当主键由多个字段组合而成时,则需要关键字CONSTRAINT和PRIMARY KEY配合设置。其语法结构如下:
CREATE TABLE tab_student(
    ID VARCHAR(20),
    Name VARCHAR(20),
    Score INT,
    CONSTRAINT ID_Name PRIMARY KEY (ID, Name)
);

在上面代码展示的例子中,语句CONSTRAINT ID_Name PRIMARY KEY (ID, Name),将学生的ID和Name组合起来设置为主键。最后括号内表示的是主键涵盖的字段,而CONSTRAINT后面的ID_Name则是为这个约束起的名字(就设置主键约束来说,这个名字不要也没什么影响)。

  1. 设置字段值自动增加
    往表中插入记录时,往往会遇到需要递增的字段。例如商品编号啊,等等。Mysql支持对这类字段设置字段值自动增加的约束。默认情况下,设置了自动增加的字段值为整数,从1开始,每次加1。又因为这种自动增加的字段肯定是唯一的,所以一般我们也把它设置为主键。

设置自动增加的关键字为AUTO_INCREMENT

CREATE TABLE tab_student(
    ID INT PRIMARY KEY AUTO_INCREMENT, # 将ID设置为整数类型,并且设置字段值自动增加
    Name VARCHAR(20),
    Score INT
);
  1. 设置外键约束
    上面的5种约束都是对于单表,而外键约束则是保证多个表之间的参照完整性。

设置外键约束的两个表之间具备父子关系,即子表中某个字段的取值依赖于父表。举例来说,现在有两个表:部门表和雇员表,部门表的主键为部门编号depNo,而雇员表中表示雇员所在部门编号的字段depno就成为了雇员表(子表)的外键。外键设置时有以下几点要求:

外键所代表的字段必须依赖于已经存在的父表的主键;
外键与相应的父表的主键可以不同名;
外键可以为空(null)
设置外键的语法用FOREIGN KEY (attribute) + REFERENCES father_table_name (attribute)的形式:

CREATE TABLE child_table_name(
    Att_name_1, DataType_1,
    Att_name_2, DataType_2,
    CONSTRAINT FK_name FOREIGN KEY (Att_name_1) REFERENCES father_table_name (Att_name)
);

Select语句

SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。

语法:
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称

select * from room_table;

在这里插入图片描述

select name from room_table

在这里插入图片描述

select distnict name from room_table;

distinct 去掉要查询的结果中重复的
在这里插入图片描述
select 字段 from 表名 where 条件;
where 根据条件查询

select distinct name from room_table where Price=750;

查询room表中,价钱为750的房间的名字
结果如下:
在这里插入图片描述

ORDER BY 语句

ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

select name from room_table order by Price;

在这里插入图片描述
选择房间名根据价格排名

分组查询

聚合函数

聚合函数说明
SUM()返回某列所有值的和
AUG()返回某列的平均值
MAX()返回某列的最大值
MIN()返回某列的最小值
COUNT()返回某列的行数

其中,COUNT(*)对查询结果中的所有行进行计数,COUNT(列名)、SUM()、AVG()、MAX()、MIN()函数都忽略列值为NULL的行。
group by 子句
 通过分组可以使用聚合函数对结果集进行统计。
 eg: 检索平均成绩高于70分的学生信息及平均成绩,结果按平均分降序排序。

select Student.Sno,Student.Sname,Student.Sex,Department.Dname,AVG(SC.Grade) as '平均成绩' 
from Student inner join SC inner join Department 
on Student.Sno = SC.Sno and Student.Dno = Department.Dno group by SC.Sno 
having AVG(SC.Grade) >= 70 order by AVG(SC.Grade) desc;

having 子句
 分组之后对这些组进行筛选,使用 having 子句。
 where 子句作用的对象是基本表或视图,having 子句作用的对象是组。

函数

以下列举几种常见的函数
函数的语法
内建 SQL 函数的语法是:

SELECT function(列) FROM 表

函数的类型
在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:

  • Aggregate 函数
  • Scalar 函数
    SQL AVG 函数
    定义和用法
    AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

SQL AVG() 语法

SELECT AVG(column_name) FROM table_name

SQL COUNT() 函数
COUNT() 函数返回匹配指定条件的行数。
SQL COUNT() 语法
SQL COUNT(column_name) 语法
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT() 语法
COUNT(
) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 语法
COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值