数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

  1. 1.数据以表格的形式出现
  2. 2.每行为各种记录名称
  3. 3.每列为记录名称所对应的数据域
  4. 4.许多的行和列组成一张表单
  5. 5.若干的表单组成database

RDBMS 术语

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

  1. 数据库: 数据库是一些关联表的集合。
  2. 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  3. 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
  4. 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  5. 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  6. 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  7. 外键:外键用于关联两个表。
  8. 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  9. 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  10. 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

MySQL数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  1. MySQL是开源的,所以你不需要支付额外的费用。
  2. MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  3. MySQL使用标准的SQL数据语言形式。
  4. MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括CC++、PythonJavaPerlPHPEiffelRubyTcl等。
  5. MySQLPHP有很好的支持,PHP是目前最流行的Web开发语言。
  6. MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB64位系统支持最大的表文件为8TB
  7. MySQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

数据类型

  1. 整数
  2. tinyint 1字节
  3. smallint 2字节
  4. mediumint 3字节
  5. int 4字节
  6. bigint 8字节
  7. 实数
  8. float 4字节
  9. double 8字节
  10. decimal decimal(20,2) 小数点后使用2个数字,小数点前使用18个数字
  11. 字符串
  12. varchar 可变长度的字符串,给定最大长度值
  13. char 固定长度字符串,长度为声明时指定的长度0255,会填充空格,检索时会删除空格
  14. text 非二进制字符串
  15. tinytext
  16. text
  17. mediumtext
  18. longtext
  19. blob 二进制字符串,比较和排序是基于字节的
  20. tinyblob
  21. blob
  22. mediumblob
  23. longblob
  24. 日期
  25. datatime 保存大范围,精度(秒),8字节
  26. timestamp 时间戳类型,4字节,19702038,所经历的秒数

SQL语句:

  1. mysql -h localhost -u 用户名 -p密码
  2. use 库名; // 切换默认库
  3. DDL(数据定义语言):对数据库和表进行操作
  4. create database 库名 // create database if not exists 库名
  5. create table [苦命.]表名 //use 库名
  6. drop database 库名
  7. drop table 表名
  8. DML(数组操纵语言):对数据库表进行增删改
  9. insert into users(id,name) values('1','zhangsan');
  10. update users set name='lili',age='18' where id='1'; // 更新
  11. delete from name where id='1';
  12. DQL(数据控制语言):对数据库进行查询操作
  13. select * from name
  14. DCL:查看所有库、表结构等
  15. show databases 看所有库
  16. show tables 看所有表
  17. decs 表名 看表结构
  18. show variables 配置文件变量
  19. \s 看状态
  20. 帮助的使用
  21. contents 看帮助内容
  22. ? int
  23. ? show
  24. ? create table
  25. -- 创建数据库
  26. create database game_data;
  27. -- 切换默认表
  28. use game_data;
  29. -- 创建表
  30. create table tbl_enemy (id int(3), name varchar(20), movespeed int(4), atk int(4)) character set = utf8;
  31. -- 删除表
  32. drop table tbl_enemy;
  33. -- 查看表
  34. select * from tbl_enemy;
  35. -- 添加数据
  36. insert into tbl_enemy values(1, '近战兵', 10, 10);
  37. insert into tbl_enemy values(2, '弓箭手', 10, 10);
  38. insert into tbl_enemy values(1, '法师', 10, 10, 1, 100);
  39. -- 修改字段值
  40. update tbl_enemy set id=3 where name='法师';
  41. update tbl_enemy set move_speed=8, atk_interval=1 where id=1;
  42. update tbl_enemy set move_speed = 12 where id=2;
  43. update tbl_enemy set atk=20, atk_interval=1 where id=3;
  44. update tbl_enemy set atk = 8, atk_interval=1 where id=2;
  45. update tbl_enemy set atk_interval=2;
  46. update tbl_enemy set atk_interval=1 where id=1;
  47. update tbl_enemy set hp=100;
  48. -- 增加字段
  49. alter table tbl_enemy add atkinterval int(4);
  50. alter table tbl_enemy add hp int(4) not null;
  51. alter table tbl_enemy add email varchar(20);
  52. -- 删除字段
  53. alter table tbl_enemy drop email;
  54. -- 删除行
  55. delete from tbl_enemy where hp=100;
  56. -- 字段改名(改数据类型)
  57. alter table tbl_enemy change movespeed move_speed int(4);
  58. alter table tbl_enemy change atkinterval atk_interval int(4);
  59. alter table tbl_enemy rename table_enemy;
  60. alter table table_enemy rename tbl_enemy;

?