一、Mysql数据库介绍
1、简述
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
语言为SQL结构化查询语句
2、什么是关系型数据库
通过SQL结构化查询语句存储数据,保持数据一致性方面很强。
常用的关系型数据库:Mysql和Oracle数据库,互联网运维最常用的是MySQL。
关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里,这样的设计增加了MySQL的读取速度,灵活性和可管理型也得到了很大提高,访问以及管理MySQL数据库的最常用标准化。
3、MySQL数据库的优点
(1) MySQL性能卓越、服务稳定,很少出现异常宕机
(2) MySQL开放源代码且无版权制约,自主性及使用成本低
(3) MySQL历史悠久,社区及用户活跃,遇到问题可以解决
(4) MySQL软件体积小,安装使用简单,并且易于文虎,安装及维护成本低
(5) MySQL品牌口碑效应,使得企业无需考虑就直接用,LAMP、LEMP流行架构
(6) MySQL支持多用操作系统,提供多种API接口,支持多用开发语言,特别对流行的PHP语言有很好的支持
二、Mac配置MySql
1、下载MySQL
在MySQL 的官网可以下载 MySQL,一般个人用户者选择是 Community 版本,因为此版本免费,而商业版需要收费。使用此.dmg 格式进行下载。
2、安装
安装过程比较简单,一路Next即可,设置root密码。安装完成之后,在系统便好设置里面,可以启动或者关闭MySql服务
3、此时设置环境变量
在 terminal(终端) 里面执行 vim ~/.bash_profile 语句此时可以看到.bash_profile的文本内容,在最后面部分添加PATH=$PATH:/usr/local/mysql/bin,然后保存退出。
最后在命令行输入source ~/.bash_profile使得环境变量可以使文件立即生效,当然你可以关闭terminal 再重新打开也是可以的。
4、登录MySql
最后,你就可以通过mysql -u root -p这段命令登录 MySql了,输入你之前设置的密码即可登录成功。
三、数据库的基础操作
1、数据库的基本操作
查看所有数据库:show databases;
创建数据库:create database database_name;
创建完成之后,可以使用声明查看数据库的定义:show create database;
删除数据库: drop database database_name;
切换数据库: use database_name;
查看数据库使用的引擎: show engines;
查看当前登录用户,当前数据库:MySql;
2、数据表的基础操作
2.1创建数据表
CREATE TABLE table_name(
字段名1 数据类型 [列级别约束条件] [默认值],
字段名1 数据类型 [列级别约束条件] [默认值],
…
[表级别约束条件]
);
代码示例:
CREATE TABLE tab_Test(id INT(11),name VARCHAR(25),deptId INT(11),salary
FLOAT);
注意:表的名称不能为关键字等信息,创建语句尽量使用大写,名称无所谓。
选择数据库test:USE test;
查看数据库下的数据表:SHOW TABLES;
查看test中的表tab_Test:DESCRIBE tab_Test;
查看表结构更详细的定义:SHOW CREATE TABLE;
删除表:DROP TABLE table_name
2.2使用主键约束
主键的作用在于用某个字段唯一地标识所有记录,以便在数据库中快速地查找数据。比如我们一般用索引号来唯一标识每一条数据记录。主键可以是单一字段,也可以是多个字段。
主键在任何时候都不能为空。
单字段主键:用关键字PRIMARY KEY设置主键。
CREATE TABLE tab_Test(
ID VARCHAR(20) PRIMARY KEY, //方式一:设置学⽣ID为主键
Score FLOAT,
AGE INT //注意这里的逗号不要加,否则会报错
//PRIMARY KEY(ID) //方式二:定义完所有列之后,指定主键也可以
);
多字段联合主键:
CREATE TABLE tab_Test(
ID VARCHAR(20),
NAME VARCHAR(20),
AGE INT,
PRIMARY KEY(ID,Score)
);
多字段联合主键允许ID=1,NAMe=‘za’;ID=2,NAME=’za’
切忌使用以下方法:
CREATE TABLE tab_Test(
ID VARCHAR(20) PRIMARY KEY,
Score FLOAT PRIMARY KEY,
AGE INT
);
2.3设置外键约束
外键约束则是保证多个表之间的参照完整性。设置外键约束的两个表之间具备父子关系,即子表中某个字段的取值依赖于父表。
外键设置时有以下几点要求:
• 外键所代表的字段必须依赖于已经存在的父表的主键;
• 外键与相应的父表的主键可以不同名;
• 外键可以为空(null)
下面创建一个实例帮助理解外键的使用
创建一个父表:
CREATE TABLE Tab1(
Id INT(10) PRIMARY KEY,
……
)
创建一个子表让他的键deptId做为外键关联到父表Tab1的主键Id:
CREATE TABLE Tab2(
……,
deptId INT(10),
……
)
版面问题外键相关知识不能全部展开想继续深入了解的可以访问MySql教程(https://www.yiibai.com/mysql/foreign-key.html)
2.4设置字段值自动增加
往表中插入记录时,往往会遇到需要递增的字段。例如学号ID等等。Mysql支持对这类字段设置字段值自动增加的约束。默认情况下,设置了自动增加的字段值为整数,从1开始,每次加1。又因为这种自动增加的字段肯定是唯一的,所以一般我们也把它设置为主键。
设置自动增加的关键字为AUTO_INCREMENT
CREATE TABLE tab_Test(
ID INT PRIMARY KEY AUTO_INCREMENT, //将ID设置为整数类型,并且设置字段值⾃动增加
Name VARCHAR(20),
Score FLOAT
);
注意,如果要将某个字段设置为自动增加,那么必须将这个字段设置“唯一”的属性,即设置为主键或者唯一约束,否则会报错。
让混乱的ID有序化
原理:删除原有的自增ID,重新建立新的自增ID
1、删除原有主键
ALTER TABLE tab_Stu5 DROP ID;
2、添加新主键字段
ALTER TABLE tab_Stu5 ADD ID INT(8) NOT NULL FIRST;
3、设置新主键
ALTER TABLE tab_Stu5 MODIFY COLUMN ID INT(8) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);
2.5使用非空约束
关键字NOT NULL用来约束某字段不能为空.
2.6设置字段的默认值
关键字DEFAULT用来设置字段的默认值。如果在插入数据时,没有为某个字段赋值,则Mysql会自动为这个字段赋值为默认值。设置不为空、默认值,可以放在一起,但没有意义。
2.7设置唯一约束
关键字UNIQUE用来设置对某个字段的唯一约束,唯一约束表示,插入的数据在这个字段上的值是唯一的,不能重复。
Unique和Primary Key的区别在于:一个表中可以有多个字段声明为UNIQUE,但只能有一个主键声明;主键不允许为空,但是声明为UNIQUE的字段允许空值的存在,只能有一个。
下面只是一个简单的例子
CREATE TABLE tab_Test(
ID INT UNIQUE,
NAME VARCHAR(20) NOT NULL,
GRADE INT DEFAULT 2
//CONSTRAINT STH UNIQUE(NAME) //在定义完所有列之后指定唯一约束
)
2.8修改数据表
修改表名:ALTER TABLE <旧表名> RENAME <新表名>
ALTER TABLE tab_Test RENAME NewTAb;
修改字段数据类型:ALTER TABLE <表名> MODIFY <字段名> <数据类型>
ALTER TABLE tab_Test MODIFY NAME VARCHAR(30);
修改字段名:ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <数据类型>
ALTER TABLE tab_Test CHANGE NAME NewName varchar(30);
删除字段:ALTER TABLE <表名> DROP <字段名>
添加字段:ALTER TABLE <表名> ADD <新字段名> <新数据类型>
2.9还有一些数据库的操作指令,下面用一个例子简单介绍
创建表:
CREATE TABLE User(
Id INT AUTO_INCREMENT,
Name VARCHAR(30),
Sex VARCHAR(25),
Age INT,
PRIMARY KEY(ID,Score)
)
插入数据:
INSERT INTO User(Id,Name,Sex,Age) VALUES(1,’qwe’,’boy’,20);
//注意使用单引号
查询数据:
SELECT * FROM User;//查询User表的所有信息
SELECT * FROM User WHERE Age<30;//查询年龄小于30岁User的所有信息
SELECT Id,Name FROM User WHERE Id=1;//查询Id为1的UserId,Name
SELECT Id,Name FROM User WHERE Id LIKE 1;//LIKE:’=’
AND的用法:SELECT * FROM User WHERE Age>20 and Age<40;
OR的用法:SELECT * FROM User WHERE Age<20 OR Age<40;
BETWEEN的用法:SELECT * FROM User WHERE Age BETWEEN 20 AND 40;
IN查询指定集合内的数据:SELECT * FROM User WHERE Age IN (10,29,39);
将数据按升序(ASC)、降序(DESC)排列:SELECT * FROM User ORDER BY Age DESC;
更新数据:
UPDATE User SET Age=20 WHERE Id=1;
UPDATE User SET Name=‘wer’,Age=20,Sex=‘girl’ WHERE Id=2;
删除数据:
DELETE FROM User WHERE Id=1;
将Sex字段移动到Age之后:
ALTER TABLE User MODIFY Sex CHAR(25) AFTER Age;