MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL 的使用
MySQL安装方式:Typical 典型安装、Custom 自定义安装、Complete 完全安装(最好典型安装、可视化配置)。
安装完成之后,配置环境变量可直接在 cmd 中使用 MySQL(不配置环境变量只能在 cmd 中到MySQL/bin 下使用MySQL)。
启动服务器(win)
# “win+r ”打开运行,在输入框中输入 service.msc,单击【确认】按钮,找到 Windows的【服务管理器】,在其中可以看到服务名为MySQL的服务项。点击启动服务即可;
# 同样可以使用cmd进行启动: “win+r ”打开运行,在输入框中输入 cmd,回车后弹出xp命令提示符界面,然后输入“net start mysql”,按回车键,就可以启动MySQL服务,停止MySQL服务的命令为“net stop mysql”;
# 也可以直接双击MySQL服务,打开MySQL属性对话框,在其中通过单击【启动】或【停止】按钮来更改服务状态;
数据库常用命名符
# 查询MySQL版本:-V;
# 登录 MySQL :( mysql -uroot -p123456 -P3306 -h127.0.0.1 );
# 退出 MySQL :( quit ; exit; \q );
# 创建数据库:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name.
--- PS:{} 必选项; [] 可选项; | 在其中选择。
--- DATABASE和SCHEMA是完全相同的,任选其一
--- IF NOT EXISTS: 如果创建的数据库存在,则不只报出warning,不写会报错
--- CHRARCTER SET gbk: 为表设置编码方式,如果不设置则用mysql默认的编码方式# 展示警告信息:show warnings;
# 展示数据库t1的创建命令和编码形式:show create database t1;
# 展示所有数据库:show databases;
# 修改数据库:ALTER DATABASE dbname CHARACTER SET [=] charset_name
# 除数据库:DROP { DATABASE | SCHEMAS } [IF EXISTS] db_name;
MySQL编码规范:
MySQL语句的规范:
# 关键字与函数名称全部大写
# 数据库名称、表名称、字段名称全部小写
# 语句必须分号结尾(虽然实际上大小写都能正确,但Dos界面不输分号不会执行)
MySQL 的数据类型
整型
MySQL数据类型 | 含义(默认:有符号)(UNSIGNED :无符号) |
TINYINT | 非常小的整数。(默认)取值范围是 -128~127;(UNSIGNED )取值范围为0~255。 |
SMALLINT | 较小的整数。(默认)取值范围是-32768~32767;(UNSIGNED )取值范围为 0~65535。 |
MEDIUMINT | 中型大小的整数。(默认)取值范围是-8388608~8388607;(UNSIGNED )取值范围为0~16777215。 |
INT | 正常大小的整数。(默认)取值范围是-2147483648~2147483647;(UNSIGNED )取值范围为0~4294967295 |
BIGINT | 大型的整数。(默认)取值范围是-9223372036854775808~9223372036854775807;(UNSIGNED )取值范围为0~18446744073709551615(很少使用到) |
浮点型:
MySQL数据类型 | 含义 |
FLOAT(M,D) | 单精度浮点型 8位精度(4字节) m总个数,d小数位 |
DOUBLE(M,D) | 双精度浮点型 16位精度(8字节) m总个数,d小数位 |
日期时间类型:
MySQL数据类型 | 含义 |
DATE | YYYY-MM-DD 格式,取值范围从1000-01-01 到 9999-12-31 |
TIME | HH:MM:SS 格式 |
DATETIME | YYYY-MM-DD HH:MM:SS 格式 |
TIMESTAMP | 时间戳 |
字符串型:
MySQL数据类型 | 含义 |
char(n) | 固定长度,长度范围从1~255个字符,不足填充空格 |
varchar(n) | 可变长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
数据表和数据库还有Mysql三者的关系 :mysql中保存了很多数据库、一个数据库中可以保存很多表。表是一个二维表,行称为【记录】,列称为【字段】。int(1)和int(11)
修改数据表以及约束
创建数据表:CREATE TABLE tbl_name (column_name column_type);
查看表结构:DESCRIBE tbl_name /DESC tbl_name ;
插入数据:INSERT tbl_name [(col_name),…] VALUES(val,…);
查找数据:SELECT expr(表达式),…FROM tbl_name;
删除表:DROP TABLE table_name ;
表结构的 5 种约束:
# 非空约束NOT NULL;
# 默认值约束:DEFAULT(default);
# 唯一值约束:UNIQUE(unique);
# 外键约束 :FOREIGN KEY(foreign key);
# 主键约束:PRIMARY KEY(primary key);
自增长约束:AUTO_INCREMENT(auto_increment);
无符号,正数:UNSIGNED(unsigned)
关于约束:
约束主要是防止非法数据进入到表中,确保数据的正确性和一致性(统称数据完整性);
约束 按功能 分类:
- NOT NULL(非空约束):强制字段始终包含值。
- PRIMARY KEY(主键约束):每张数据表只能有一个主键,默认主键 NOT NULL。
- AUTO_INCREMENT 自增列:一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
- UNIQUE KEY(唯一约束):UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
二者区别:
UNIQUE 能有多个,PRIMARY KEY 只能有一个;(可以多个列形成一个主键)
UNIQUE 可以为NULL值,PRIMARY KEY 不能为空;
在创建索引时也有区别;
- DEFAULT 约束:DEFAULT 约束用于向列中插入默认值。
- FOREIGN KEY(外键约束) :参照完整性约束,保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
要求:
1、父表和子表必须使用相同的存储引擎(InnoDB),禁止使用临时表。
2、外键列和参照列必须具有相似的数据类型,其中数字的长度和是否有符号位必须相同,而字符的长度可以不同
3、外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将会自动创建索引。
在定义外键约束时,通过使用on delete cascade或者on delete set null选项,可以改变外键的默认删除规则:
① ON DELETE CASCADE:级联删除。当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么连同子行一起删除
② ON DELETE SET NULL:当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么不删除,而是将子行的外键列设置为null
按 功能分类 有以上的几种约束,按照 约束的范围 可分为表级约束和列级约束;
修改表结构
添加:
ALTER TABLE tbl_name ADD ...
修改:
ALTER TABLE 表名 MODIFY ..
删除列:
ALTER TABLE tbl_name DROP ...