01base

goer ... 2022-01-12 Mysql
  • Databases
  • Mysql
大约 4 分钟

mysql

[toc]

# MYSQL

数据库(database)是按照数据结构来组织、存储和管理数据的仓库

Mysql 是一种关系型数据库系统; 它的安全性和稳定性已足以满足许多应用程序的要求,
1

# 主键

表中每一行都应该有可以唯一标识自己的一列(或一组列)。

注意
    任意两行都不具有相同的主键值;
    每个行都必须具有一个主键值(主键列不允许NULL值)
    不更新主键列中的值
    不重用主键列的值
1
2
3
4
5

# 外键

公共关键字被称为另一个关系的外键。存放着另一个表的主键

具有此外键的表被称为主表的从表。           
外键的作用是引用另一个数据表的某条记录; 使两张表形成关联
1
2

# 数据库的创建

# 1.设计

1.一个好的数据库设计方案应该满足以下几项要求:
    数据表里没有重复冗余的数据;
    数据表里没有 等重复的数据列;
    数据表的空间占用总量越小越好; order1, order2, order3
    使用频率高的查询都能以简单高效的方式执行。

2.命名要求
    MySQL对数据列的名字不区分大小写,但对数据库和数据表的名字区分大小写;
    数据库、数据表和数据列名字的长度最多不能超过64个字符;
    在名字里要避免使用特殊字符;
    数据表和数据列的名字应该有意义;
1
2
3
4
5
6
7
8
9
10
11

# 2.设计(公司通信录)

1,挑实体 
2,拉关系
3,建库,建表、把实体变成表,把属性变成字段
4,1:n  把 1 这边的主键 放到 n 这边做外键
5,m:n 把两边的主键放到一个新的关系表 里 做外键
1
2
3
4
5
  1. 找实体和实体属性
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(外键)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  1. 拉关系
员工与部门的关系

员工    部门  1:1
部门    员工  1:n

员工与职位的关系

员工    职位  1:1
职位    员工  1:n

职位与部门的关系

职位    部门  1:1
部门    职位  1:n
1
2
3
4
5
6
7
8
9
10
11
12
13
14

建库 建表

  1. 新建数据库

utf8 ----- utf8_general_ci规则

  1. 建模型

新建表 --设置表名

设置字段

主键 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. /*! */
1
2
3
4
5

# sql 基础

sql:结构化查询语言 (Structured Query language)

sql注入:用户提交的数据可以被数据库解析执行(前端写的sql语句被后端执行)

  1. 连接mysql

mysql -u root -p 密码

  1. 查看版本

select version();

  1. 基本操作
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;   // 查看字段 意义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

google : inurl:php?id=搜索语法

# 基础查询语句

  1. select

查询语句

select * from table;   // 查询表中所有字段

select name,password,age from table;  // 查询表中的三个字段
1
2
3
  1. distinct

去重复的值

select distinct * from table;  //查询表去掉重复的值
1
  1. where

条件地从表中选取数据

操作符 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
select * from table where username='user'; 
// 查询表中的  username="user"  的字段

select * from table where age>30;
// 查询表中  age大于30 的字段
1
2
3
4
5
  1. AND和OR

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

and: 都满足条件

or: 满足一个条件

select * from table where (user="admin" or user="abc") and password='admin';

// 查询表中  用户名等于admin或abc的用户,而且密码要为damin
1
2
3

info (opens new window)