mysql的解释
1.为什么要使用数据库:永久化
1.1数据库是什么:存储数据的"仓库"; 本质也是一个文件
数据想要永久化(数据库,本质:一个文件)
2.数据存储在什么地方: 变量(内存,临时存在)、硬盘、U盘、网盘(文件)
3.数据库的作用:
3.1.存储大量的数据 ,访问和检索(管理数据 )
3.2. 保证数据的完整性(正确性)
3.3. 安全和共享
3.4. 数据可以进行组合(数据分析)
4.数据库存储的发展历史
4.1. 层次模型
4.2. 网状模型
4.3. 关系模型(重点)
4.4. 对象模型(非关系模型): mongodb
5.关系型数据库
以表为基本单位;表由行列组成。
表: 就存储相同实体(记录)的一个集合;
行:一个实体或一行记录
列: 属性,字段
关系型: 由实体和关系组成
1对1(1:1)
1对多(1:N)
多对多(N:N)
6. 数据库管理系统
数据库(DataBase ,简称:DB)
管理系统(Manage System, 简称MS)
关系型(Ralation: 关系)
关系型数据库管理系统(RDBMS)
SQL Server、oracle 、db2, mysql , access ,sybase等等
mysql、SQL Server、oracle
7.SQL是结构化查询语言(Structured Query Language)
数据定义语言(DDL) - Data Define Lanuage
数据查询语言(DQL) Query
数据操作语言(DML) Manage
数据控制语言(DCL): Control
数据库操作
一、数据库
1.1创建数据库:create database 数据库名称
命名规范:
(1)第一个字符必须是下列字符之一:
a-z 和 A-Z
下划线 (_)、at 符号 (@) 或者 #
(2)后续字符可以是
at符号(@)、美元符号 ($)、数字符号或下划线
标识符不能是所用RDBMS的保留字。
不允许嵌入空格或其它特殊字符
1.3删除数据库:drop database 数据库名称;
1.4使用数据库:use 数据库名称;
二、表
数据类型:
int
float
double
decimal
char
varchar
date
datetime
…
重点:数据完整性的分类
- 实体完整性(约束行)
主键约束:PRIMARY KEY
标识列:AUTO_INCREMENT
唯一:UNIQUE
注:主键与唯一约束的区别
唯一约束,可以为null ,但是主键不能为Null
- 域完整性(约束列)
非空约束:NOT NULL
默认约束:DEFAULT '默认的值’
check约束(长度,范围等等) - 引用完整性
外键约束:constraint foreign key(从表列名) references(主表 (主表列名))
外键和外键约束
外键:就是在定义表时,约定的关系,不会强制它
外键约束:创建表时,约定的外键关系,sql会强制执行
从表的数据,必须在主表存在,否则报错
主表的数据删除,必须保存从表没有引用,否则报错
- 自定义完整性
自己定义规则(存储过程,视图,触发器)
5.操作
5.1创建表:create table 表名;
eg:
CREATE TABLE student(
id INT,
s_name VARCHAR(20),
s_age INT,
s_sex CHAR(4),
s_birthday DATE,
s_time DATETIME,
s_class VARCHAR(20)
);
5.2删除表:drop table 表名;
5.3复制表:
create table 表名 select * from 表名2; – 复制表的结构和数据
create table 表名 select * from 表名2 where 1=0; – 复制表的结构
注:外键不会被复制
5.4修改表
添加列
alter table 表名 add 列名 列的数据类型 列的约束
修改列
alter table 表名 change 旧列名 新列名 新的数据类型 新的约束
删除列
alter table 表名 drop 列名
DML(表的数据)
1.添加数据
单行数据:
全部列: insert into 表名 values(数据) ; //数据要求和表里的列一一对应
部分列: insert into 表名(列名) values (数据); //数据和列名一一对应
多行数据:
insert into 表名(列名) values (数据),(数据2),(数据3)…;
eg:
表
CREATE TABLE xs_shop(
x_id INT AUTO_INCREMENT PRIMARY KEY,
x_bh VARCHAR(50) NOT NULL,
x_date DATE,
x_number INT NOT NULL,
x_jg DECIMAL(10,2) NOT NULL,
x_zong DECIMAL(10,2) NOT NULL,
x_yg VARCHAR(20) NOT NULL
);
添加多行数据
INSERT INTO xs_shop VALUES
(NULL,'xs1001','2013-12-2',124,134.5,16678,'张三'),
(NULL,'xs1002','2013-12-2',50,80,4000,'李四'),
(NULL,'xs1003','2013-12-5',66,55,3630,'张二'),
(NULL,'xs100','2013-11-20',10,134.5,1345,'张三')
);
2.修改数据
update 表名 set 列名= 新的值
update 表名 set 列名= 新的值 [where 条件]
条件中,使用的关系表达式: and , or
mysql中不等于,支持!= 和 <>
3.删除数据
delete from 表名
delete from 表名 [where 表名]
truncate table 表名; – 删除所有名的数据
truncate 和delete 两者的区别:
truncate和delete都可以实现数据的删除; delete 删除时会日志(可以恢复),效率比较低,且不能重置自增列
truncate没有日志(不能恢复),效率高,且能重置自增列