1. 什么是数据库?
数据库: database,存储数据的仓库
数据库:高效的存储和处理数据的介质(介质主要是两种:磁盘和内存)
2. 数据库的分类?
数据库基于存储介质的不同:进行了分类分为两类:
关系型数据库(SQL)和非关系型数据库(NoSQL: Not Only SQL,不是关系型的数据库都叫做非关系型数据库)
3.不同的数据 库阵营中的产品有哪些?
关系型数据库
-
大型: Oracle, DB2
-
中型: SQL-SERVER, Mysql等
-
小型: acess等
非关系型数据库
memcached, mongodb, redis(同步到磁盘)
4.两种数据库阵营 的区别?
-
关系型数据库:安全(保存磁盘基本不可能丢失),容易理解,比较浪费空间(二维表)
-
非关系型数据库:效率高,不安全(断电丢失)
关系型数据库
1. 什么是关系型数据库?
-
关系型数据库 一种建立在关系模型(数学模型)上的数据库
-
关系模型 一种所谓建立在关系上的模型.关系模型包含三个方面
-
数据结构 数据存储的问题,二维表(有行和列)操作指令集合:所有SQL语句
-
完整性约束 表内数据约束(字段与字段),表与表之间约束(外键)
1、数字类型
数据类型 | 单位 |
---|---|
整型 | |
Tinyint | 1 字节 |
smallint | 2 字节 |
mediumint | 3 字节 |
int | 4 字节 |
bigint | 8 字节 |
浮点型 | |
float | 8 或 4 字节 |
double | 8 字节 |
字符串类型 | |
char | 0 ~255个字符 |
varchar | 0 ~255个字符(长度可变) |
时间和日期类型 | |
date | 1000-01-01 到 9999-12-31 之间 |
time | -838:58:59 到 835:59:59之间 |
补充
整型:
1.SQL中的数值类型全部都是默认有符号:分正负有时候需要使用无符号数据:需要给数据类型限定: int unsigned
; --无符号:从0开始
2.查看表结构的时候,发现每个字段的数据类型之后都会自带-一个括号里面有指定的数字
image.png
3.显示宽度
:没有特别的含义,只是默认的告诉用户可以显示的形式而已:世界上用户是可以控制的,这种控制不会改变数据本身的大小,
显示宽度的意义
:在于当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度:通常需要搭配-一个前导0来增加宽度,不改变值大小: zerofil(零填充):零填充会导致数值自动变成无符号
浮点型:
创建浮点数表
:浮点的使用方式:直接float表示没有小数部分; float(M,D): M代表总长度,D代表小数部分长度,整数部分长度为M-D
插入数据,
可以是直接小数,也可以是科学计数法
浮点型数据的插入:
整型部分是不能超出长度的,但是小数部分可以超出长度
(系统会自动四舍五入)
结果:
浮点数一定会进行四舍五入(超出精度范围):浮点数如果是因为系统进位导致整数部分超出指定的长度那么系统也允许成立,
时间和日期
image.png2.MySQL 数据库操作
-
创建数据库
注意:数据库名字不能用关键字或者保留字(如果非要使用关键字或者保留字,那么必须使用反引号
)
create database 数据库名字;
- 查看数据库
show databases;
- 选择数据库
use 数据库名;
- 删除数据库
drop database 数据库名;
3、MySQL 数据表操作
- 创建数据表
use use 数据库名;
create table 数据表名(、、、、);
create table 数据库名.数据表名(、、、、);
-
查看表结构
1.查看所有表
show tables;
2.产看部分表
image.png3.查看表的创建语句
image.png
4.查看表结构
describe 数据表名;
//或者
desc 数据表名;
//或者
show columns from 数据表名;
- 删除数据表
drop table 数据表名;
还可以一次性删除多张表
drop table 数据表名,数据表名2.....;
4.约束约束的类型:
一、实体完整性约束
1、主键约束 :
primary key, 特性:唯一性,非空性
二、参照完整性约束
2、外键约束
...foreign key(属性名) references 参照表名(参照属性名)
三、用户自定义完整性约束
3.默认值约束
default
4.非空约束
not null (null!=0)
5.检查约束
check
6.唯一性约束
unique
注意:一个表,没有主键是可以创建起来的,但是没有实际意义。
Create table person(
person_id char(10) primary key, /*列级约束*/
name varchar(10) not null ,gender char(1) check gender=’m’ or gender =’f’,
birth_date date default ‘1990-1-1’)
Create table food (
Person_id char(10),
Food_name varchar(20),
Constraint PK_food primary key(person_id,food_name) /*表级约束*/
Constraint FK_food foreign key(person_id) references person(person_id) /*表级约束*/
5.属性增删改查
- 增加
alter table 表名 ADD column 属性名 数据类型 约束条件;
image.png
例如:
image.png
- 删除
alter table 表名 drop 属性名 ;
image.png
-
修改
1.修改表名
rename table 旧表名 to 新表名;
//或者
alter table 旧表名 rename to 新表名;
2.只修改属性数据类型
alter table 表名 modify 属性名 要修改的数据类型;
image.png
3.只修改属性名称
alter table 表名 change 旧属性名 新属性名 数据类型;
image.png
4.修改属性名称和属性数据类型
alter table 表名 change 旧属性名 新属性名 要修改的数据类型;
-
查看
1.查看表结构
desc 表名;
show columns from 表名;
2.查看表的属性值
select * from 数据库名.表名;
6.属性数据增删改查
-
增加
1.插入全部属性数据
insert into 表名 values('第一个属性的值','第二个属性的值');
2.插入多条属性数据
insert into 表名 values('第一个属性的值','第二个属性的值'),
('第一个属性的值','第二个属性的值'),
('第一个属性的值','第二个属性的值');
3.插入部分属性数据
insert into 表名 (要插入的属性名1,要插入的属性名2) values ('属性名1对应的值','属性名2对应的值');
- 删除
delete from 表名 where 满足的条件(具体的属性名=‘具体的属性值’)
- 修改/更新
update 表名 set 属性名=‘要修改的属性值’ where 属性名=‘原属性值’
- 查看
select 属性名 from 表名 where 满足的条件
//同时满足两个条件
select 属性名 from 表名 where 满足的条件1 and 满足的条件2
select 属性名 from 表名 where between 满足的条件1 and 满足的条件2
解决乱码问题
image.png7.补充
-
Auto_increment
自增约束,默认从1开始自增,只能用于主键,不能对非主键属性进行约束。
create talbe test(
colum1 int primary key auto_increment,
colum2 varchar(20) ,
colum3 char(10));
-
Temporary 关键字
定义表的类型为临时表,只能创建它的用户可见,当关闭数据库链接时,MySQL中创建的临时表会被自动删除。 - after 关键字
Alter table test modify colum3 char(10) after colum1;
-
用set关键字向表中插入数据
注意一次只是插入了一条记录,一个语句中只出现一个set。
例
Insert into test set colum2 =’Jiangsu’, colum3 = ‘nanjing’;
- 一条SQL语句中,可同时对多个属性进行修改 例:
Alter table test add colum4 date , drop colum3;
/*增加了一个属性colum4,同时删除了一个属性colum3*/
- 复制基本表
- 用关键字like,例:
Create table test_a like test;
注意:此语句复制了原表test的所有属性及属性的约束及后面将会讲的索引,但test中的内容不会被复制到test_a中。
2.用关键字as select...,例:
Create table test_b as select colum1,colum2 from test;
注意:此句复制了select 所查询的属性(未被查询的属性没有被复制)及表中属性的数据,但是test表中的索引及完整性约束并未被复制到test_b中。
8.单表查询基本的语法结构:
Select 查询的内容1,查询的内容2 from 表名 where 过滤条件 ;
-
关系表达式
可以用关系运算符(如>,<,!=...)将某个属性满足的关系写出来,注意属性与值要有可比较性。例:查询test表中colum1的值大于5的所有的属colum3:
Select colum3 from test where colum1>5;
当有多个条件时,可以用关键字 and 或or将条件进行连接。
例查询test表中colum1的值大于20或小于5的的所有的属性colum3:
Select colum3 from test where colum1>20 or colum1 <5;
-
between and 关键字
注意between 后的属性值要小于and后的属性值,且取值范围为一个闭区间。 -
字符匹配
%表示匹配0个或1 个或多个字符;
_表示匹配一个字符。
8.1 聚合函数
1.求和函数 :SUM( )
2.求平均值函数:AVG( )
3.算数量函数:COUNT( )
4.求最大值函数:MAX( )
5.求最小值函数:MIN( )
8.2 子句
1.group by
用于结合合计函数,根据一个或多个列对结果进行分组。
select sclass,count(sno) from student group by sclass;
//查询出每个班级的总人数
2.having
对数据进行筛选,条件中经常包含聚合函数
select sclass,count(sno) from student group by sclass having count(sno)>5 ;
//查询出每个班级的总人数超过5的班级和人数
3.order by
按照升序对记录进行排序。
desc 降序
asc 如果这个条件不满足,就用另一个条件。例如:
select * from student order by height desc weight asc;
//按照升高对其进行降序排列,如果身高相等就按照体重进行排列
4.limit
强制 select 语句返回指定的记录数
select * from student order by son limit 6;
//查询出学号排在最前 6 位的学生的所有信息
9.创建视图
CREATE VIEW 视图名 AS
SELECT 创建视图的属性
from 创建视图所需的表
where 表联系的条件;
例如:
创建一个视图,视图名为v_employee,视图包含员工号,姓名,住址与工资
CREATE VIEW v_employee AS
SELECT work.empno,name,address,wage
from employee,work
where employee.empno=work.empno;
网友评论