目次
MySQL概述
数据库相关概念
MySQL数据库
版本
下载
安装
环境变量
启动制止
客户端毗连
数据模子
SQL
SQL分类
DDL
数据库操作
查询所有数据库
查询当前数据库
创建数据库
删除数据库
切换数据库
表操作
查询当前数据库所有表
查看指定表结构
查询指定表的建表语句
创建表结构
表操作-数据类型
表操作-案例
表操作-修改
表操作-删除
数据库相关概念
在这一部分,我们先来讲解三个概念:数据库、数据库管理系统、SQL。
名称全称简称数据库存储数据的仓库,数据是有组织的举行存储DataBase(DB)数据库管理系统操纵和管理数据库的大型软件DataBase Management System (DBMS)SQL操作关系型数据库的编程语言,界说了一套操作关系型数据库同一标准Structured Query Language (SQL)
而如今主流的关系型数据库管理系统的市场占有率排名如下:DB-Engines Ranking - popularity ranking of database management systems
- Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。
- MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。 如今Oracle推出了收费版本的MySQL,也提供了免费的社区版本。
- SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
- PostgreSQL:开源免费的中小型数据库。
- DB2:IBM公司的大型收费数据库产品 。
- SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
- MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。
而不论我们使用的是上面的哪一个关系型数据库,终极在操作时,都是使用SQL语言来举行同一操作, 由于我们前面讲到SQL语言,是操作关系型数据库的同一标准 。以是纵然我们如今学习的是MySQL, 假如我们以后到了公司,使用的是别的关系型数据库,如:Oracle、DB2、SQLServer,也完全不用 担心,由于操作的方式都是一致的。
MySQL数据库
版本
官方: MySQL
MySQL官方提供了两种不同的版本:
- 社区版本(MySQL Community Server) 免费, MySQL不提供任何技术支持
- 贸易版本(MySQL Enterprise Edition) 收费,可以使用30天,官方提供技术支持
下载
- 解压版 mysql-5.7.30-winx64.zip
- 安装版 mysql-installer-community-5.7.30.0.msi
安装
要想使用MySQL,我们首先先得将MySQL安装好,我们可以根据下面的步调,一步一步的完成MySQL的 安装。
环境变量
安装好MySQL之后,还必要配置环境变量,如许才可以在任何目次下毗连MySQL。
A. 在此电脑上,右键选择属性
B. 点击左侧的 "高级系统设置",选择环境变量
C. 找到 Path 系统变量, 点击 "编辑"
D. 选择 "新建" , 将MySQL Server的安装目次下的bin目次添加到PATH环境变量
Path环境变量非必要,方便在DOS环境中,任何目次都可以执行bin中的可执行文件
启动制止
MySQL安装完成之后,在系统启动时,会自动启动MySQL服务,我们无需手动启动了。
当然,也可以手动的通过指令启动制止,以管理员身份运行cmd,进入命令行执行如下指令:
net start <服务名>
- DOS服务管理命令
- net start <服务名> #启动服务
- net stop <服务名> #制止服务
客户端毗连
1). 方式一:使用MySQL提供的客户端命令行工具
2). 方式二:使用系统自带的命令行工具执行指令
- mysql [-h 127.0.0.1][-P 3306] -u root -p
复制代码 参数:
- -h: MySQL服务地点的主机工P
- -P: MySQL服务端标语,默认3306
- -u: MysQL数据库用户名
- -p: MysQL数据库用户名对应的密码
[]内为可选参数,假如必要毗连远程的MySQL,必要加上这两个参数来指定远程主机IP、端口,假如毗连本地的MySQL,则无需指定这两个参数。
数据模子
1)关系型数据库(RDBMS)
概念:建立在关系模子基础上,由多张相互毗连的二维表构成的数据库。
而所谓二维表,指的是由行和列构成的表,如下图(就雷同于Excel表格数据,有表头、有列、有行, 还可以通过一列关联另外一个表格中的某一列数据)。我们之条件到的MySQL、Oracle、DB2、SQLServer这些都是属于关系型数据库,里面都是基于二维表存储数据的。简单说,基于二维表存储 数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库。
特点:
A. 使用表存储数据,格式同一,便于维护。
B. 使用SQL语言操作,标准同一,使用方便。
2).数据模子
MySQL是关系型数据库,是基于二维表举行数据存储的,具体的结构图下:
我们可以通过MySQL客户端毗连数据库管理系统DBMS,然后通过DBMS操作数据库。
- 可以使用SQL语句,通过数据库管理系统操作数据库,以及操作数据库中的表结构及数据。
- 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。
SQL
SQL分类
SQL语句,根据其功能,告急分为四类:DDL、DML、DQL、DCL。
分类全称说明DDLData Definition Language数据界说语言,用来界说数据库对象(数据库,表, 字段)DMLData Manipulation Language数据操作语言,用来对数据库表中的数据举行增编削DQLData Query Language数据查询语言,用来查询数据库中表的记录DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限 DDL
Data Definition Language,数据界说语言,用来界说数据库对象(数据库,表,字段) 。
数据库操作
查询所有数据库
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sys |
- | test_db |
- +--------------------+
- 5 rows in set (0.01 sec)
复制代码 查询当前数据库
- mysql> select database();
- +------------+
- | database() |
- +------------+
- | NULL |
- +------------+
- 1 row in set (0.00 sec)
-
- mysql> use test_db;
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
-
- Database changed
- mysql> select database();
- +------------+
- | database() |
- +------------+
- | test_db |
- +------------+
- 1 row in set (0.00 sec)
复制代码 创建数据库
- create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ]
复制代码 删除数据库
- drop database [ if exists ] 数据库名 ;
复制代码 假如删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,假如数据库存在,再执行删除,否则不执行删除。
- mysql> drop database if exists db2;
- Query OK, 0 rows affected, 1 warning (0.00 sec)
复制代码 切换数据库
我们要操作某一个数据库下的表时,就必要通过该指令,切换到对应的数据库下,否则是不能操作的。 好比,切换到test_db数据,执行如下SQL:
表操作
查询当前数据库所有表
- mysql> use test_db;
- Database changed
- mysql> show tables;
- +-------------------+
- | Tables_in_test_db |
- +-------------------+
- | dept |
- | emp |
- +-------------------+
- 2 rows in set (0.00 sec)
复制代码 查看指定表结构
- mysql> desc dept;
- +-------+-------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+----------------+
- | id | int(11) | NO | PRI | NULL | auto_increment |
- | name | varchar(50) | NO | | NULL | |
- +-------+-------------+------+-----+---------+----------------+
- 2 rows in set (0.00 sec)
复制代码 通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为NULL,是否存在默认值等信息。
查询指定表的建表语句
通过这条指令,告急是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询到,由于这部分是数据库的默认值,如:存储引擎、字符集等。
- mysql> show create table dept;
复制代码 创建表结构
- CREATE TABLE 表名(
- 字段1 字段1类型 [COMMENT字段1注释],
- 字段2 字段2类型 [ COMMENT字段2注释],
- 字段3 字段3类型 [COMMENT字段3注释],
- 字段n 字段n类型 [COMMENT字段n注释]
- )[ COMMENT 表注释];
-
复制代码 好比,我们创建一张表 tb_user ,对应的结构如下,那么建表语句为:
- Create table tb_user(
- id int comment '编号',
- name varchar(50) comment '姓名',
- age int comment '年龄',
- gender varchar(1) comment '性别'
- )comment '用户表';
复制代码 表操作-数据类型
在上述的建表语句中,我们在指定字段的数据类型时,用到了int ,varchar,那么在MySQL中除了以上的数据类型,还有哪些常见的数据类型呢? 接下来,我们就来详细先容一下MySQL的数据类型。
MySQL中的数据类型有很多,告急分为三类:数值类型、字符串类型、日期时间类型。
1)数值类型
类型巨细有符号(SIGNED)范围无符号(UNSIGNED)范围描述TINYINT1byte(-128,127)(0,255)小整数值SMALLINT2bytes(-32768,32767)(0,65535)大整数值MEDIUMINT3bytes(-8388608,8388607)(0,16777215)大整数值INT/INTEGER4bytes(-2147483648, 2147483647)(0,4294967295)大整数值BIGINT8bytes(-2^63,2^63-1)(0,2^64-1)极大整数值FLOAT4bytes(-3.402823466 E+38, 3.402823466351 E+38)0 和 (1.175494351 E- 38,3.402823466 E+38)单精度浮点数值DOUBLE8bytes(-1.7976931348623157 E+308, 1.7976931348623157 E+308)0 和(2.2250738585072014 E-308, 1.7976931348623157 E+308)双精度浮点数值DECIMAL依靠于M(精度)和D(标度) 的值依靠于M(精度)和D(标度)的值小数值(精确定点数) 如: 1)年事字段--不会出现负数,而且人的年事不会太大 age tinyint unsigned 2)分数--总分100分,最多出现一位小数· score double ( 4,1)
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是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。
如: 1)用户名username ------>长度不定,最长不会超过50 username varchar( 50) . 2)性别gender --------->存储值,不是男,就是女· gender char(1)
3)手机号phone -------->固定长度为11+ phone char ( 11)
3)日期时间类型
类型巨细范围格式描述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混合日期和时间值,时间戳 如:
1)生日字段birthday birthday date 2)创建时间createtime: createtime datetime·
表操作-案例
设计一张员工信息表,要求如下:
编号(纯数字)
员工工号 (字符串类型,长度不超过10位)
员工姓名(字符串类型,长度不超过10位)
性别(男/女,存储一个汉字)
年事(正常人年事,不大概存储负数)
身份证号(二代身份证号均为18位,身份证中有X如许的字符)
入职时间(取值年月日即可)
- 对应的建表语句如下:
- create table emp (
- id int comment '编号',
- workno varchar(10) comment '工号',
- name varchar (10) comment '姓名',
- gender char(1) comment '性别',
- age tinyint unsigned comment '年龄',
- idcard char(18) comment '身份证号',
- workaddress varchar(20) comment '工作地址',
- entrydate date comment '入职时间'
- ) comment '员工表';
- SQL语句编写完毕之后,就可以在MySQL的命令行中执行SQL,然后也可以通过 desc 指令查询表结构信息:
- desc emp;
- 表结构创建好了,里面的name字段是varchar类型,最大长度为10,也就意味着如果超过10将会报错,如果我们想修改这个字段的类型或修改字段的长度该如何操作呢?接下来再来讲解DDL语句中, 如何操作表字段。
- 表操作-修改
- 1). 添加字段
- ALTER TABLE 表名 ADD 字段名 类型 (长度) [COMMENT 注释] [约束];
- 案例:
- 为emp表增加一个新的字段”昵称”为nickname,类型为varchar(20)
- alter table emp add nickname varchar(20) comment '昵称';
- 2). 修改数据类型
- ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
- 3). 修改字段名和字段类型
- ALTER TABLE表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT注释][约束];
- 案例:
- 将emp表的nickname字段修改为username,类型为varchar(30)
- alter table emp change nickname username varchar(20) comment '昵称';
- 4). 删除字段
- alter table drop 字段名
- 案例:
- 将emp表的字段username删除
- alter table emp drop username;
- 5). 修改表名
- alter table 表名 rename to 新表名;
- 案例:
- 将emp表的表名修改为 employee
- alter table emp rename employee;
- 表操作-删除
- 1). 删除表
- drop table [if exists] 表名;
- 可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。
- 案例:
- 如果tb_user表存在,则删除tb_user表
- drop table if exists tb_user;
- 2). 删除指定表, 并重新创建表
- truncate table 表名;
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |