数据库学习,先进行MYSQL学习,阿里云大课堂学习笔记
基础知识:
1、 主流数据库以及公司
Oracle:甲骨文【大多数】
DB2:IBM
SQL Server:微软
Sybase:塞尔斯
MySQL:甲骨文
2、 数据库
RDBMS = 管理员(manager)+仓库(database)
Database=N个table
Table:
表结构:定义表的列名和列类型
表记录:一行行的记录(数据)
3、 安装文件所在路径不要包含中文
4、 SQL语句可以单行或者多行书写,以分号作为结尾;MYSQL不区分大小写,建议使用大写;
5、 SQL语句分类
① DDL数据定义语言,用来定义数据库对象(库、表、列等);
② DML数据操作语言,增删改表记录;
③ DCL数据控制语言,用来定义访问权限和安全级别
④ DQL查询表的记录
MYSQL数据库语言
DDL
1、 数据库
查看所有数据库:SHOW DATABASES;
切换数据库:USE 数据库名;
创建数据库:CREATE DATABASE [IF NOT EXISTS] mydbl1 [CHARSET=utf-8];
删除数据库:DROP DATABASE [IF EXISTS] mydb1;
2、 数据类型
int
double:例如double(5,2)表示最多5位,其中必须有2位小数
char:固定长度字符串类型,数据长度不是指定长度会补足到指定长度
varchar:可变长度字符串
date:日期类型,格式为yyyy-mm-dd
time:时间类型,格式为hh:mm:ss
3、 表
创建表:
CREATE TABLE [IF NOT EXISTS] 表名(
列名 列类型,
…
列名 列类型
);
查看当前数据库中所有表名称:SHOW TABLES;
查看表结构:DESC 表名;
删除表:DROP TABLE 表名;
修改表:前缀ALTER TABLE 表名
增加列 ADD
ALTER TABLE 表名
ADD(
列名 列类型,
……
列名 列类型);
修改之修改列类型 ALTER TABLE 表名 MODIFY 列名 列类型
修改之删除列 ALTER TABLE 表名 DROP 列名;
修改之表名称 ALTER TABLE 原表名 RENAME TO 新表名;
DCL:
一个项目创建一个用户,一个项目对应的数据库只有一个,该用户只对该数据库有操作权限
- 创建用户:①CREATE USER 用户名@IP地址 IDENTIFIED BY ‘密码’; ②CREATE USER 用户名@’%’ IDENTIFIED BY ‘密码’;
- 给用户授权:GRANT 权限1,……,权限n(ALL) ON 数据库.* TO 用户名@IP地址;
- 撤销授权:REMOVE 权限 ON 数据库.*FROM 用户名@IP地址;
- 查看权限:SHOW GRANTS FOR 用户名@IP地址;
- 删除用户:DROP USER 用户名@IP地址;
DQL:查询数据库
基础查询:
查询指定(所有)列:select 列1,列2……(*) from emp;
关键字DISTINCT:重复数据的时候,只显示一行
列运算:
数量型:加减乘除
字符串型:连续CONCAT SELECT CONCAT(‘$’,sal) FROM emp;
转换NULL:FNULL(com,0)如果com列中存在NULL值,将NULL转换为0计算
SELECT IFNULL(com,0)+100 FROM emp;
给列起列名:SELECT IFNULL(com,0)+100 AS 奖金 FROM emp;
条件控制
WHERE
模糊查询:SELECT * FROM emp WHERE ename LIKE ‘_刚’; ‘_’匹配一个字符,‘%’匹配0-N个字符
排序
升序:ASC,或者省略
降序:DESC SELECT * FROM emp ORDER BY comm DESC;
多列:SELECT * FROM emp ORDER BY comm DESC, ename ASC;
聚合函数
COUNT:计算列中不为NULL的个数
SUM
MAX/MIN
分组查询
SELECT job, count(*) FROM emp GROUP BY job;
SELECT之后可以跟分组的类别以及聚合函数
分组前的条件使用WHERE
SELECT job, count(*) FROM emp WHERE sal > 15000 GROUP BY job;
分组后的条件使用HAVING
SELECT job, count(*) FROM emp WHERE sal > 15000 GROUP BY job HAVING ;
执行顺序:SELECT>FROM>WHERE>GROUP BY>HAVING>ORDER BY
LIMIT:查询起始行(从0开始计数)以及总行数
DML:数据操作语言
- 插入:INSERT INTO 表名(列名1,列名2,……) VALUES(列值1,列值2,……);
在数据库中所有的字符串类型,必须使用单引号,不能使用双引号 - 修改:UPDATE 表名 SET 列名1=列值1, 列名2=列值2,……[WHERE 条件];
- 删除数据:DELETE FROM 表名 [WHERE 条件];
注TRUNCATE TABLE 表名; TRUNCATE是DDL语句,先drop该表 ,再create该表,无法回滚