SQL常识
SQL语句分类
DDL(data definition language)数据库定义语言CREATE、ALTER、DROP、SHOW
DML(data manipulation language)数据操纵语言SELECT、UPDATE、INSERT、DELETE
DCL(Data Control Language)数据库控制语言,是用来设置或更改数据库用户或角色权限的语句
常见概念
1、关系:两个表的公共字段
2、行:也称记录,也称实体
3、列:也称字段,也称属性
就表结构而言,表分为行和列;
就表数据而言,分为记录和字段;
就面向对象而言,一个记录就是一个实体,一个字段就是一个属性。
4、数据冗余:相同的数据存储在不同的地方
脚下留心:
1、冗余只能减少,不能杜绝。
2、减少冗余的方法是分表
3、为减少数据查找的麻烦,允许数据有一定的冗余
5、数据完整性:正确性+准确性=数据完整性
正确性:数据类型正确
准确性:数据范围要准确
思考:学生的年龄是整型,输入1000岁,正确性和准确性如何?
答:正确的,但不准确
思考:年龄是整型的,收入了字符串,正确性和准确性如何?
答:不正确,也不准确。
主表和从表
两个表建立关系(两个表只要有公共字段就有关系),一个表称为主表,一个表称为从表。
1.2 数据库的作用
数据库是存放数据的仓库
数据库:数据库中存放的是表,一个数据库中可以存放多个表
表:表是用来存放数据的。
数据库的发展史
萌芽阶段:文件系统
最初始的数据库是用磁盘来存储数据的。文件就是最早的数据库。
第一代数据库:层次模型、网状模型
层次模型
缺点:
1、 查找不同类的数据效率低了(导航的结构的缺点)
2、 数据不完整(不能区分到底是一个李白还是两个李白)
网状模型
网状模型解决了层次数据的数据不完整的问题,但是没有解决层次模型的导航问题。
第二代数据库:关系型数据库
特点:
每个表都是独立的
表与表之间通过公共字段来建立关系
优点:解决了导航问题,并且数据完整性得到解决
缺点:多表查询效率低了
提示:我们现在用的主流的数据库都是关系模型的。
多学一招:NoSQL(非关系型数据库)解决关系型数据库多表查询效率的问题,
常见的非关系型数据库有:Redis、mongodb。数据库中存储格式是键值对。
启动/关闭MySQL服务
window使用net工具
net start 服务名: 启动MySQL服务
net stop 服务器: 关闭MySQL服务
Linux使用
/etc/init.d/mysqld start
/etc/init.d/mysqld stop
注意:必须通过管理员身份启动命令行
SQL介绍
SQL是什么
Structured Query Language(结构化查询语言),是用来操作关系型数据库的一门语言。这是一个关系型数据库的通用操作语言,也成为标准SQL,也叫SQL-92。
多学一招:数据库的生产厂商为了占有市场份额,都会在标准SQL的基础上扩展一些自己的东西以吸引用户。
常见的关系型数据库
关系型数据库 | 开发公司 | 使用语言 |
---|---|---|
SQL Server | 微软公司 | T-SQL |
Oracle | 甲骨文公司 | PL/SQL |
MySQL | MySQL AB 公司开发——甲骨文公司收购 | MySQL |
思考:已知标准SQL可以在所有的关系型数据库上运行,在Oracle上编写的PL/SQL能否在MySQL上运行?
答:不能,只能运行标准SQL
连接服务器
通过命令行面板连接
host:主机 -h
username:用户名 -u
password:密码 -p
port:端口 -P
mysql -h127.0.0.1 -P3306 -uroot -proot
多学一招:如果MySQL服务器在本地,IP地址可以省略;如果MySQL服务器用的是3306端口,-P也是可以省略
关闭连接
方法一:exit
方法二:quit
方法三:\q
脚下留心:MySQL中的命令后面要加分号,windows命令行的命令后面不用加分号。
MySQL目录
数据表的文件介绍
一个数据库对应一个文件夹
一个表对应一个或多个文件
引擎是myisam,一个表对应三个文件
引擎是innodb,一个表对应一个表结构文件
所有的innodb引擎的数据统一的存放在data\ibdata1文件中。如果数据量很大,MySQL会自动的创建ibdata2,ibdata3,…,目的就是为了便于管理。
引擎是memory,数据存储在内存中,重启服务数据丢失,但是读取速度非常快。