一、MySql简述
1.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
2.MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
3.MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
二、数据库相关概念
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
名称 | 全称 | 简称 |
---|---|---|
数据库 | 存储数据的仓库,数据是有组织的进行存储 | DataBase(DB) |
数据库管理系统 | 操纵和管理数据库的大型软件 | DataBase Management System (DBMS) |
Sql | 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 | Structured Query Language (SQL) |
各大数据库管理系统的区别
1.Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。
2.MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。目前Oracle推出了收费版本的MySQL,也提供了免费的社区版本。
3.SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
4.PostgreSQL:开源免费的中小型数据库。5.DB2:IBM公司的大型收费数据库产品。
6.SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
7.MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与 MySQL数据库有很好的兼容性。
而不论我们使用的是上面的哪一个关系型数据库,最终在操作时,都是使用SQL语言来进行统一操作,因为我们前面讲到SQL语言,是操作关系型数据库的 统一标准 。所以即使我们现在学习的是MySQL,假如我们以后到了公司,使用的是别的关系型数据库,如:Oracle、DB2SQLServer,也完全不用担心,因为操作的方式都是一致的。
三、DDL
数据库操作:
(1)查询所有数据库;
show databases ;
(2) 查询当前数据库:
select database() ;
(3) 创建数据库:
create database [ if not exists ] 数据库名 [ default charset 字符集 ]
[collate 排序规则 ] ;
例创建一个itcast数据库,使用数据库默认字符集:
(4) 删除数据库:
drop database [ if exists ] 数据库名 ;
如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists 如果数据库存在,再执行删除,否则不执行删除。
(5) 切换数据库:
use 数据库名;
我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。比如,切换到itcast数据,例:use bdqn;
1.表的操作
(1)查询当前数据库所有的表:
show tables;
(2)查看指定表结构:
desc 表名;
(3)创建表的结构:
CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型[COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ],
…
字段n 字段n类型 [COMMENT 字段n注释 ] )
)[ COMMENT 表注释 ] ;
注:最后一个字段后面没有逗号。
2.表操作-数据类型
MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
(1)数值类型:
类型 | 大小 | 有符号范围 | 无符号范围 | 描述 |
---|---|---|---|---|
Tiny int | 1byte | (-128,127) | (0,255) | 小整数值 |
Small Int | 2bytes | (-32768,32767) | (0,65535) | 大整数值 |
Medium Int | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
Int/Integer | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
Big Int | 8bytes | (-2^63,2 ^63-1) | (0,2^64-1) | 极大整数值 |
Float | 4bytes | (-3.402823466 E+38,3.402823466351 E+38) | 0 和 (1.175494351 E-38,3.402823466 E+38) | 单精度浮点数值 |
Double | 8bytes | (-1.7976931348623157E+308,1.7976931348623157E+308) | 0 和(2.2250738585072014E-308,1.7976931348623157E+308) | 双精度浮点数值 |
Decimal | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值,可以精确到点数 |
(3)字符串类型:
类型 | 大小 | 描述 |
---|---|---|
Char | 0-255 bytes | 定长字符串(需要指定长度) |
Var Char | 0-65535 bytes | 变长字符串(需要指定长度) |
Tiny Blob | 0-255 bytes | 不超过255个字符的二进制数据 |
Tiny Text | 0-255 bytes | 短文本字符串 |
Blob | 0-65 535 bytes | 二进制形式的长文本数据 |
Text | 0-65 535 bytes | 长文本数据 |
Medium Blob | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
Medium Text | 0-16 777 215 bytes | 中等长度文本数据 |
Long Blob | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
Long Text | 0-4 294 967 295 bytes | 极大文本数据 |
(4)日期时间类型:
类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
Date | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
Time | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 |
Year | 1 | 1901 至 2155 | YYYY | 年份值 |
Date Time | 8 | 1000-01-01 00:00:00 至9999-12-31 23:59:59 | YYYY-MM-DDHH:MM:SS | 混合日期和时间值 |
Time Stamp | 4 | 1970-01-01 00:00:01 至2038-01-19 03:14:07 | YYYY-MM-DDHH:MM:SS | 混合日期和时间值,时间戳 |
3.表操作-修改
(1)添加字段
ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
(2)修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);
(3) 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
(4)删除字段
ALTER TABLE 表名 DROP 字段名;
(5)修改表名
ALTER TABLE 表名 RENAME TO 新表名;
4.表操作-删除
(1)删除表
DROP TABLE [ IF EXISTS ] 表名;
可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不
加该参数项,删除一张不存在的表,执行将会报错)。
如果user表存在的话则直接删除user表
DROP TABLE IF EXISTS user;
(2) 删除指定表, 并重新创建表
TRUNCATE TABLE 表名;
注: 在删除表的时候,表中的全部数据也都会被删除。
目前能整理的只有这些如果有少的请多多包涵