数据库的基础知识
1.数据库(Database,DB)
按照数据结构来组织、存储和管理数据的仓库,其本身可看作电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等操作
2.数据库管理系统(DBMS)
数据库
数据库管理系统
关系型数据库:MySQL、oracle(oracale),MSSQL、Access、excel,(mysofeware)DB2(IBM);SQLLite(轻型数据库/嵌入式)
非关系型数据库(NO-SQL):nongoDB、Hbase、Cassandra.......
SQL:结构化查询语言
数据库应用程序
3.数据库服务器(应用程序)
硬件---》安装操作系统(OS:LInux,Windows)---》安装数据库管理系统
4.常用术语
表
记录:行
字段/属性:列
5.Mysql的安装和配置
目录结构
bin---可执行文件
lib---库文件
data---日志文件和数据库
Smple DataBase---样本数据库
share---共享文件
include---头文件
my.ini(配置文件):
Mysql正常安装,my.ini存放在windows目录下
内容:
[client];port:3306 ---》客户端的端口
[Mysql]default-character-set-gbk:默认字符集(字符编码)
端口、文件路径、数据路径、默认字符集、数据库存储引擎、最大连接数(max-contections-512)
[Mysql] default-storage-engin-MyISAM:数据库存储引擎
MyISAM
INNOBD
安装:官网下载,安装 默认端口:3306 用户名:root;密码:自定义
6.SQL(Structurd Query Language):结构化查询语言
关系型数据库语言
一种数据库查询语言和程序设计语言
增删改查
7.sql语言组成
数据定义语言(DDL):数据库
数据操作语言(DML):表操作
数据查询语言(DQL):表查询
数据控制语言(DCL):事务、存储过程等
8.Windows下启动Mysql服务:
验证是否启动:telnet -an---3306端口是否是LISTENING
使用相关命令登录:dos命令---mysql -h hostname -u useername -p
登录成功出现myslq>
登录失败如何解决
相关命令:help \h 帮助; \s:查看数据库信息; show database:查看所有数据库; user test:或者\u #切换数据库
9.数据类型
整数类型5种:TINYINT(1个字节)、SMALLINT(2)、MEDIUMINT(3)、INT(4)、BIGINT(8)
浮点数类型和定点数类型:FLOAT(4个字节)、DOUBLE(4)、DECIMAL(M,D)(M+2)(精确,几乎没有误差):高精度/定点数据类型
日期与时间类型:
YEAR(1)、---YYYY
DATE(4)---YYYY-MM-DD
current_date/now()---获取当前系统日期
TIME(3)---
---HH:MM:SS
current_time/now()---输入当前系统时间
(最优)DATETIME(8)(到9999年)、
---YYYY-MM-DD HH:MM:SS
NOW---获取当前系统时间和日期
TIMESTAMP(时间戳1970年-2038年)
CURRENT_TIMESTAMP/NULL/无任何输入 ----> x系统会输入当前系统时间
----同DATATIME
字符串与二进制类型
char(最大长度)---固定长度字符串:不管存入几位都占最大长度
varchar()---可变长度:存几位占几位,可扩展,但位数只显示到最大长度
binany---固定长度二进制数据---图片/文本(数据长度不足,数据后面用\0补齐)
varbinany---可变长度二进制数据---图片/文本
text类型(大文本数据)---文章内容、评论
tinytext
text
mediumtext
longext
BLOB(二进制类型)(二进制大数据)---图片/PDF文档等
tinyblob
blob
mediumblob
longblob
ENUM(枚举类型)(只能存储一个枚举字符串值)----ENUM(’值1‘,’值2‘,’值3‘。。。’值n‘):只能取一个(注意:Mysql中存入的是枚举列举中的顺序编号,而不是列表中的值)
SET---字符串对象,可以有零或多个值---与ENUM相同
BIT(M)类型(二进制类型)---数据长度小于M,左边用0补齐
10.数据表的基本操作(CRUD)
1.创建
创建数据表:create 表名(字段名1 类型,字段名2 类型,字段名3 类型)
2.查看数据表
1.使用show create table 表名---查看具体某一个表
2.使用show tables;----查看所有表
3.末尾加\G(G必须大写);---使显示美观
4.DESCRIBE/desc 表名
NULL--该列是否可以存储NULL值
Key----该列是否已经编制索引
Default---是否有默认值
Extra---获取给定列附加信息(备注)
3.删除
---drop table 表名;
4.修改
修改表名称---alter table 旧表名 rename (to) 新表名
添加字段名(数据无损)---alter table 表名 add 字段名 数据类型(first/after);
修改字段名(无损)---alter table 表名 change 旧字段名 新字段名 数据类型;(数据类型必须与原数据类型相同)
修改字段属性(数据类型)(数据有问题)---alter table 表名 notify 字段名 字段属性;
修改字段排列顺序(无损)
1.字段位于表开头---alter table 表名 modify 字段名 字段属性 first;
2.字段位于表末尾---alter table 表名 modify 字段名 字段属性 after;
3.交换---1。字段位于表开头---alter table 表名 notify 字段名 字段属性 after 字段名;
删除字段名称(有损)---alter table 表名 drop 字段名;
注意:备份后再进行操作
5.表的约束
- 创建目的:针对字段进行限制,保证数据的正确性和唯一性
- 约束条件:PRIMARY KEY,FOREING KEY,NOT NULL,UNIQUE,DEFAULT。
5.1 主键约束(PRIMARY KEY)例如:身份证—它可以唯一表示表中的记录
- 1.单字段主键 格式:字段名 数据类型 PRIMARY KEY
- 2.多字段主键(组合主键)格式:字段名 数据类型 PRIMARY KEY(字段名1,字段名2,字段名3…字段名n)
- 注意:一个表中主键只有一个,且满足了非空NOT NULL,不重复UNIQUE
5.2 非空约束 格式:字段名 数据类型 NOT NULL(一个表中可以定义多个非空约束)
5.3 唯一约束 格式:字段名 数据类型 UNIQUE 验证是否可以为空?可以
- 默认约束 格式:字段名 数据类型 DEFAULT 默认值—默认为0
- 自动增加(AUTO_INCREMENT):字段名 字段类型 AUTO_INCREMENT—一般配合主键使用—约束条件:整数类型—跳数1,可以自定义
6.索引(列值排序后的结构)
6.1 作用
- 提高表中数据查询速度
6.2 概念
普通索引
唯一性索引
全文索引(数据量大)
单列索引
多列索引
空间索引
6.3 创建方式及语法
- 1.创建表的时候创建:
create table 表名 (字段名 数据类型[完整性约束条件] 字段名 数据类型[完整性约束条件] . . . 字段名 数据类型 [[uinique|fulltaxt|spatial] index|key [别名] (字段名1[(长度)] [asc|desc]]
- 注: asc升序
- 2.使用CREATE INDEX语句在已存在的表上创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名 (字段名 [(长度)] [ASC|DESC]);
- 3.使用ALTER TABLE语句在已存在的表上穿件索引(修改)
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 (字段名 [(长度)] [ASC|DESC])
- 4.删除索引
方法一:
ALTER TABLE 表名 DROP INDEX 索引名(必须是空表,先删除一下表内容delete from 表名)
方法二:
DROP INDEX 索引名 on 表名----查看:show create table 表名
7.表记录操作
7.1 添加数据(记录)
- 格式一:insert into 表名[(字段名1,字段名2,。。。)] values(值1,值2,。。。)
- 注意:字段名可以省略不写,但value值必须表中都写;如果需要添加某个特定的值,在前面表名后写上相应的字段名
- 格式二:insert into 表名 set 字段名1=值1[,字段名2=值2,。。。字段名n=值n] 例:insert into t1 id=1,name=‘qwe’;
7.2 记录删除
- delete from 表名 删除所有记录
- delete from 表名 where 字段名1=值1 and|or 字段名n=n值 删除一或几条
7.3 记录查询
- select * from 表名
(约束知识点)建表流程:
- 例: 创建一个数据库book—设计一个学生信息表(定义约束,创建2个索引,添加20条以上记录)
- 操作流程如下:
-
dos命令中打开数据库bin目录:
-
1.登录:
D:\phpStudy\MySQL\bin>mysql -uroot -proot
-
2.创建数据库:
mysql>create database book;
-
3.查看数据库:
mysq>show databases;
-
4.使用数据库:
use book;
-
5.创建表(约束)
mysql> create table student;
name varchar(20) not null,
age int(6) unique,
score float default 60,
grade int foreing);
-
6.创建索引:
mysql> create index stu_id on student (id asc);
mysql> create fulltext index index_name on student(name);
-
7.查看已创建的表:
mysql> show create table student\G;
-
8.添加记录:
mysql> insert into student values(1,'aaa',18,61,1)
mysql> desc student;
查看表
mysql> insert into student(id) values(3);
mysql> insert into student(id,name,age,score) values(5,'ddd',24,78);
mysql> insert into student set id=11,name='kkk',age=42;score=66;
mysql> insert into student(id,grade) values(18,207);
-
9.查看生成的表:
mysql> select * from student;
输出结果如下所示:
结果:
`±—±-----±-----±------±------+
| id | name | age | score | grade |
±—±-----±-----±------±------+
| 1 | aaa | 18 | 61 | 1 |
| 3 | | NULL | 60 | NULL |
| 2 | bbb | NULL | 60 | NULL |
| 4 | ccc | 22 | 60 | NULL |
| 5 | ddd | 24 | 78 | NULL |
| 6 | eee | 17 | 90 | 201 |
| 7 | fff | 12 | 56 | 202 |
| 8 | | NULL | 60 | NULL |
| 9 | fff | NULL | 60 | NULL |
| 10 | ggg | 27 | 60 | NULL |
| 11 | kkk | 42 | 60 | NULL |
| 12 | kkk | 26 | 66 | NULL |
| 13 | lll | 40 | 99 | 203 |
| 14 | | NULL | 60 | 206 |
| 15 | | 45 | 60 | NULL |
| 67 | | NULL | 88 | NULL |
| 17 | mmm | NULL | 60 | NULL |
| 18 | | NULL | 60 | 207 |
| 19 | nnn | 99 | 100 | 210 |
| 20 | | 120 | 60 | NULL |
| 21 | | 300 | 60 | NULL |
±—±-----±-----±------±------+
21 rows in set (0.00 sec)``
-