Go语言与MySql数据库(上)——MySql基础

一、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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容