数据库概述:
数据库有什么用?
~实现数据持久性地存储在本地
~使用完整的系统统一管理数据,实现结构化查询,方便管理
数据库:为了数据方便地存储和管理,将数据按照特定的规则存储在磁盘,就是存储数据的仓库
数据库的相关概念
DB :数据库( DataBase )
存储数据的容器,它保存了一系列有组织的数据。
DBMS :数据库管理系统( DataBase Management System )
又称为数据库软件或数据库产品,用于创建或管理 DB 。
常见的数据库产品(了解性知识)
外国:
MySql 开源,快捷,可靠
Oracle 功能强大,收费
SQl SERVER:只能安装在Windows系统
DB2(IBM):适合处理海量数据,收费
国内:
南大通用;
神通;
人大金仓;
达梦
MySql数据库:
MySql数据库是关系型数据库管理系统,由瑞典MySQL AB公司开发而来,但是目前MySQL属于Oracle旗下产品,
MySQL:
MySQL使用标准的SQL语言,支持多种操作系统,支持多种语言
MySQL具有可靠,快捷和易于使用的特点
MySQL是免费开源的一款产品,可以自己修改源码,开发MySQL供自己使用
mysql 商业版与社区版
● MySQL 商业版是由 MySQL AB 公司负责开发与维护 , 需要付费才能使用
● MySQL 社区版是由分散在世界各地的 MySQL 开发者、爱好者一起开发与维
护,可以免费使用
MySQL安装:
哔站上有各种教程,直接搜就行
MySQL的常用命令
查看当前所有的数据库: show databases;
选择指定的库: use 库名
查看当前的所有表: show tables;
查看其他库的所有表: show tables from 库名 ;
查看 mysql 版本 select
sql:
SQL(structed query language)是一种带有特殊目的的编程语言,是一种数据库查询和设计语言,用于存储数据以及查询,更新和管理关系数据库系统
优点:不是某个产品的专用语言,几乎所有的DBMS都支持SQL语言,简单易学,灵活使用,可以进行非常复杂的和高级的数据库操作
DDL:
DDL(data definition language):是用来创建和修改数据库结构的语言
常见的DDL关键字:create,drop,alter,rename
数据库表的基本概念:
1、数据表
表(table)是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。
表的最简单形式是由行和列组成,分别都包含着数据。 每个表都有一个表头和表体,表头定
义表名和列名 .表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。
2、字段
字段是表里的一列,用于保存每条记录的特定信息。如客户订单表的字段包括“订单
ID”、“姓名”、“客户ID”、“职务”、“上级”、“地区”、“运货商”、“国家”等。
数据表的一列包含了特定字段的全部信息。
3、记录
记录也被称为一行数据,是表里的一行数据

主键:
在一张表中代表唯一的一条记录 , 不能为空 , 不能重复
约束 :
PRIMARY KEY 设置主键约束
NOT NULL 不能为空约束
UNIQUE 唯一性约束
检查约束 设置条件
外键约束
主键自动增长 , 设置为自动增长时 , 只能为整数类型
AUTO_INCREMENT
默认值
DEFAULT default_value
字段注释 :
comment ' 注释
每个列(字段)都必须有数据类型,下面是一些数据类型
char (指定长度的字符类型)
varchar(不定长的字符类型)
date (日期类型,具体到年月日)
datetime (日期类型,具体到年月日 时分秒)
整数类型

