01base
[toc]
# MYSQL
数据库(database)是按照数据结构来组织、存储和管理数据的仓库
Mysql 是一种关系型数据库系统; 它的安全性和稳定性已足以满足许多应用程序的要求,
# 主键
表中每一行都应该有可以唯一标识自己的一列(或一组列)。
注意
任意两行都不具有相同的主键值;
每个行都必须具有一个主键值(主键列不允许NULL值)
不更新主键列中的值
不重用主键列的值
2
3
4
5
# 外键
公共关键字被称为另一个关系的外键。存放着另一个表的主键
具有此外键的表被称为主表的从表。
外键的作用是引用另一个数据表的某条记录; 使两张表形成关联
2
# 数据库的创建
# 1.设计
1.一个好的数据库设计方案应该满足以下几项要求:
数据表里没有重复冗余的数据;
数据表里没有 等重复的数据列;
数据表的空间占用总量越小越好; order1, order2, order3
使用频率高的查询都能以简单高效的方式执行。
2.命名要求
MySQL对数据列的名字不区分大小写,但对数据库和数据表的名字区分大小写;
数据库、数据表和数据列名字的长度最多不能超过64个字符;
在名字里要避免使用特殊字符;
数据表和数据列的名字应该有意义;
2
3
4
5
6
7
8
9
10
11
# 2.设计(公司通信录)
1,挑实体
2,拉关系
3,建库,建表、把实体变成表,把属性变成字段
4,1:n 把 1 这边的主键 放到 n 这边做外键
5,m:n 把两边的主键放到一个新的关系表 里 做外键
2
3
4
5
- 找实体和实体属性
person 员工表
id 员工id
name 员工名字
avatar 员工头像
mobile 手机号
sex 性别(1:男 2:女)
email 邮箱
address 地址
depid 部门id(外键)
jobid 职位id(外键)
createtime 入职时间
department 部门表
id 部门id
name 部门名称
job 职位表
id 职位id
name 职位名称
depid 部门id(外键)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- 拉关系
员工与部门的关系
员工 部门 1:1
部门 员工 1:n
员工与职位的关系
员工 职位 1:1
职位 员工 1:n
职位与部门的关系
职位 部门 1:1
部门 职位 1:n
2
3
4
5
6
7
8
9
10
11
12
13
14
建库 建表
- 新建数据库
utf8 ----- utf8_general_ci规则
- 建模型
新建表 --设置表名
设置字段
主键 id 不是null 设置键 自动递增 无符号
性别:enum 设置默认值
int型的 设置成无符号
设置索引: 为了更好的找到数据
key_name name unique btree 名字唯一索引(不会重复了)
key_外键 id normal btree 外键普通索引
设置外键
fk_..id 外键id 删除时:set null (删除时设置为空) no action(跟新时不修改)
fk_..id 外键id 删除时:set null (删除时设置为空) no action(跟新时不修改)
设置选项
引擎设置为 innoDB
注释
ok
职位表也有一个外键(部门表)
设置fk_..id (不能与上面的外键名一样)
保存模型,导出sql语句
注释:
mysql 注释
1. #
2. /* */
3. --
4. /*! */
2
3
4
5
# sql 基础
sql
:结构化查询语言 (Structured Query language)
sql注入
:用户提交的数据可以被数据库解析执行(前端写的sql语句被后端执行)
- 连接mysql
mysql -u root -p 密码
- 查看版本
select version();
- 基本操作
show databases; //查看数据库
create database test; //新建test数据库
drop database test //小心删除
use test; //使用数据库
show tables; //查看表
//创建表
create table admin(id int not null auto_increment, username varchar(100) not null, password varchar(100) not null, primary key(id));
// not null 不为空
// auto_increment 自增
// primary key(id) 主键 id
// 插入数据
insert into admin(username,password) values("admin","password");
// insert into 插到哪里 admin表的字段
// values() 值
show full columns from admin; // 查看字段 意义
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
google : inurl:php?id=
搜索语法
# 基础查询语句
- select
查询语句
select * from table; // 查询表中所有字段
select name,password,age from table; // 查询表中的三个字段
2
3
- distinct
去重复的值
select distinct * from table; //查询表去掉重复的值
- where
按条件地从表中选取数据
操作符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
select * from table where username='user';
// 查询表中的 username="user" 的字段
select * from table where age>30;
// 查询表中 age大于30 的字段
2
3
4
5
- AND和OR
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
and: 都满足条件
or: 满足一个条件
select * from table where (user="admin" or user="abc") and password='admin';
// 查询表中 用户名等于admin或abc的用户,而且密码要为damin
2
3