数据库

什么是数据库?

概念: 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据“仓库”

作用: 保存,并能安全管理数据,减少冗余

数据库分为:关系型数据(SQL)和非关系型数据(NOSQL)

关系型数据库:MySQL,Oracle,SQL Server,SQLite,DB2...

关系型数据库通过外键关联来建立表与表之间的关系

非关系型数据库:Redis,MongoDB

非关系型数据通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

什么是DBMS?

数据库管理系统(DataBase Management System)

MySQL

概念: 是现在流行的开源的,免费的关系型数据库

历史: 有瑞典MySQL AB公司开发,目前属于Oracle旗下产品

特点:

  1. 免费,开源数据库

  2. 小巧,功能齐全

  3. 使用健康

  4. 可运行与windows或linux操作系统

  5. 可适用于中小型甚至大型网站应用

基本的数据库操作命令

update user set password=password('123456')where user='root';//修改密码
flush privileges;//刷新数据库
show databases;//显示所有数据库
use dbname;//打开某个数据库
show tables;//显示数据库mysql中所有的表
describe user;//显示表mysql数据库中user表的列信息
create datebase name;//创建数据库
use databasename;//选择数据库

数据库操作

创建数据库:create database [in not exists] 数据库名;
删除数据库:drop database [if not exists] 数据库名;
查看数据库:show databases;
使用数据库:use 数据库名;

创建数据表

create table [if not exists] `表明`(
'字段名1' 列类型 [属性][索引][注释],
  '字段名2' 列类型 [属性][索引][注释],
  ....
   '字段名n' 列类型 [属性][索引][注释]
)[表类型][表字符集][注释];

数据值和列类型

类型说明存储需求
tinyint 非常小的数据 1字节
smallint 较小的数据 2字节
mediumint 中等大小的数据 3字节
int 标准整数 4字节
bigint 较大的整数 8字节
float 单精度浮点数 4字节
double 双精度浮点数 8字节
decimal 字符串形式的浮点数 9字节

字符串类型

类型说明最大长度
char[(M)] 固定长字符串,检索快但费空间,0 <= M <= 255 M字符
varchar[(M)] 可变字符串 0 <= M <= 65535 变长度
tinytext 微型文本串 2^8-1字节
text 文本串 2^16-1字节

日期和时间型数值类型

类型说明取值范围
DATE YYYY-MM-DD,日期格式 1000-01-01~9999-12-31
TIME Hh:mm:ss,时间格式 -838:59:59~838:59:59
DATETIME YY-MM-DD hh:mm:ss 1000-01-01 00:00:00~9999-12-31 23:59:59
TIMESTAMP YYYYMMDDhhmmss格式表示的时间戳 197010101000000~2037年的某个时刻
YEAR YYYY格式的年份值 1901~2155

数据字段属性

  1. UnSigned

    无符号的,声明该数据列允许负数

  2. ZEROFILL

    0填充的,不足位数的用0来填充,如int(3),5则为005

  3. Auto_InCrement

    自动增长的,每添加一条数据,自动在上一个记录数上加1(默认),通常用于设置主键,且为整数类型,可定义起始值和步长

  4. NULL 和 NOT NULL

    默认的,用于设置默认值

数据表的类型

create table 表名(
--Mysql注释
  --1.#单行叔叔
  --2./*...*/多行注释
)engine = myisam(or innodb)

MySQL的数据表的类型:MyISAM,InnoDByISAM,BOB,CSV

MyISAM 与 InnoDB

名称MyISAMInnoDB
事务处理 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约2倍

MyISAM:适用于节约空间及相应速度

InnoDB:适用于安全性,事务处理及多用户操作数据表

数据表的存储位置

MySQL数据表以文件方式存放在磁盘中,包括表文件,数据文件,以及数据库的选项文件。

位置:MySQL安装目录\data\下存放数据表,目录名对应数据库名

注意:

  1. *.frm -- 表结构定义文件

  2. *.MYD--数据文件(data)

  3. *.MYI--索引文件(index)

设置数据表字符串:CREATE TABLE 表名()CHARSET = utf8;

修改数据

修改表(ALTER TABLE)
修改表名:ALTER TABLE 旧表名 RENAME AS 新表名
添加字段:ALTER TABLE 表名 ADD字段名 列属性[属性]
修改字段:
ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
删除字段:ALTER TABLE 表名 DROP 字段名
删除数据表:DROP TABLE [IF EXISTS] 表名
IF EXISTS为可选,判断是否存在该数据库
删除不存在的数据表会抛出错误

其他

反引号(`)为标识符
注释:
1.单行注释 #注释内容
2.多行注释 /*注释内容*/
模式通配符:
_ 任意单个字符
% 任意多个字符,甚至包括零字符
单引号需要进行转义 \'
清除已有语句:\c

 

DML语言

添加数据

INSERT INTO 表名[(字段1,字段2,字段3...)] VALUES('值1','值2','值3')

修改数据

UPDATE 表名 SET column_name = value [,column_name2=value2,...][where condition];

删除数据

DELETE FROM 表名 [WHERE condition];

清空数据表

TRUNCATE 表名

DQL语言

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
[left | right | inner join table_name2] --联合查询
[WHERE ...] --指定结果需要满足的条件
[GROUP BY ...] --指定结果按照哪几个字段来分组
[HAVING] --过滤分组的记录必须满足的次要条件
[ORDER BY...] --指定查询记录按一个或多个条件排序
[LIMIT {[offer,]row-count | row_countOFFSET offset}]; -- 指定查询的记录从哪条至哪条

注意:[]括号代表可选的,{}括号代表必须的

AS子句作为别名

作用:

  1. 可给数据列取一个新别名

  2. 可给表取一个新别名

  3. 可把经计算或总结的结果用另一个新名词来代替

DISTINCT关键字的使用

作用:去掉SELECT查询返回的记录结果中重复的记录,只返回一条

where条件语句

操作符名称语法描述
AND 或 && a AND b 或者 a &&b 逻辑与,同时为真结果才为真
OR 或 || a OR b 或 a || b 逻辑或,只要一个为真,则结果为真
NOT 或 ! NOT a 或 !a 逻辑非,若操作数为加,则结果为真!
posted on 2020-11-19 17:09  白糖℃  阅读(70)  评论(0)    收藏  举报