一.数据库概述
-
数据库(DataBase:DB):数据库是按照数据结构来组织、存储和管理数据的仓库.
-
我们一般说的数据库,就是指的DBMS: 数据库服务器
常见的关系数据库:
数据库系统 所属公司
--------------------------------------
Oracle Oracle
DB2 IBM
SQL Server MS
MySQL AB-->SUN-->Oracle
-
后关系数据库技术阶段;
- 关系型数据库存在数据模型,性能,拓展伸缩性的缺点,出现了:
- ORDBMS:面向对象数据库技术。
- NoSQL :结构化数据库技术。
-
常见的NoSQL数据库分为四大类:
- 键值存储数据库:Oracle BDB,Redis,BeansDB
- 列式储数数据库:HBase,Cassandra,Riak
- 文档型数据库:MongoDB,CouchDB
- 图形数据库:Neo4J,InfoGrid,Infinite Graph
-
书写规则:
- 数据库中,SQL语句大小写不敏感
- SQL语句可单行或多行书写
- 在SQL语句中,关键字不能跨多行或缩写
- 为了提高可读性,一般关键字大写,其他小写
- 空格和缩进使程序易读
二.表/关系
表又叫二维表(有行和列) --> 存储数据,
表具有固定的列数和任意的行数,在数学上称为“关系”。
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为一条记录
表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列、字段。
三.安装相关软件
-
MySQL
-
安装navicat
四.MySQL常用类型
Java MySQL
-------------------------------------------
int INT
long BIGINT
BigDecimal DECIMAL
boolean BIT
Date/Calender DATE/DATETIME/TIMESTAMP
char/String VARCHAR /CHAR/TEXT
五.SQL
SQL包含6个部分:
一:数据查询语言(DQL):
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
二:数据操作语言(DML):
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
三:事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
四:数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
六:指针控制语言(CCL):
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
六.表的操作
- 创建表
CREATE TABLE 表名(
列名1 列的类型 [约束],
列名2 列的类型 [约束],
....
列名N 列的类型 [约束]
);
- 查看表目录:
SHOW TABLES;
- 查看表结构:
DESC table_name;
- 查看DDL语句:
SHOW CREATE TABLE table_name;
- 删除表:
DROP TABLE table_name;
七.表的约束
表的约束(针对于某一列):
- 非空约束:NOT NULL(NK),不允许某列的内容为空。
- 设置列的默认值:DEFAULT。
- 唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。
- 主键约束:PRIMARY KEY(PK), 非空且唯一。
- 主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)
一张表只能存在一个自动增长的列(一般该列是主键列) - 外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照于B表中的某一列(B表主键)-
八.数据操作(DML)
- 插入语句:一次插入操作只插入一行.
INSERT [INTO] table_name (column1,column2,column3...)
VALUES (value1,value2,value3...);
- 删除操作:
DELETE FROM 表名 [WHERE 条件];
- 更新操作:
UPDATE 表名
SET 列1 = 值1, 列2 = 值2 [, columnName = value, ...]
[WHERE 条件];
#需求:往t_student插入名字为西门吹·牛,id为1,年龄为32岁的数据
#1.插入完整数据记录/空值
insert into t_student(id,name,age) VALUES(1,'西门吹·牛',32);
#2.插入记录的一部分
insert INTO t_student(name,age) VALUES('西门吹·水',12);
#3.没有写列插入数据:按照表建表的列顺序
insert into t_student VALUES(3,'乔峰',23);
#需求:删除id为1学生信息
delete from t_student where id = 1;
#删除所有的信息
delete from t_student;
#需求:将id为1的学生名字改为司空灾星
update t_student set name = '司空灾星' where id = 1;
#需求:将姓名为乔峰的学生改为血煞年龄为18
update t_student set name = '血煞' , age = 18 where name = '乔峰'