数据库:简而言之,存储数据,管理数据的仓库
常见的数据库类分为:
关系型数据库:oracle、mysql、sqlserver、access
非关系型数据库: MongoDB
2、关系型数据库与非关系型数据库关系型数据库被称为传统数据库,其表之间的关系相当于师生关系,
非关系型数据:表与表之间关系比较松散,如中国人与外国人之间的关系
Oracle数据库收费,mysql数据库不收费、目前阿里已经全面排斥oracle
3、关系型数据库1、关系型数据库有特定的组织方式、以行和列的方式存储数据、以便于用户理解、2、关系型数据库的行与列被称之为表,一组表组成数据库,3、用户通过查询检索数据中的数据,而查询是一个用于限定数据库中某块区域的执行代码,,4、关系模型可以简单的理解成为二维表格模型,而一个关系型数据库就是二维表之间的关系组成的一个数据集合
4、MYSQL数据库1、服务器端:它用来处理具体的数据维护、保存磁盘
2、客户端:CRUD:增加、查找、修改、删除
5、SQL语句一、结构化查询语句、是一种特殊目的的编程语言、是一种数据库查询和程序设计语言、用于存储数据、更新和管理关系型数据库系统,同时也是数据库脚本文件的扩展名、
二、sql语言是1986年10月由美国国家标准局(ANSL)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准
三、分类
1.DML(DATE manipulation language)数据库操作语句
2、DDL:数据库定义语句
3、DCL:数据库控制语句
4、DQL:数据库查询语句
注意:sql不区分大小写
数据库的常用操作创建数据库
查看数据库
删除数据库
使用数据库
MariaDB [(none)]> create database test;
MariaDB [(none)]> use test;
设计学生表
表中有id 、ename字段
查看表字段详细信息
MariaDB [test]> desc student;
添加表字段默认添加在最后一行
MariaDB [test]> alter table student add column class varchar(10);
MariaDB [test]> alter table student add course varchar(10);
MariaDB [test]> alter table student add teacher varchar(12) first; 表字段第一行添加字段
MariaDB [test]> alter table student add Fraction int(10) after ename ;在ename字段后添加字段
修改表字段
MariaDB [test]> alter table student change ename dname varchar(11);
删除表字段
MariaDB [test]> alter table student drop teacher;
更改表名
MariaDB [test]> rename table student to student1;
删除表
MariaDB [test]> drop table student;
创建表、插入记录
create table student1(ID int(10) primary key auto_increment,dname varchar(10));
MariaDB [test]> insert into student1 values(null,"阿炳");
MariaDB [test]> insert into student1(ID) values(null),(null); 添加单独字段数据
查询记录
MariaDB [test]> select * from student1;
修改记录
MariaDB [test]> update student1 set dname="村花" where id=2;
删除记录
MariaDB [test]> delete from student1 where id=3;
数据排序
MariaDB [test]> select * from student1 order by id asc;升序排序
MariaDB [test]> select * from student1 order by id desc; 降序
统计数据记录总数
MariaDB [test]> select count(1) from student1;
6、数据类型命名规则
--- 字段名必须以字母开头、尽力不要使用拼音
---长度不能超过30个字符(不同数据库、不同版本会有不同)
---不能使用SQL的保留字,如 where 、order 、group
---只能使用a-z 、A-z、 0-9 $等
-- oracle习惯全大写、MySQL习惯全小写
--多个单词用下划线隔开
字符
---char长度固定,不足使用空格填充,最多容纳2000个字符,char(11)存储abc,占11位。查询速度极快但浪费空间
---varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空-间。Oracle为varchar2
---大文本: 大量文字(不推荐使用,尽量使用varchar替代)
---以utf8编码计算的话,一个汉字在u8下占3个字节
---注:不同数据库版本长度限制可能会有不同
数字
tinyint,int整数类型
float,double小数类型
numeric(5,2) decimal(5,2)—也可以表示小数,表示总共5位,其中可以有两位小数
decimal和numeric表示精确的整数数字
日期
date 包含年月日
time时分秒
datetime包含年月日和时分秒
timestamp时间戳,不是日期,而是从1970年1月1日到指定日期的毫秒数
图片
blob 二进制数据,可以存放图片、声音,容量4g。早期有这样的设计。但其缺点非常明显,数据库庞大,备份缓慢,这些内容去备份多份价值不大。同时数据库迁移时过大,迁移时间过久。所以目前主流都不会直接存储这样的数据,而只存储其访问路径,文件则存放在磁盘上。
-
一般在字段里使用
lower() 、upper 、length、substr、concat 、replace、ifnull
数据转小写、数据转大写、数据的长度、--截取、拼接数据、把a字符替换成666、判断,如果comm是null,用10替换
round & ceil & floorround四舍五入,ceil向上取整,floor向下取整
now()获取现在、select now() -- 年与日 时分秒select curdate() --年与日
select curtime() --时分秒
year & month & day–hour()时 minute()分 second()秒
查询条件
distinct 去重 在字段里使用
where 、注意:where中不能使用列别名!!
like 通配符%代表0到n个字符,通配符下划线_代表1个字符select * from emp where ename like 'l%' --以l开头的
nullselect * from emp where mgr is null --过滤字段值为空的
between andselect * from emp where sal between 3000 and 10000--等效
limitselect * from emp limit 2 --列出前两条
order bySELECt * FROM emp order by sal #默认升序
聚合 aggregation count max / min sum / avg 分组 group group by having 查询条件,类似where,但是group by只能配合having 主键、外键、唯一索引的区别?- Primary Key 主键约束,自动创建唯一索引
- Foreign Key 外键约束,外键字段的内容是引用另一表的字段内容,不能瞎写
- Unique Index 唯一索引,唯一值但不是主键



