目录
一、数据库简述
1.1、数据库概述
1.2、数据库分类
二.SQL的概述
2.1、SQL的优点
2.2、SQL的分类
三、数据库的数据类型
3.1、数据库的列类型
3.2、数据库的字段属性
四、数据库、数据表的基本操作
4.1、数据库的基本操作
4. 2、数据表的基本操作
1、创建、查看数据表
2、修改数据表
五、数据表字段的约束
5.1、主键约束
5.2、外键约束
5.3、唯一性约束
5.4、默认值约束
5.5、非空约束
5.6、自增约束
六、数据表添加修改数据
6.1、在表中插入数据
6.2、修改数据表中数据
6.3、删除数据表中数据
七、MySQL 数据表查询
7.1、MySQL数据表简单查询
7.1.1、MySQL查询所有字段
7.1.2、MySQL查询指定字段
7.1.3 、常数的查询
7.1.4、从查询结果中过滤重复数据
7.1.5、算术运算符(举例加运算符)
7.2 聚合函数
7.2.1、sum()语句格式
7.2.2、avg()语句格式
7.2.3、max()语句格式
7.2.4、min()语句格式
7.2.5、count()语句格式
7.3、条件查询
7.3.1、条件语句格式
7.3.2、条件的写法
7.3.3、使用关系运算符查询
7.3.4、使用in关键字查询
7.3.5、使用BETWEEN AND关键字查询
7.3.6、使用空值查询
7.3.7、使用LIKE关键字查询
7.3.8、使用LIMIT限制查询结果的数量
7.3.9、使用GROUP BY进行分组查询
7.4.0、使用 order by 对查询结果进行排序。
7.4.1、使用distinct去除重复的字段
7.4、多表连接查询
7.4.1、交叉连接
7.4.2、内链接查询(自然连接,等值链接)
7.4.3、外链接查询
7.4.3.1、左外链接查询
7.4.3.2、右外链接查询
7.5、子查询
八、MySQL创建用户
一、数据库简述
简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。更简单的形象理解,数据库和我们生活中存放杂物的仓库性质一样,区别只是存放的东西不同。
1.1、数据库概述
数据库:DB(DataBase)
概念:数据仓库,软件,安装在操作系统之上
作用:存储数据,管理数据
1.2、数据库分类
关系型数据库:SQL(Structured Query Language)
MySQL、Oracle、Sql Server、DB2、SQLlite
通过表和表之间,行和列之间的关系进行数据的存储
通过外键关联来建立表与表之间的关系
非关系型数据库:NoSQL(Not Only SQL)
Redis、MongoDB
指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
二.SQL的概述
Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。
2.1、SQL的优点
1、简单易学,具有很强的操作性
2、绝大多数重要的数据库管理系统均支持SQL
3、高度非过程化;用SQL操作数据库时大部分的工作由DBMS自动完成
2.2、SQL的分类
1、DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP
2、DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE
3、DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY
4、DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT
三、数据库的数据类型
3.1、数据库的列类型
数值类型
数据类型描述大小tinyint十分小的数据1个字节smallint较小的数据2个字节mediumint中等大小的数据3个字节int标准的整数4个字节bigint较大的数据8个字节float浮点数4个字节double浮点数8个字节decimal字符串形式的浮点数,一般用于金融计算 字符串
数据类型描述大小char字符串固定大小0~255varchar可变字符串0~65535tinytext微型文本2^8-1text文本串2^16-1 时间日期
数据类型描述格式date日期格式YYYY-MM-DDtime时间格式HH:mm:ssdatetime最常用的时间格式YYYY-MM-DD HH:mm:sstimestamp时间戳,1970.1.1到现在的毫秒数year年份表示3.2、数据库的字段属性
UnSigned
ZEROFILL
- 0填充的
- 不足位数的用0来填充 , 如int(3),5则为005
Auto_InCrement
- 通常理解为自增,自动在上一条记录的基础上默认+1
- 通常用来设计唯一的主键,必须是整数类型
- 可定义起始值和步长
NULL 和 NOT NULL
- 默认为NULL , 即没有插入该列的数值
- 如果设置为NOT NULL , 则该列必须有值
DEFAULT
- 默认的
- 用于设置默认值
- 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值
四、数据库、数据表的基本操作
4.1、数据库的基本操作
MySQL要想将数据存储到数据库的表中,首先要创建一个数据库。创建数据库就是在数据库系统中划分一块空间存储数据,语法如下:
创建数据库MySQL命令:
删除数据库MySQL命令:
查询出MySQL中所有的数据库MySQL命令:
将数据库的字符集修改为gbk MySQL命令:
- alter database 数据库名 character set gbk;
复制代码 切换数据库 MySQL命令:
查看当前使用的数据库 MySQL命令:
4. 2、数据表的基本操作
1、创建、查看数据表
数据库创建成功后可在该数据库中创建数据表(简称为表)存储数据。请注意:在操作数据表之前应使用“USE 数据库名;”指定操作是在哪个数据库中进行先关操作,否则会抛出“No database selected”错误。
创建数据表语法如下:
- create table 表名(
- 字段1 字段类型,
- 字段2 字段类型,
- …
- 字段n 字段类型
- );
复制代码 查看当前数据库中所有表 MySQL命令:
查表的基本信息 MySQL命令:
查看表的字段信息 MySQL命令:
2、修改数据表
有时,希望对表中的某些信息进行修改,例如:修改表名、修改字段名、修改字段 数据类型…等等。在MySQL中使用alter table修改数据表.
修改表名 MySQL命令:
- alter table 旧数据表名 rename to 新数据表名;
复制代码 修改字段名 MySQL命令:
- alter table 数据表名 change 旧字段名 新字段名 varchar(10);
复制代码 修改字段数据类型 MySQL命令:
- alter table 数据表名 modify 字段名 数据类型;
复制代码 增加字段 MySQL命令:
- alter table 数据表名 add 新增字段名 varchar(50);
复制代码 删除字段 MySQL命令:
- alter table 数据表名 drop 字段名;
复制代码 删除数据表 MySQL命令:
五、数据表字段的约束
为了防止往数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束。
常见约束:
约束条件说明PRIMARY KEY主键约束用于唯一标识对应的记录FOREIGN KEY外键约束NOT NULL非空约束UNIQUE唯一性约束AUTO_INCREMENT主键自增加约束DEFAULT默认值约束,用于设置字段的默认值
5.1、主键约束
在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现。主键约束是通过PRIMARY KEY
定义的,它可以唯一标识表中的记录,这就好比身份证可以用来标识人的身份一样。
主键约束基本语法:
设置主键约束(primary key)的第一种方式
示例:MySQL命令:
- CREATE TABLE StuDent(
- id int primary key,
- name varchar(20)
- );
复制代码 设置主键约束(primary key)的第二·种方式
示例:MySQL命令:
- CREATE TABLE StuDent(
- id int unsigned,
- name varchar(20),
- primary key(id)
- );
复制代码 5.2、外键约束
如果表A的主键是表B中的字段,则该字段称为表B的外键;另外表A称为主表,表B称为从表。外键是用来
实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或删除的级联操作将使
得日常维护更轻松。外键主要用来保证数据的完整性和一致性。其基本语法如下:
- -- 在创建数据表时语法如下:
- CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段)
- -- 将创建数据表创号后语法如下:
- ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段);
复制代码 示例:创建一个学生表 MySQL命令:
- create table student(
- id int primary key,
- name varchar(20)
- );
复制代码 示例:创建一个班级表 MySQL命令:
- create table class(
- classid int primary key,
- studentid int
- );
复制代码 示例:学生表作为主表,班级表作为副表设置外键, MySQL命令:
- alter table class add constraint fk_class_studentid foreign key(studentid) references student(id);
复制代码 【补充】一个表允许有多个外键,且外键只适用于InnoDB表,MyISAM表不支持外键。InnoDB表和MyISAM表的主要区别是:InnoDB表支持事务、行锁和外键,MyISAM不支持;InnoDB表索引式修改效率较MyISAM高,MyISAM表查询、插入和删除效率较InnoDB高,而且MyISAM索引和数据分离,索引压缩存储,而InnoDB索引和数据紧密结合,不支持压缩,所以MyISAM内存利用率比InnoDB高;另外MyISAM的移植性也更强。
删除外键语法如下:
- alter table 从表名 drop foreign key 外键名;
复制代码 示例:删除外键 MySQL命令 :
- alter table class drop foreign key fk_class_studentid;
复制代码
5.3、唯一性约束
唯一性约束即UNIQUE用于保证数据表中字段的唯一性,即表中字段的值不能重复出现,其基本的语法格式如下所示:
示例:MySQL命令:
- create table student(
- id int unique,
- name varchar(20),
- );
复制代码
5.4、默认值约束
默认值约束即DEFAULT用于给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值;其基本的语法格式如下所示:
示例:MySQL命令:
- create table student(
- id int,
- name varchar(20),
- gender varchar(10) default 'male'
- );
复制代码 5.5、非空约束
非空约束即 NOT NULL指的是字段的值不能为空,基本的语法格式如下所示:
示例:MySQL命令:
- create table student(
- id int,
- name varchar(20) not null,
- );
复制代码 5.6、自增约束
在数据表中,若想为表中插入新记录自动生成唯一的ID,可以使用AUTO_INCREMENT约束来实现。AUTO_INCREMENT约束的字段可以是任何整数类型。默认情况下,改字段的值是从1开始自增的。其基本语法如下:
- id lNT PRIMARY KEY AUTO_INCREMENT;
复制代码 示例:MySQL命令:
- create table student (
- id lNT PRIMARY KEY AUTO_INCREMENT,
- name VARCHAR(20),grade FLOAT
- );
复制代码 六、数据表添加修改数据
6.1、在表中插入数据
向数据表中全部字段添加数据 MySQL命令:
- insert into 表名 values(值1,值2,值3);
复制代码 向数据表中部分字段添加数据 MySQL命令:
- insert into 表名(字段, 字段, 字段...) values(值1,值2,值3);
复制代码 6.2、修改数据表中数据
修改表中的某一字段全部的记录 MySQL命令:
修改表中符合条件的记录 MySQL命令:
- update 表名 set 字段 = 值 where 条件;
复制代码 6.3、删除数据表中数据
删除表中全部的记录 MySQL命令:
删除表中符合条件的记录 MySQL命令:
- delete from 数据表名 where 条件;
复制代码 七、MySQL 数据表查询
查询数据指从数据库中获取所需要的数据。查询数据是数据库操作中最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL中是使用SELECT语句来查询数据的。
7.1、MySQL数据表简单查询
简单查询即不含where的select语句。在此,我们讲解简单查询中最常用的两种查询:查询所有字段和查询指定字段。
7.1.1、MySQL查询所有字段
查询所有字段 MySQL命令:
7.1.2、MySQL查询指定字段
查询指定字段 MySQL命令:
- select stuid from students;
复制代码 7.1.3 、常数的查询
在SELECT中除了书写列名,还可以书写常数。可以用于标记
常数的查询日期标记 MySQL命令:
- select stuid,name,'2021-03-02' from students;
复制代码 7.1.4、从查询结果中过滤重复数据
在使用DISTINCT 时需要注意:
在SELECT查询语句中DISTINCT关键字只能用在第一个所查列名之前。
MySQL命令格式:
- select distinct,name from students;
复制代码 7.1.5、算术运算符(举例加运算符)
在SELECT查询语句中还可以使用加减乘除运算符。
查询学生10年后的年龄 MySQL命令:
- select name,age+10 from students;
复制代码 7.2 聚合函数
在开发中,我们常常有类似的需求:统计某个字段的最大值、最小值、 平均值等等。为此,MySQL中提供了聚合函数来实现这些功能。所谓聚合,就是将多行汇总成一行;其实,所有的聚合函数均如此——输入多行,输出一行。聚合函数具有自动滤空的功能,若某一个值为NULL,那么会自动将其过滤使其不参与运算。
聚合函数使用规则:
只有SELECT子句和HAVING子句、ORDER BY子句中能够使用聚合函数。例如,在WHERE子句中使用聚合函数是错误的。
接下来,我们学习常用聚合函数。
函数作用sum()计算指定列的数值和,如果指定列类型不是数值类型则计算结果为0avg()计算指定列的平均值,如果指定列类型不是数值类型则计算结果为0max()计算指定列的最大值,如果指定列是字符串类型则使用字符串排序运算min()计算指定列的最小值,如果指定列是字符串类型则使用字符串排序运算count() 统计表中数据的行数或者统计指定列其值不为NULL的数据个数
7.2.1、sum()语句格式
MySQL语法格式:
- select sum(字段名) from 数据表名;
复制代码 查询该学生表中年纪的总和 MySQL命令:
- select sum(age) from students;
复制代码
7.2.2、avg()语句格式
MySQL语法格式:
- select avg(字段名) from 数据表名;
复制代码 查询该学生表中年纪的平均数 MySQL命令:
- select avg(age) from students;
复制代码
7.2.3、max()语句格式
MySQL语法格式:
- select max(字段名) from 数据表名;
复制代码 查询学生表中年龄最大的学生 MySQL命令:
- select max(age) from students;
复制代码
7.2.4、min()语句格式
MySQL语法格式:
- select min(字段名) from 数据表名;
复制代码 查询该学生表中年纪最小的学生 MySQL命令:
- select min(age) from students;
复制代码
7.2.5、count()语句格式
MySQL语法格式:
- select count(字段名)from 数据表名;
复制代码 统计学生表中有多少人 MySQL命令:
- select count(*) from students;
复制代码 7.3、条件查询
数据库中存有大量数据,我们可根据需求获取指定的数据。此时,我们可在查询语句中通过WHERE子句指定查询条件对查询结果进行过滤。
7.3.1、条件语句格式
- select * from 表名 where 条件;
复制代码
7.3.2、条件的写法
[table][tr]条件作用[/tr][tr][td]>[/td][td]大于[/td][/tr][tr][td] |