数据库中以表为组织单位存储数据。
表类似我们的Java类,每个字段都有对应的数据类型。
那么用我们熟悉的java程序来与关系型数据对比,就会发现以下对应关系。
根据表字段所规定的数据类型,我们可以向其中填入一条条的数据,而表中的每条数据类似类的实例对象。表中的一行一行的信息我们称之为记录
数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言SQL语句,它是数据库的代码。
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
创建数据库、创建数据表、向数据表中添加一条条数据信息均需要使用SQL语句
SQL语句可以单行或多行书写,以分号结尾
可使用空格和缩进来增强语句的可读性
同样可以使用/**/的方式完成注释
MySQL中常用的数据类型如下:
日期类型,格式为yyyy-MM-dd,只有年月日,没有时分秒 |
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,将在后面描述。
混合日期和时间值,时间戳 |
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
不超过 255 个字符的二进制字符串 |
二进制形式的长文本数据 |
二进制形式的中等长度文本数据 |
二进制形式的极大文本数据 |
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
查看MySQL服务器中的所有数据库:
一般主键是自增长的字段,不需要指定,实现添加自增长语句,主键字段后加auto_increment,例如:
首先先知道查询表中所有数据的语句:
DML是对表中的数据进行增、删、改的操作。不要与DDL混淆了,包含:
在mysql中,字符串类型和日期类型都要用单引号括起来: ‘tom’ ‘’
创建表 emp 并插入数据,表结构如下
zhangsan
的员工薪水修改为3000元
DQL数据查询语言 (重要)
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张 虚拟表。
前面介绍的所有操作符都是针对已知值进行过滤的,不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查摸个范围的值,共同点是过滤中使用的值都是已知的.但是,这种过滤方法并不是任何时候都好用,例如当想查询中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE
在使用like关键字时,通常和通配符配合使用
去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp表中sal字段就存在相同的记录。当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT
因为sal和comm两列的类型都是数值类型,所以可以做加运算。如果sal或comm中有一个字段不是数值类型,那么会出错
而comm列有很多记录的值为NULL,因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。下面使用了把NULL转换成数值0的函数IFNULL:
在上面查询中出现列名为sal+IFNULL(comm,0),这很不美观,现在我们给这一列给出一个别名,为total:
给列起别名时,是可以省略AS关键字的:
聚合函数是用来做纵向运算的函数
当需要纵向统计时使用COUNT(),COUNT小括号中可以放入指定列名,和* 如果是* 则代表查询的是结果集的行数,如果是列名,则是指定列的行数
查询emp表中有佣金的人数
注意,因为count()函数中给出的是comm列,那么只统计comm列非NULL的行数
查询emp表中月薪大于2500的人数
统计月薪与佣金之和大于2500元的人数
查询有佣金的人数,有领导的人数
当需要纵向求和时使用sum()函数。当需要求平均值时使用avg()函数
MAX和MIN 是用来查询最大值和最小值的
当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部门来分组
凡是和聚合函数同时出现的列名,一定要写在group by 之后
分组时候是无法体现单个数据的
group by 一般会合聚合函数配合使用,单独使用的时候意义不大
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束
LIMIT用来限定查询结果的起始行,以及总行数。
数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合即存储、维护和管理数据的集合。
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数
据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。
数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。
SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。
各数据库厂商都支持ISO的SQL标准。普通话
各数据库厂商在标准的基础上做了自己的扩展。方言
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。