数据库基础

1、数据库分类

关系型数据库:将数据保存在不同的表中,一类数据一个表,表之间相互联系,例子:Oracle、MySQL、SQL Server、Microsoft Access、DB2

非关系型数据库:MongoDB,redis

2、navicate  导入表格

表格不能有任何格式,比如边框、加粗  都不能有

导入数据时要把excel文件打开

3、sql关键语法

DDL数据定义语言  CREATE DROP ALTER  针对数据库、表

DML数据操纵语言 SELECT INSERT UPDATE DELETE 查询变更表中的记录

DCL数据控制语言 COMMIT ROLLBACK  确认、取消对数据库中数据的更改

注:sql里用的是英文的单引号

  • 单表查询
SELECT [列] FROM [表];            查询单列
SELECT [列1],[列2] FROM [表];     查询多列
SELECT * FROM [表];               查询所有列
设置别名-AS (重新命名或者新生成的列,对列使用或者表名使用)
SELECT [列1], [列2] AS [别名] FROM [TABLE];
SELECT tb.[列1], tb.[列2] FROM [biaobiaobiao] AS tb;

SELECT id, prod_name AS name FROM prod;
SELECT tb.id, tb.price FROM prod_information AS tb;


添加常数 --添加特定的值
SELECT '常数' AS [列名] FROM [TABLE];


四则运算
SELECT [四则运算表达式] FROM [TABLE];
SELECT inprice, saleprice, saleprice-inprice AS profit FROM prod;
字符拼接-CONTCAT 将多个字段拼接为一个字段
SELECT CONTCAT([列1], [列2]) AS new FROM [TABLE];

SELECT *, CONTCAT(name,'的重量是', weight) AS new FROM prod;



指定拼接符-  CONCAT_WS   多字段拼接,字段之间使用相同的拼接符
SELECT CONTCAT_WS('拼接符',[列1], [列2],...) AS new FROM [TABLE];

SELECT CONCAT_WS('+',name, weight, price) AS new FROM prod;


内容去重 DISTINCT  取出不重复的列值
SELECT DISTINCT [列名] FROM [TABLE];

结果排序 ORDER BY  对结果进行排序
ORDER BY [列名];                        单列排序
ORDER BY [列名1], [列名2],...;          多列排序  如果某列升序某列降序要分别指明
ORDER BY [列位置1], [列位置2],...;      列位置排序(某列在第几列,用数字代替,第二列用2)

升序 ASC
降序 DESC

对中文排序时 ORDER BY CONVERT(prod_name USING gbk);   转成gbk格式之后就能按拼音字母排序了
过滤-WHERE  过滤条件

常规运算符 = < > != <= >=
计算表达式 列与常数,列与列

空值处理 IFNULL(列名,0)
SELECT * FROM tb WHERE IFNULL(price,0) <= 10;  把空值处理为0

数值过滤 BETWEEN...AND... 简化取值范围的书写,两端均包含
SELECT * FROM tb WHERE price BETWEEN 0 AND 10;

空值过滤  IS NULL   异常值处理
SELECT * FROM tb WHERE price IS NULL;

非空值处理 IS NOT NULL
SELECT * FROM tb WHERE price IS NOT NULL;
LIKE 模糊查询
通配符 下划线 _    WHERE [列] LIKE '..._...'    知道字符的数目、字符的位置
SELECT * FROM prod WHERE name LIKE '李_狗';   _ 一个下划线代替一个字符


通配符 百分号 %  WHERE [列] LIKE '...%...'   不知道字符的数目 但是知道字符的位置
SELECT * FROM prod WHERE name LIKE '李%';     %一个百分号代替任意个字符(包含0)

转义字符\ 

且操作--AND  同时满足:WHERE [条件1] AND [条件2]...;    满足条件的结果去交集
或操作--OR  满足一个即可:WHERE [条件1] OR [条件2]...;  满足条件的结果并在一起
组合操作 建议加括号  WHERE [条件1] AND ([条件2] OR [条件3])...;   先算括号里的,在接着算w外面的


取值限制 IN --明确而不连续的值  
WHERE [字段] IN (值1,值2...);
SELECT * FROM prod WHERE name IN ('张三', '李四','王五');  

