如何在微信公众平台上建立微网站,智慧团建电脑版登录,无锡专业网站营销,医疗器械网上采购平台目录 MySQL概述前言安装与配置MySQL登录与卸载 数据模型概述SQL简介SQL通用语法简介SQL分类 数据库设计(数据库操作)-DDL数据库操作查询数据库 show databases、select database()创建数据库 create database使用数据库 use删除数据库 drop database 图形化工具连接数据库操作数… 目录 MySQL概述前言安装与配置MySQL登录与卸载 数据模型概述SQL简介SQL通用语法简介SQL分类 数据库设计(数据库操作)-DDL数据库操作查询数据库 show databases、select database()创建数据库 create database使用数据库 use删除数据库 drop database 图形化工具连接数据库操作数据库 表操作创建表创建表语法 create table创建表约束语法 primary key、not null、unique、auto_increment等创建表数据类型 查询表 desc、show create table修改表 alter table、add、modify、change等删除表 drop table 数据库操作-DML(数据增删改)增加数据(insert)修改数据(update)删除数据(delete) MySQL概述
前言
web开发调用流程图如下所示程序员给数据库管理系统(DBMS)发送SQL语句再由数据库管理系统操作数据库当中的数据。 排名前十的数据库 Oracle大型的收费数据库Oracle公司产品价格昂贵。通常是不差钱的公司会选择使用这个数据库
MySQL开源免费的中小型数据库后来Sun公司收购了MySQL而Oracle又收购了Sun公司。目前Oracle推出两个版本的Mysql社区版(开源免费)、商业版(收费)。
SQL ServerMicrosoft 公司推出的收费的中型数据库C#、.net等语言常用。
PostgreSQL开源免费的中小型数据库。
DB2IBM公司的大型收费数据库产品。
SQLLite嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
MariaDB开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品与MySQL数据库有很好的兼容性。这些数据库都是属于关系型数据库要操作关系型数据库都是通过 SQL语句来实现的而SQL语句又是操作关系型数 据库的统一标准。
下面来学习MySQL。 安装与配置
官网免费版下载地址
下载完安装包后解压到想安装的位置然后添加环境变量在系统变量中新建MYSQL_HOME其值为解压后的文件夹位置再将%MYSQL_HOME%\bin添加到PATH。
cmd输入mysql如果提示Can’t connect to MySQL server on ‘localhost’ 则证明添加成功。
再以管理员身份运行命令行窗口运行mysqld --initialize-insecure。data目录初始化没有问题则MySQL目录下已经有data目录生成。
再以管理员身份运行命令行窗口mysqld -install至此MySQL服务安装完成。
MySQL的cmd启动与关闭:
net start mysql // 启动mysql服务
net stop mysql // 停止mysql服务修改密码 在黑框里敲入mysqladmin -u root password 1234 这里的1234 就是指默认管理员(即root账户)的密码可以修改成你想要的。
MySQL登录与卸载
启动mysql服务后在命令行输入登录参数
mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)比如输入mysql -uroot -p1234回车出现下图且左下角为mysql则登录成功。 1.密码直接在-p参数之后直接指定 这种方式不安全密码直接以明文形式出现在命令行 2.密码在-p回车之后在命令行中输入密码然后回车 退出mysql exit quit
卸载 管理员身份运行命令行窗口net stop mysql停止服务mysqld -remove mysql删除。最后删除MySQL目录及相关的环境变量。卸载完毕。
PS上述的MySQL服务器我们是安装在本地的在真实的企业开发中MySQL是在公司的服务器上安装的并不是你一个人在访问。接下来就来演示一下通过MySQL的客户端命令行如何来连接服务器上部署的MySQL 数据模型概述
关系型数据库RDBMS建立在关系模型基础上由多张相互连接的二维表组成的数据库。 而所谓二维表指的是由行和列组成的表如下图 二维表的优点 使用表存储数据格式统一便于维护 使用SQL语言操作标准统一使用方便可用于复杂查询
基于二维表存储数据的数据库就成为关系型数据库不是基于二维表存储数据的数据库就是非关系型数据库比如后面要学习的Redis就属于非关系型数据库。 在Mysql数据库服务器当中存储数据你需要
1. 先去创建数据库可以创建多个数据库之间是相互独立的
2. 在数据库下再去创建数据表一个数据库下可以创建多张表
3. 再将数据存放在数据表中一张表可以存储多行数据SQL简介
SQL结构化查询语言。一门操作关系型数据库的编程语言定义操作所有关系型数据库的统一标准。
SQL通用语法简介
1、SQL语句可以单行或多行书写以分号结尾。 2、SQL语句可以使用空格/缩进来增强语句的可读性。 3、MySQL数据库的SQL语句不区分大小写。 4、注释 单行注释-- 注释内容 或 # 注释内容(MySQL特有) 多行注释 /* 注释内容 */ SQL分类
SQL语句根据其功能被分为四大类DDL、DML、DQL、DCL 分类全称说明DDLData Definition Language数据定义语言用来定义数据库对象(数据库表字段)DMLData Manipulation Language数据操作语言用来对数据库表中的数据进行增删改DQLData Query Language数据查询语言用来查询数据库中表的记录DCLData Control Language数据控制语言用来创建数据库用户、控制数据库的访问权限 数据库设计(数据库操作)-DDL
项目开发流程 在上述的流程当中针对于数据库来说主要包括三个阶段
1. 数据库设计阶段
参照页面原型以及需求文档设计数据库表结构
2. 数据库操作阶段
根据业务功能的实现编写SQL语句对数据表中的数据进行增删改查操作
3. 数据库优化阶段
通过数据库的优化来提高数据库的访问性能。优化手段索引、SQL优化、分库分表等接下来我们就先来学习第一部分数据库的设计就是定义数据库定义表结构以及表中的字段。
数据库操作
DDL中数据库的常见操作查询、创建、使用、删除。
查询数据库 show databases、select database()
查询所有数据库:show databases; 查询当前数据库select database(); 我们要操作某一个数据库必须要切换到对应的数据库中。 通过指令select database() 就可以查询到当前所处的数据库 创建数据库 create database
语法create database [ if not exists ] 数据库名; 可以使用if not exists来避免这个问题 使用数据库 use
语法use 数据库名;
我们要操作某一个数据库下的表时就需要通过该指令切换到对应的数据库下否则不能操作。 删除数据库 drop database
语法drop database [ if exists ] 数据库名;
如果删除一个不存在的数据库将会报错。
PS:
上述语法中的database也可以替换成 schema
如create schema db01;
如show schemas;图形化工具
目前MySQL主流的图形化界面工具有以下几种 DataGrip是JetBrains旗下的一款数据库管理工具已经集成到了 IDEA当中所以我们就可以使用IDEA来作为一款图形化界面工具来操作Mysql数据库。
连接数据库
1、打开IDEA自带的Database配置MySQL 默认情况下连接上了MySQL数据库之后 数据库并没有全部展示出来。 需要选择要展示哪些数据库。具体操作如下 操作数据库
创建数据库: 查看所有数据库 表操作
继续学习DDL语句当中关于表结构的操作。 关于表结构的操作也是包含四个部分创建表、查询表、修改表、删除表。
创建表
创建表语法 create table
create table 表名(字段1 字段1类型 [约束] [comment 字段1注释 ],字段2 字段2类型 [约束] [comment 字段2注释 ],......字段n 字段n类型 [约束] [comment 字段n注释 ]
) [ comment 表注释 ] ;注意 [ ] 中的内容为可选参数 最后一个字段后面没有逗号 案例创建tb_user表对应的结构如下 建表语句
create table tb_user (id int comment ID,唯一标识, # id是一行数据的唯一标识不能重复username varchar(20) comment 用户名,name varchar(10) comment 姓名,age int comment 年龄,gender char(1) comment 性别
) comment 用户表;建表之前注意要选择对应的数据库可以使用use语句也可以直接在idea选中对应的数据库 双击打开tb_user表结构发现可以插入俩条id相同的数据因为我们还没加上约束。 创建表约束语法 primary key、not null、unique、auto_increment等
在MySQL数据库当中提供了以下5种约束
约束描述关键字非空约束限制该字段值不能为nullnot null唯一约束保证字段的所有数据都是唯一、不重复的unique主键约束主键是一行数据的唯一标识要求非空且唯一primary key默认约束保存数据时如果未指定该字段值则采用默认值default外键约束让两张表的数据建立连接保证数据的一致性和完整性foreign key
tb_user表的结构如下 在上述的表结构中:
id 是一行数据的唯一标识
username 用户名字段是非空且唯一的
name 姓名字段是不允许存储空值的
gender 性别字段是有默认值默认为男建表语句
create table tb_user (id int primary key comment ID,唯一标识, username varchar(20) not null unique comment 用户名,name varchar(10) not null comment 姓名,age int comment 年龄,gender char(1) default 男 comment 性别
) comment 用户表;数据表创建完成测试发现表中字段上的约束生效
PSid字段下存储的值如果由我们自己来维护会比较麻烦(必须保证值的唯一性)。MySQL数据库为了解决这个问题给我们提供了一个关键字auto_increment自动增长
主键自增auto_increment每次插入新的行记录时数据库自动生成id字段(主键)下的值具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)
create table tb_user (id int primary key auto_increment comment ID,唯一标识, #主键自动增长username varchar(20) not null unique comment 用户名,name varchar(10) not null comment 姓名,age int comment 年龄,gender char(1) default 男 comment 性别
) comment 用户表;也可以使用图形化界面来创建表结构更加直观、方便 创建表数据类型
MySQL中的数据类型主要分为三类数值类型、字符串类型、日期时间类型。
数值类型
类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述TINYINT1byte(-128127)(0255)小整数值SMALLINT2bytes(-3276832767)(065535)大整数值MEDIUMINT3bytes(-83886088388607)(016777215)大整数值INT/INTEGER4bytes(-21474836482147483647)(04294967295)大整数值BIGINT8bytes(-263263-1)(02^64-1)极大整数值FLOAT4bytes(-3.402823466 E383.402823466351 E38)0 和 (1.175494351 E-383.402823466 E38)单精度浮点数值DOUBLE8bytes(-1.7976931348623157 E3081.7976931348623157 E308)0 和 (2.2250738585072014 E-3081.7976931348623157 E308)双精度浮点数值DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精度更高)
示例: 年龄字段 # 不会出现负数, 而且人的年龄不会太大age tinyint unsigned分数 ---总分100分, 最多出现一位小数score double(4,1) # 4表示整个数字长度1 表示小数位个数decimal(5,2) # 5表示整个数字长度2 表示小数位个数字符串类型
类型大小描述CHAR0-255 bytes定长字符串(需要指定长度)VARCHAR0-65535 bytes变长字符串(需要指定长度)TINYBLOB0-255 bytes不超过255个字符的二进制数据TINYTEXT0-255 bytes短文本字符串BLOB0-65 535 bytes二进制形式的长文本数据TEXT0-65 535 bytes长文本数据MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据MEDIUMTEXT0-16 777 215 bytes中等长度文本数据LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据LONGTEXT0-4 294 967 295 bytes极大文本数据
char是定长字符串指定长度多长就占用多少个字符
varchar是变长字符串指定的长度为最大占用长度
相对来说char的性能会更高些,但会浪费空间示例用户名 username ---长度不定, 最长不会超过50username varchar(50)手机号 phone ---固定长度为11phone char(11)日期时间类型
类型大小范围格式描述DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间YEAR11901 至 2155YYYY年份值DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值时间戳
示例:生日字段 birthday ---生日只需要年月日birthday date创建时间 createtime --- 需要精确到时分秒createtime datetime查询表 desc、show create table
关于表结构的查询操作工作中一般都是直接基于图形化界面操作。 desc 表名 ;#可以查看指定表的字段、字段的类型、是否可以为NULL、是否存在默认值等信息show create table 表名 ;# 查询指定表的建表语句修改表 alter table、add、modify、change等
关于表结构的修改操作工作中一般都是直接基于图形化界面操作。
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]; # 添加字段案例 为tb_emp表添加字段qq字段类型为 varchar(11)
alter table tb_emp add qq varchar(11) comment QQ号码;alter table 表名 modify 字段名 新数据类型(长度); # 修改数据类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束]; # 修改数据类型案例修改qq字段的字段类型将其长度由11修改为13
alter table tb_emp modify qq varchar(13) comment QQ号码;案例修改qq字段名为 qq_num字段类型varchar(13)
alter table tb_emp change qq qq_num varchar(13) comment QQ号码;alter table 表名 drop 字段名; # 删除字段rename table 表名 to 新表名; # 修改表名删除表 drop table
drop table [ if exists ] 表名;数据库操作-DML(数据增删改)
DML英文全称是Data Manipulation Language(数据操作语言)用来对数据库中表的数据记录进行增、删、改操作。
增加数据(insert) 向指定字段添加数据 insert into 表名 (字段名1, 字段名2, ...) values (值1, 值2, ...);全部字段添加数据 insert into 表名 values (值1, 值2, ...);批量添加数据指定字段 insert into 表名 (字段名1, 字段名2, ...) values (值1, 值2, ...), (值1, 值2, ...);批量添加数据全部字段 insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);案例1向tb_emp表的username、name、gender字段插入数据
# 因为设计表时create_time, update_time两个字段不能为NULL所以也做为要插入的字段
insert into tb_emp(username, name, gender, create_time, update_time)
values (wuji, 张无忌, 1, now(), now());案例2向tb_emp表的所有字段插入数据
insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time)
values (null, zhirou, 123, 周芷若, 2, 1.jpg, 1, 2010-01-01, now(), now());案例3批量向tb_emp表的username、name、gender字段插入数据
insert into tb_emp(username, name, gender, create_time, update_time)
values (weifuwang, 韦一笑, 1, now(), now()),(fengzi, 张三疯, 1, now(), now());修改数据(update)
update语法
update 表名 set 字段名1 值1 , 字段名2 值2 , .... [where 条件] ;案例1将tb_emp表中id为1的员工姓名name字段更新为’张三’
update tb_emp set name张三,update_timenow() where id1;案例2将tb_emp表的所有员工入职日期更新为’2010-01-01’
update tb_emp set entrydate2010-01-01,update_timenow();注意事项:
1. 修改语句的条件可以有也可以没有如果没有条件则会修改整张表的所有数据。
2. 在修改数据时一般需要同时修改公共字段update_time将其修改为当前操作时间。删除数据(delete)
delete语法
delete from 表名 [where 条件] ;案例1删除tb_emp表中id为1的员工
delete from tb_emp where id 1;案例2删除tb_emp表中所有员工
delete from tb_emp;注意事项:
• DELETE 语句的条件可以有也可以没有如果没有条件则会删除整张表的所有数据。
• DELETE 语句不能删除某一个字段的值(可以使用UPDATE将该字段值置为NULL即可)。
• 当进行删除全部数据操作时会提示询问是否确认删除所有数据直接点击Execute即可。