赞
踩
DB Database 数据库
DBMS Database Manager System 数据库管理系统 :数据库的管理软件,科学有效的管理数据,维护和获取数据。如Navicat
DBS Database System 数据系统
DBA Databse Administrator 数据库管理员 一般就是值我们程序员
关于表格里的字段,也可以成为列,或者属性
表里的列,是指数据,每行都是一个单独的数据
概念解释: 三大范式其实就是数据库建表的规范。
第一范式(字段):字段是明确的,不能有歧义,不可再拆分
第二范式(行):表一定要有主键。要求一张表中的每一列都完全依赖于主键
有些表自带主键,但是还有很多表没有主键
如果表没有自带主键,设计者需要提供一个主键
一般用int类型,插入时会自动增长的主键——【自动增长的主键】,语法如下
CREATE TABLE GRADE (
id INT PRIMARY KEY AUTO_INCREMENT,# 自增主键
...其他字段);
第三范式(关系):两个表之间的关系,只需要主键 进行关联———其他表格里的主键被称为“外键”。
举个例子,比如一个班级表:班级编号、班级名称、班级教室…
学生表:学号、姓名、性别、班级编号…
还有更多范式,比如BCNF范式,暂不做要求
ER图 (实体联系图 Entity / Relation )
工具:word 画图 visio等
ER图 | 表格 | 图形 |
---|---|---|
实体 | 表 | 长方形 |
属性 | 字段 | 椭圆 |
标识符 | 关键字/主键 | 属性下划横线 |
联系 | 外键 | 连线中间画菱形 |
1:1 1:n n:m
当插入外键的数据后,受到主键的约束,一定要在主键表存在
概念:强制执行的应用规则,建立和使用约束条件的目的是保证数据的完整性
完整性约束的基本语法格式为:
[ CONSTRAINT < 约束名 > ] < 约束类型 >
其中约束名是用户自定义的名称,要求在同一个数据库中约束名不能够重复。如果用户没有定义约束名,则由数据库系统给定一个不重复的约束名。
完整性约束目前在企业中的运用得越来越少,凡是都有利弊,约束过多反而会影响速度,从而降低用户体验
完整性约束包含众多约束,包括:主键约束,外键约束,唯一性约束,非空约束,check规则等等
主键是用能够唯一表示表中的每一行的一列或一组列,这一列的数据或一组列的组合中的数据不会出现重复,且不为空。
唯一性约束能够确保多列或多列的组合数据的唯一性。
唯一性约束指定的列可以有空值,但只允许出现一个。
因为主键的值也是具有唯一性的,所以主键列不能再设唯一性约束。
主键约束和唯一性约束的区分?
- 定位不同。主键约束是用来唯一标识表中的每一个行,使得表中的每一行都是可区分的。唯一性约束是用于使一列或多列的组合中的数据不出现重复。
- 可设的数量不同。一个表中只能设一个主键约束,但可以设多个唯一性约束。
- 可取值不同。主键不能取空值,但唯一性约束的列可以取一个空值
默认值约束用于在表中插入一行时,在某列没有数据,则会自动为该字段默认一个值。
自动进行顺序编号引入了自定编号的 IDENTITY 属性,简单理解就是** **
IDENTITY 的语法为:
IDENTITY [ (seed , increment) ]
另一种语法参考如下:(AUTO_INCREMENT
)
CREATE TABLE GRADE (
id INT PRIMARY KEY AUTO_INCREMENT, # 自增主键
...其他字段);
IDENTITY 属性具有一下特点:
- IDENTITY 列的数据类型只能为 **tinyint、samllint、int、bigint、numeric和decimal。**当为numeric 和 decimal 类型时,不允许有小数位。
- 当用户在表中插入一行新的记录时,不必也不能向据有 IDENTITY 属性的列输入数据,系统将自动在该列添加一个规定间隔递增或递减的数据。
- 每个表最多只有一个列具有 IDENTITY 属性,且该列不能为空,不允许据有默认值,也不能由用户更新。
用解压版文件解压
配置环境变量,PATH中加入MYSQL的路径
添加my.ini文件
[mysqld]
# 设置 3306 端口
port=3306
# 设置 mysql 的安装目录注意结尾还有一个反斜杠
basedir=E:\mysql-5.7.19-winx64\
# 设置 mysql 数据库的数据的存放目录 注意结尾还有一个反斜杠 data目录会自动生成
datadir=E:\mysql-5.7.19-winx64\data\
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为 utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
##区别 skip-grant-tables
[mysql]
# 设置 mysql 客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置 mysql 客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
启动管理员模式下的CMD(从win菜单中找到cmd右键点击管理员模式运行),切换路径到MYSQL路径,
C:\Users\Administrator>cd /d E:\mysql-5.7.19-winx64\bin
# 切换目录cd /d change directory
E:\mysql-5.7.19-winx64\bin>mysqld -install
# 安装服务
E:\mysql-5.7.19-winx64\bin>mysqld --initialize-insecure --user=mysql
# 初始化数据库数据
# 启动MYSQL 以下即测试成功
E:\mysql-5.7.19-winx64\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
安装MYSQL的服务"mysql -u root -p" u指用户名,p指密码
# 输入 对应语句,会提示输入密码。
E:\mysql-5.7.19-winx64\bin>mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.19 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
# 启动成功的显示
有 问题:这里很奇怪 不输入密码可以进入**, 输入root密码就报错**
E:\mysql-5.7.19-winx64\bin>mysql -u root -p
Enter password: ****
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
修改密码
mysql> update mysql.user set authentication_string=password('root') where user='root' and Host = 'localhost';
# 更新 mysql.用户表 设置 它的密码 为 root 用户为root
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
#成功修改密码
关闭或者重启mysqlnet stop mysql
和net start mysql
C:\Users\Administrator>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。
# 关闭mysql
C:\Users\Administrator>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
# 开启mysql
当任务管理器中的服务能查到MYSQL运行,就算安装成功了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。