否定条件 NOT --否定一个或多个过滤条件,
WHERE NOT [条件1];
SELECT * FROM prod WHERE NOT name ='张三';  
  • 数据类型
数值型:
整型 INTERGER 只能存储整数  INTERGER(10)
DEMICAL  储存固定位数的小数  Decimal(4,2)  长度为4  小数位2位  多出位数四舍五入
FLOAT/DOUBLE/REAL 存储不固定位数的小数  FLOAT(5,3) 长度为5  小数位3位  多出位数五舍六入

文本型
CHAR 定长字符串 CHAR(10) 不超过10位字符串,不足十位空位占位
VARCHAR 可变场字符串   VARCHAR(100)  100长度以内都行

日期型:
DATE 日期型 Y-M-D
TIME 时间型 H:I:S
DATETIME 日期型 Y-M-D H:I:S
  • 函数
参数为数值型:绝对值ABS  平方根SQRT 指数函数EXP 四舍五入ROUND 圆周率PI
文本处理函数: 字符长度CHAR_LENGTH 字节数LENGTH 去除左边空值LTRIM 去除右边空值RTRIM 大写字母转换UPPER 小写字母转换LOWER
日期处理函数:获取具体日期段YEAR/MONTH/DATE 获取具体时间段HOUR/MINTUE/SECOND 获取月份名称MONTHNAME 获取当前日期时间NOW 获取当前日期CURDATE 获取当前时间CURTIME 时间增加DATE_ADD 时间减少DATE_SUB

聚合函数
计数函数 COUNT(*)/COUNT(1)  计算指定行的数目
         COUNT(col)          非null行的数目
         COUNT(DISTINCT col) 对行去重计数

求和函数 SUM(col)   指定列的总和
均值函数 AVG(COL)   指定列非空值的平均值
最大值函数 MAX(COL) 指定列的最大值 
最小值函数 MIN(COL) 指定列的最小值

数据分组 GROUP BY:
结果中一行代表一个分组
SELECT AVG(sale_price) FROM table GROUP BY weight;  // 找出weight相同的数据进行分组,在对每组的sale_price求平均值

SELECT AVG(sale_price) FROM table WHERE weight IN (100,150) GROUP BY weight; //先找出where过滤条件里weight IN (100,150)的所有数据,在对数据用weight进行分组,weight相同的数据为一组,求出每组里面的sale_price求平均值

HAVING  对查询出来的结果进行过滤:
SELECT name, AVG(sale_price)
FROM prod
GROUP BY name
HAVING AVG(sale_price)>15    
  • 多表查询
将查询结果用在不同的位置
SELECT [列]
FROM T1
WHERE X IN (
            SELECT [列]
            FROM T2
            WHERE [条件]);

SELECT [列]
FROM (
            SELECT [列]
            FROM T2
            WHERE [条件])
WHERE [条件];

SELECT [列], (
            SELECT [列]
            FROM T2
            WHERE [条件])
FROM T1
WHERE [条件];
表的联结
内部联结 INNER JOIN   必须有共同的列,结果为所有表的所有列、共同列重复的行
SELECT [列]
FROM T1,T2        
WHERE T1.a=T2.b

外部联结  
左外部联结 包含左边表的所有行 LEFT OUTER JOIN
又外部联结 包含右边表的所有行 RIGHT OUTER JOIN

组合查询 
SLECT...
UNION
SELECT...    两个语句的结果合并在一起

  • 增删改

数据插入 INSERT INTO:
INSERT INTO [表] VALUES(每个字段的值);
INSERT INTO [表](列1,列8) VALUES(列1的值,列8的值);

INSERT INTO [表](列A,列B) 
SELECT...
FROM...
WHERE...);   把查询结果插入

数据更新 UPDATE
UPDATE 表名
SET 字段=值
WHERE 过滤条件;

删除数据 DELETE
DELETE FROM  表名
WHERE...                 -- 删除表中的数据

TRUNCATE TABLE 表名  ---删除表

事物管理:管理必须成批执行的SQL操作,使之完全执行或者完全不执行

COMMIT:将SQL语句的执行结果写入数据库表中

ROLLBACK:回滚,撤销SQL语句的执行结果

SAVEPOINT:保留点,时间点的备份,可以对其发布回退

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值