数据库基础
数据库基本概念
数据模型的三要素:数据结构、数据操作、数据约束
数据库(DB)
数据库管理员(DBA)
数据库管理系统(DBMS)
数据库系统(DBS)=DB+DBMS+DBA+应用程序
数据库的发展阶段
人工管理——>文件系统——>数据库系统
数据库系统的特点
数据结构化
数据安全性和完整性保障
数据的高独立性
数据由DBMS统一管理和控制
易于使用
便于扩展
LAMP
LAMP即linux操作系统+apacheHTTP服务器+Mysql数据库+php/perl/python,一般用来建立web应用平台
数据库在web中的风险
弱密码
sql注入攻击
sql注入攻击的影响:
1.非法读取、篡改、添加、删除数据库中的数据
2.通过修改数据库来修改网页内容;私自添加或删除账号
3.植入木马
sql语言
包含四个部分:
DQL:数据查询语言
DML:数据操纵语言
DDL:数据定义语言
DCL:数据控制语言
DDL的关键字
create table:创建数据库表
alter table:更改表结构、添加修改列长度
drop table:删除表
create index:在表上创建索引
drop index:删除索引
drop database:删除库
DCL的关键字
grant:授予访问权限
revoke:撤销访问权限
commit:提交事务
roolback:回退事务
DML的关键字
insert:添加数据到数据库中
updata:修改数据库中的数据
delete:删除数据库中的数据
DQL的关键字
select:查询数据库中的数据
常用数据库
oracle数据库
使用PL/SQL语言执行各种操作
默认端口号:1521
SQL server数据库
微软开发的大型关系数据库系统
默认端口号:1433
优点:
功能全面,效率高
可与windows系统紧密集成,开发速度与运行速度高
缺点:
只能在windows下运行
MySQL数据库
默认端口号:3306
特点
开源,无需付费
可在多个系统上运行,并支持多种语言
PostgreSQL
默认端口号:5432
DB2数据库
IBM公司开发
默认端口号:5000
特点
较好的可伸缩性
可支持从大型机到单用户环境
应用于unix、linux、windows等平台下
Access数据库
小型桌面数据库
可供个人管理或小型企业使用
特点
完善管理各种数据库对象
强大的数据处理功能
方便的生成各种数据对象,利用存储的数据建立窗体和报表
与office集成
能利用web检索和发布数据,实现与internet的链接
MongoDB数据库
非关系型数据库
默认端口号:27017
MySql使用
登录
参数 | 描述 |
---|---|
-u | 用户名 |
-p | 密码 |
-P | 端口号 |
-h | 主机地址 |
初始账户和密码都为:root
常用命令
mysql初始自带四个数据库,分别为:mysql、information_schema、test、performance_schema。
information_schema主要存储数据库对象相关概要(schema)信息
Mysql在linux中严格区分大小写。Windows中不区分大小写
查看信息:
show databases:查看有哪些数据库
use information_schema:进入information_schema数据库
show tables:查看数据库中的表
select database():查看当前所在的数据库
select version():查看数据库版本
select now():查看当前日期和时间
select user():查看当前用户
desc 表名:查看表中列的数据类型
对数据库操作
操作数据库:
创建数据库:create database 数据库名 charset 字符集;
删除数据库:drop database 数据库名;
修改数据库:alter database 数据库名 键值
字符串类型
整形的类型
浮点数、定点数
创建数据表:
create table 表名(
列名1 数据类型
列名2 数据类型
表级约束条件
);
枚举:“单选题”
enum(’男‘,’女‘);
集合:“多选题”
set(’选项1‘,’选项2‘,’选项3‘,…);
约束类型
约束类型 | 非空约束 | 主键约束 | 唯一约束 | 默认约束 | 外键约束 |
---|---|---|---|---|---|
关键字 | not null | primary key | unique | default | foreign key |
对表操作
修改表添加列:
alter table reader add email varchar(30);
在已存在的表中添加列,指定位置:
alter table 表名 add 新列名 数据类型 [约束条件] [first|after 列名];
修改列名:
alter table 表名 change 旧列名 新列名 新数据类型;
修改列的数据类型:
alter table 表名 modify 列名 数据类型;
修改列的排列位置:
alter table 表名 modify 列名1 数据类型 first|after 列名2;
删除列:
alter table 表名 drop 列名;
修改表名:
alter table 旧表名 rename [to] 新表名;
删除表:
drop table 表名1,表名2;
插入数据:
指定列插入数据:
insert into 表名(列1,列2…)values(值1,值2…);
直接插入数据:
insert into 表名 values(值1,值2…);
对表中的数据操作
删除数据:
删除表中所有数据:delete from 表名;
删除符合条件的数据:delete from 表名 [where 条件];
更改数据:
update 表名 set 字段名=字段内容 [where 条件];
更改结构:
增加字段:alter table 表名 add 字段名 字段约束条件
删除字段:alter table 表名 drop 字段名
修改字段:alter table 表名 change 字段名 新字段名 字段约束条件
修改字段约束条件:alter table 表名 modify 字段名 字段约束条件
查询数据
select 列名 from 表名;
运算符
逻辑运算符
子查询
带in的子查询
例:select name from student where dept in (select dept from depts where name = ‘zhangsan’);
模糊查询:
1.% 代表零或多个字符,可用于定义通配符(模式中缺少的字母)
2._ 代表一个字符
去除重复列: distinct
常用函数
名称 | 描述 |
---|---|
avg() | 返回某列的平均值 |
count() | 返回某列的行数 |
max() | 返回某列的最大值 |
min() | 返回某列的最小值 |
sum() | 返回某列的和 |
ceil() | 返回大于x的最小整数值 |
floor() | 返回小于x的最大整数值 |
round(x) | 返回最接近于x的整数 |
round(x,y) | 返回最接近于x的数,保留到小数点后y位 |
truncate(x,y) | 返回被舍去至小数点后y位的数字x。若y=0,则为整数。 |
mod(x,y) | 返回x被y除后的余数 |
concat(s1,s2,s3…) | 连接参数产生的字符串,若任意参数为null则返回为null |
concat(x,s1,s2…) | 以x为分隔符连接其他字符串,若x为null返回值也为null |
lower(str) | 将str中的大写字母转换为小写 |
upper(str) | 将str中的小写字母转换为大写 |
length(str) | 返回字符串长度 |
ltrim(s) | 返回s,删除字符串左侧空格 |
rtrim(s) | 返回s,删除字符串左侧空格 |
trim(s) | 返回s,删除字符串两侧空格 |
substring(s,n,len) | 从s返回len长度的数据,以n为启示 |
left(s,n) | 返回字符串最左边的n个字符 |
right(s,n) | 返回字符串最右边的n个字符 |
curdate() | 返回当前时间 |
datediff(date1,date2) | 返回date1和date之间的天数 |