什么是数据库?
概念: 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据“仓库”
作用: 保存,并能安全管理数据,减少冗余
数据库分为:关系型数据(SQL)和非关系型数据(NOSQL)
关系型数据库:MySQL,Oracle,SQL Server,SQLite,DB2...
关系型数据库通过外键关联来建立表与表之间的关系
非关系型数据库:Redis,MongoDB
非关系型数据通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
什么是DBMS?
数据库管理系统(DataBase Management System)
MySQL
概念: 是现在流行的开源的,免费的关系型数据库
历史: 有瑞典MySQL AB公司开发,目前属于Oracle旗下产品
特点:
-
免费,开源数据库
-
小巧,功能齐全
-
使用健康
-
可运行与windows或linux操作系统
-
可适用于中小型甚至大型网站应用
基本的数据库操作命令
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 |
数据字段属性
-
UnSigned
无符号的,声明该数据列允许负数
-
ZEROFILL
0填充的,不足位数的用0来填充,如int(3),5则为005
-
Auto_InCrement
自动增长的,每添加一条数据,自动在上一个记录数上加1(默认),通常用于设置主键,且为整数类型,可定义起始值和步长
-
NULL 和 NOT NULL
默认的,用于设置默认值
数据表的类型
create table 表名(
--Mysql注释
--1.#单行叔叔
--2./*...*/多行注释
)engine = myisam(or innodb)
MySQL的数据表的类型:MyISAM,InnoDByISAM,BOB,CSV
MyISAM 与 InnoDB
| 名称 | MyISAM | InnoDB |
|---|---|---|
| 事务处理 | 不支持 | 支持 |
| 数据行锁定 | 不支持 | 支持 |
| 外键约束 | 不支持 | 支持 |
| 全文索引 | 支持 | 不支持 |
| 表空间大小 | 较小 | 较大,约2倍 |
MyISAM:适用于节约空间及相应速度
InnoDB:适用于安全性,事务处理及多用户操作数据表
数据表的存储位置
MySQL数据表以文件方式存放在磁盘中,包括表文件,数据文件,以及数据库的选项文件。
位置:MySQL安装目录\data\下存放数据表,目录名对应数据库名
注意:
-
*.frm -- 表结构定义文件
-
*.MYD--数据文件(data)
-
*.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
添加数据
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子句作为别名
作用:
-
可给数据列取一个新别名
-
可给表取一个新别名
-
可把经计算或总结的结果用另一个新名词来代替
DISTINCT关键字的使用
作用:去掉SELECT查询返回的记录结果中重复的记录,只返回一条
where条件语句
| 操作符名称 | 语法 | 描述 |
|---|---|---|
| AND 或 && | a AND b 或者 a &&b | 逻辑与,同时为真结果才为真 |
| OR 或 || | a OR b 或 a || b | 逻辑或,只要一个为真,则结果为真 |
| NOT 或 ! | NOT a 或 !a | 逻辑非,若操作数为加,则结果为真! |
浙公网安备 33010602011771号