数据库01
数据库概念
数据库是指长期存储在计算机内、有组织的数据集合。简而言之,数据库就是一个存储数据的地方。表是数据库中存储数据的基本单位,数据按照分类存储到不同的表中,能够非常高效的查询其 中的数据
关系型数据库RDBMS
- 当前主要使用两种类型的数据库:关系型数据库、非关系型数据库,我们主要学习主流的关系 型数据库
- 所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概 念和方法来处理数据库中的数据
关系型数据库的主要产品
oracle:在以前的大型项目中使用,银行,电信等项目
mysql:web时代使用最广泛的关系型数据库 ms sql
server:在微软的项目中使用
sqlite:轻量级数据库,主要应用在移动平台
关系型数据库核心元素
数据行(一条记录)
数据列(字段)
数据表(数据行的集合)
数据库(数据表的集合,一个数据库中能够有 n 多个数据表)
SQL
- 在数据库中进行操作的语言,称为sql,结构化查询语言,当前关系型数据库都支持使用sql语言进 行操作,也就是说可以通过 sql 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
- SQL 是一门特殊的语言,专门用来操作关系数据库 不区分大小写
- 重点是查询
MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购, Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品
特点
- 支持多种操作系统,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、 NovellNetware、OpenBSD、OS/2 Wrap、Solaris等
- 开源 免费 使用范围广 支持多平台
- 是学习数据库开发的首
数据类型与约束
为了更加准确的存储数据,保证数据的正确有效,需要合理的使用数据类型和约束来限制数据 的存储。
常用数据类型
- 整数:int,有符号范围(-2147483648 ~2147483647),无符号范围(0 ~ 4294967295)
- 小数:decimal,如decimal(5,2)表示共存5位数,小数占2位,整数占3位
- 字符串:varchar,范围(0~65533),如varchar(3)表示最多存3个字符,一个中文或一个字 母都占一个字符
日期时间: datetime,范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59),如‘2020-01-01 12:29:59‘
约束
- 主键(primary key):物理上存储的顺序 (int类型, 无符号, 自动递增, 唯一的标识一条记录)
- 非空(not null):此字段不允许填写空值
- 惟一(unique):此字段的值不允许重复
- 默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准
外键(foreign key):维护两个表之间的关联关系
查询数据
鼠标左键点击某个数据库下面的查询按钮,然后点击新建查询
在打开的查询编辑器中,输入下面的SQL查询语句select * from students
然后点击运行按钮,既显示查询的结果
Ctrl + /
注释Ctrl + Shift + /
取消注释
创建表
create table 表名( 字段名 类型 约束, 字段名 类型 约束 ... )
例:创建学生表,字段要求如下:
姓名(长度为10)
create table students( name varchar(10) )
例:创建学生表,字段要求如下:
姓名(长度为10), 年龄
create table students( name varchar(10), age int unsigned )
例:创建学生表,字段要求如下:
姓名(长度为10), 年龄,身高(保留小数点2位)
create table students( id int unsigned primary key auto_increment, name varchar(10), age int unsigned, height decimal(5,2) )
删除表
格式一:drop table 表名
格式二:drop table if exists 表名
例:删除学生表drop table students
或 drop table if exists students
简单查询
select * from 表名
例:查询所有学生数据 select * from students
添加数据
- 添加一行数据
格式一:所有字段设置值,值的顺序与表中字段的顺序对应
说明:主键列是自动增长,插入时需要占位,通常使用0或者 default 或者 null 来占位,插入 成功后以实际数据为准insert into 表名 values(...)
例:插入一个学生,设置所有字段的信息insert into students values(0,‘亚瑟‘,22,177.56)
格式二:部分字段设置值,值的顺序与给出的字段顺序对应insert into 表名(字段1,...) values(值1,...)
例:插入一个学生,只设置姓名
insert into students(name) values(‘老夫子‘)
- 添加多行数据
方式一:写多条insert语句,语句之间用英文分号隔开insert into students(name) values(‘老夫子2‘); insert into students(name) values(‘老夫子3‘); insert into students values(0,‘亚瑟2‘,23,167.56)
方式二:写一条insert语句,设置多条数据,数据之间用英文逗号隔开
格式一:insert into 表名 values(...),(...)...
例:插入多个学生,设置所有字段的信息 insert into students values(0,‘亚瑟3‘,23,167.56),(0,‘亚瑟4‘,23,167.56)
格式二:insert into 表名(列1,...) values(值1,...),(值1,...)...
例:插入多个学生,只设置姓名insert into students(name) values(‘老夫子5‘),(‘老夫子6‘)
修改
格式:update 表名 set 列1=值1,列2=值2... where 条件
例:修改id为5的学生数据,姓名改为 狄仁杰,年龄改为 20update students set name=‘狄仁杰‘,age=20 where id=5
删除
格式:delete from 表名 where 条件
例:删除id为6的学生数据delete from students where id=6
逻辑删除:对于重要的数据,不能轻易执行delete语句进行删除,一旦删除,数据无法恢复,这时可以进行逻辑删除。
1、给表添加字段,代表数据是否删除,一般起名isdelete,0代表未删除,1代表删除,默认值为0
2、当要删除某条数据时,只需要设置这条数据的isdelete字段为1
3、以后在查询数据时,只查询出isdelete为0的数据
例:
1、给学生表添加字段(isdelete),默认值为0,如果表中已经有数据,需要把所有数据的isdelete字段更新为0update students set isdelete=0
2、删除id为1的学生 update students set isdelete=1 where id=1
3、查询未删除的数据 select * from students where isdelete=0