数据库基础知识(mysql)

数据库的基础知识

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)``

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值