MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
1.存储大量数据,方便检索和访问
2.保持数据信息的一致、完整
3.共享和安全
4.通过组合分析,产生新的有用信息
数据库和应用程序
作用:响应操作并显示结果、向数据库请求数据
要求:美观、操作简单方便
作用:存储数据、检索数据、生成新的数据
要求:统一、安全、性能等
2.产品免费、服务收费
2.易用性好
2.网站应用广泛
1.数据库就是“数据”的“仓库”
2.数据库中包含表、关系以及操作对象
3.数据存放在表中
1.运行速度快 2.使用成本低 3.可移植性强 4.适用用户广
端口号:3306
默认字符集:utf8
utf8:一种Unicode编码,解决国际上字符不统一的多字节编码,通用性强
将bin目录写入: 环境变量
root密码设置
主要文件夹: bin include lib share
my.ini:记录MySQL配置信息,可修改配置内容,如端口号,字符集等
检查是否启动服务
启动方式 : 1.属性窗口 2.DOS命令(net start mysql)
如果修改了配置文件,必须重启MySQL服务才能生效
语法:
示例:
mysql –u root –proot
mysql –u root – p
DOS下运行
MySQL Command Line Client
默认root登录,仅输入密码
名称 |
解释 |
命令举例 |
DML (数据操作语言) |
用来操作数据库中所包含的数据 |
INSERT UPDATE DELETE |
DDL (数据定义语言) |
用于创建和删除数据库对象等操作 |
CREATE DROP ALTER |
DQL (数据查询语言) |
用来对数据库中的数据进行查询 |
SELECT |
DCL (数据控制语言) |
用来控制数据库组件的存取许可、存取权限等 |
GRANT COMMIT ROLLBACK |
①一种符号,它是用来进行列间或者变量之间的比较和数学运算
②包括算术运算符、赋值运算符、比较运算符、逻辑运算符
运算符 |
说 明 |
+ |
加运算,求两个数或表达式相加的和,如6+8 |
- |
减运算,求两个数或表达式相减的差 |
* |
乘运算,求两个数或表达式相乘的积 |
/ |
除运算,求两个数或表达式相除的商,如5/3的值为1 |
% |
取模运算,求两个数或表达式相除的余数,如:5%3的值为2 |
语法:CREATE DATABASE 数据库名;
示例:CREATE DATABASE myschool; 分号为结束符,不可缺
语法:SHOW databases;
语法:USE 数据库名;
示例: USE mybase; USE myschool;
使用数据前必须先选择该数据库!
语法:DROP DATABASE 数据库名;
示例:DROP DATABASE myschool;
类型 |
说明 |
取值范围 |
存储需求 |
TINYINT |
非常小的数据 |
有符值: -27 ~ 27-1 无符号值:0 ~ 28-1 |
1字节 |
SMALLINT |
较小的数据 |
有符值: -215 ~ 215-1 无符号值: 0 ~ 216-1 |
2字节 |
MEDIUMINT |
中等大小的数据 |
有符值: -223 ~ 223-1 无符号值: 0 ~ 224-1 |
3字节 |
INT |
标准整数 |
有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 |
4字节 |
BIGINT |
较大的整数 |
有符值: -263 ~263-1 无符号值:0 ~264-1 |
8字节 |
FLOAT |
单精度浮点数 |
±1.1754351e -38 |
4字节 |
DOUBLE |
双精度浮点数 |
±2.2250738585072014e -308 |
8字节 |
DECIMAL |
字符串形式的浮点数 |
Decimal(M,D) |
M+2个字节 |
标识为无符号数
宽度(位数)不足以0填充
示例:
CREATE TABLE `tb_type` (
`sid` INT(4) ZEROFILL);
INSERT INTO ` tb_type1 ` VALUE(12) ,(1234),(123456);
若某数值字段指定了ZEROFILL属性,将自动添加UNSIGNED属性
*注意:若某日期字段默认值为当前日期,一般设置为TIMESTAMP类型
语法
CREATE TABLE [IF NOT EXISTS] 表名 (
字段1 数据类型 [字段属性|约束][索引][注释],
……
字段n 数据类型 [字段属性|约束][索引][注释]
)[表类型][表字符集][注释];
示例
#创建学生表
CREATE TABLE `student`(
`studentNo` INT(4) PRIMARY KEY,
` name` CHAR(10),
……);
多字段使用逗号分隔, 保留字用撇号括起来 单行注释:#...... 多行注释:/*……*/
名称 |
关键字 |
说明 |
非空约束 |
NOT NULL |
字段不允许为空 |
默认约束 |
DEFAULT |
赋予某字段默认值 |
唯一约束 |
UNIQUE KEY(UK) |
设置字段的值是唯一的 允许为空,但只能有一个空值 |
主键约束 |
PRIMARY KEY(PK) |
设置该字段为表的主键 可唯一标识该表记录 |
外键约束 |
FOREIGN KEY(FK) |
用于在两表之间建立关系, 需要指定引用主表的哪一字段 |
自动增长 |
AUTO_INCREMENT |
设置该列为自增字段 默认每条自增1 通常用于设置主键
|
主键:
CREATE TABLE student(
`studentNo` INT(4) PRIMARY KEY,
……);
注释:
CREATE TABLE test (
`id` int(11) UNSIGNED COMMENT ‘编号’
)COMMENT='测试表’ ;
设置字符集编码:
CREATE TABLE [IF NOT EXISTS] 表名(
#省略代码
)CHARSET = 字符集名;
在myschool数据库中创建学生表:
字段 名 称 |
字段 说 明 |
数 据 类 型 |
长 度 |
属 性 |
studentNo |
学号 |
INT |
4 |
非空\主键 |
loginPwd |
密码 |
VARCHAR |
20 |
非空 |
studentName |
姓名 |
VARCHAR |
50 |
非空 |
sex |
性别 |
CHAR |
2 |
非空,默认“男” |
gradeID |
年级编号 |
INT |
4 |
无符号 |
phone |
电话 |
VARCHAR |
50 |
|
address |
地址 |
VARCHAR |
255 |
默认值“地址不详” |
bornDate |
出生日期 |
DATETIME |
|
|
|
邮件账号 |
VARCHAR |
50 |
|
identityCard |
身份证号 |
VARCHAR |
18 |
唯一 |
示例:
CREATE TABLE `student`(
`studentNo` INT(4) NOT NULL COMMENT '学号' PRIMARY KEY,
`loginPwd` VARCHAR(20) NOT NULL COMMENT '密码',
`studentName` VARCHAR(50) NOT NULL COMMENT '学生姓名',
`sex` CHAR(2) DEFAULT '男' NOT NULL COMMENT '性别',
`gradeId` INT(4) UNSIGNED COMMENT '年级编号',
`phone` VARCHAR(50) COMMENT '联系电话',
`address` VARCHAR(255) DEFAULT '地址不详'COMMENT '地址', `bornDate` DATETIME COMMENT '出生时间',
`email` VARCHAR(50) COMMENT'邮件账号',
` identityCard ` VARCHAR(18) UNIQUE KEY COMMENT '身份证号'
) COMMENT='学生表';
查看表是否存在---示例
USE myschool;
SHOW tables;
查看表定义
语法: DESCRIBE 表名; 或 DESC 表名;
示例
USE myschool;
DESCRIBE `student`;
*注意:避免DOS窗口乱码,可执行SET NAMES gbk;
语法: DROP TABLE [IF EXISTS] 表名;
示例:
USE myschool;
DROP TABLE IF EXISTS `student`;
<在删除表之前,先使用IF EXISTS语句验证表是否存在>
语法:
示例
DROP TABLE IF EXISTS `demo01`;
#创建表
CREATE TABLE `demo01`(
`id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(8) NOT NULL
);
#修改表名
ALTER TABLE `demo01` RENAME `demo02`;
#添加字段
ALTER TABLE ` demo02 ` ADD `password` VARCHAR(32) NOT NULL;
#修改字段
ALTER TABLE ` demo02 ` CHANGE `name` `username`CHAR(10) NOT NULL;
#删除字段
ALTER TABLE ` demo02 ` DROP `password`;
语法:
ALTER TABLE 表名 ADD CONSTRAINT 主键名
PRIMARY KEY 表名(主键字段);
如何设置grade表中gradeId字段为主键?
ALTER TABLE `grade` ADD CONSTRAINT `pk_grade` PRIMARY KEY `grade`(`gradeId`);
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段)
REFERENCES 关联表名(关联字段);
如何将student表的gradeId字段和grade表的gradeId字段建立外键关联?
ALTER TABLE `student` ADD CONSTRAINT fk_student_grade FOREIGN KEY(`gradeId`)
REFERENCES `grade` (`gradeId`);
语法: HELP 查询内容;
示例: HELP contents;
HELP Data Types;
HELP INT;