上代码
代码可以直接复制使用,需要提醒刚接触sql的同学,多行SQL代码时需要分段执行(需要执行哪一部分,勾选后执行)
-- 创建表
CREATE TABLE student(
sno INT(10) PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
NAME VARCHAR(10) NOT NULL COMMENT '姓名',
phone_num INT(13)NOT NULL UNIQUE COMMENT '手机号',
grnder CHAR(1) DEFAULT '男' COMMENT '性别',
height DECIMAL(3,2) CHECK(height<2.62),
birthday DATE,
opr_time DATETIME
)
-- 总结来说,抽象类不能创建实例是因为它只是一个模板或者接口,需要子类来实现具体的功能。
-- 通过继承抽象类并实现其中的抽象方法, 我们可以创建具体的子类对象来满足实际需求
-- 重命名表名
RENAME TABLE student TO student_f;
-- ddl删除操作
DROP TABLE student_f
-- 复制表结构
CREATE TABLE copy LIKE student;
-- ddl修改表结构 alter
ALTER TABLE copy RENAME TO coppy
DML
DML(data management language):是用来对数据库进行操纵的语言
DML语言常见的关键字:update,delete,insert
直接看代码通俗易懂
-- DML
-- 删除
DELETE FROM 表名 WHERE 条件
TRUNCATE TABLE 表名;-- 清空整张表
-- 修改
UPDATE 表名 SET 列名=新值 WHERE 条件
-- 插入
INSERT INTO coppy(NAME,phone_num,grnder,height,birthday,opr_time)
VALUES('lidaye',123456789,'n',1.23,NOW(),NOW())
INSERT INTO coppy(NAME,phone_num,grnder,height,birthday,opr_time)
VALUES('lid',12345679,'n',1.23,NOW(),NOW()),
('李青龙',1321231,'女',1.56,NOW(),NOW()),
('六',1233211,'女',1.66,NOW(),NOW())
DELETE FROM coppy
-- 函数now 获取当前时间
INSERT INTO student(NAME,phone_num,grnder,height,birthday,opr_time)
VALUES('lid',12345679,'n',1.23,NOW(),NOW()),
('李青龙',1321231,'女',1.56,NOW(),NOW()),
('六',1233211,'女',1.66,NOW(),NOW()),
('lidaye',123456789,'n',1.23,NOW(),NOW())
DQL
DQL(data query language):是使用频率最高的操作,
可以从一张表查询数据,也可以从多张表中查询数据
特点:
查询列表可以是:表中的指定字段(列)、常量、表达式、函数
select * from 表名 (这是查询表所有记录,一般不建议使用)
查询的结果是一个虚拟的表格
算数运算符:+ - * /
排除重复行: select distinct column1,column2 from table
查询函数:select 函数 ; / 例如version()
上代码
CREATE DATABASE NBAmag
CREATE TABLE team(NO INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(9) NOT NULL UNIQUE,
addresss VARCHAR(16) NOT NULL)
INSERT INTO team(NAME,addresss)
VALUES('湖人','洛杉矶'),
('火箭','休斯顿'),
('凯尔特人','波士顿'),
('骑士','克利夫兰'),
('马刺','圣安东尼奥'),
('魔术','奥兰多')
CREATE TABLE teamnum(num INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10) NOT NULL,
birthday DATE,
age INT NOT NULL,
height DECIMAL(3,2) ,
location VARCHAR(16) )
DROP TABLE teamnum
INSERT INTO teamnum(NAME,birthday,age,height,location)
VALUES('韦德','1982-1-17',42,1.9,'后卫'),
('詹姆斯','1982-12-23',42,2.1,'前锋'),
('科比','1978-12-23',46,2.01,'后卫')
INSERT INTO teamnum(NAME,birthday,age,height,location)
VALUES('奥尼尔','1972-12-12',51,2.02,'中锋'),
('乔丹','1963-12-23',60,2.01,'前锋')
DROP TABLE teamnum
-- 条件查询
/*
使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句。
语法:select <结果> from <表名> where <条件>
比较
=, != 或<>, >, <, >=, <=
逻辑运算
and 与
or 或
not 非
*/
SELECT *FROM team WHERE NAME IS NOT NULL
SELECT * FROM teamnum WHERE height>1.9 AND height<1.99 OR height != 2.1
SELECT * FROM teamnum WHERE height <> 1.9
SELECT * FROM team WHERE NAME='魔术'
/*
条件查询
模糊查询
LIKE :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值
或数值型. 通配符: % 任意多个字符
between and 两者之间,包含临界值;
in 判断某字段的值是否属于in列表中的某一项
IS NULL(为空的)或 IS NOT NULL(不为空的)
*/
SELECT * FROM team WHERE NAME LIKE '火%'
SELECT SUM(height) FROM teamnum WHERE height BETWEEN 1.6 AND 2.2 -- 包含临界值
SELECT AVG(height) FROM teamnum
WHERE height IN(SELECT height FROM teamnum
WHERE height IS NOT NULL)
-- not 非
SELECT * FROM team WHERE NAME IN('湖人','火箭')
ALTER TABLE
/*
1、UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]
2、UNION ALL 的语法如下:
[SQL 语句 1]
UNION ALL
[SQL 语句 2]
当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all ,
mysql 会把所有的记录返回,且效率高于union 。
*/
SELECT * FROM teamnum WHERE height IS NULL AND location LIKE '中%'
UNION
SELECT * FROM teamnum WHERE NAME IS NOT NULL
SELECT * FROM teamnum WHERE height IS NULL AND location LIKE '中%'
UNION ALL
SELECT * FROM teamnum WHERE NAME IS NOT NULL
/*
• 排序
查询结果排序,使用 ORDER BY 子句排序 order by 排序列 ASC/DESC
asc代表的是升序,desc代表的是降序,如果不写,默认是升序
order by子句中可以支持单个字段、多个字段
*/
SELECT * FROM teamnum ORDER BY age DESC
SELECT * FROM teamnum ORDER BY height DESC
/*
数量限制
limit子句:对查询的显示结果限制数目 (sql语句最末尾位置)
SELECT * FROM table LIMIT offset rows;
SELECT * from table LIMIT 0,5;
*/
SELECT * FROM teamnum LIMIT 0,2
-- sql server 中用top2 查询前两条
函数
类似于JAVA语言中的方法,C语言中的函数,可以直接调用
分类:
单行函数:如concat 、 length 、 ifnull等
分组函数:做统计使用,又称为统计函数、聚合函数、组函数
1.sum, avg 一般用于处理数值型而 max , min , count可以处理任何类型
2.以上分组函数都忽略 null值
3.count函数的一般使用 count ( *)用作统计行数
4.和分组函数一同查询的字段要求是 group by后的字段