1 数据库
数据库(Database,简称DB)是指长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”。作用就是保存、管理数据。
数据库主要分为两类:
关系型数据库(SQL):MySQL、Oracle、SQL Server、SQLite、DB2
非关系型数据库(NOSQL):Redis、MongoDB
数据库管理系统(Database Management System 简称DBMS):数据管理软件,科学组织和存储数据、高效获取和维护数据。
MySQL简介:MySQL是现流行的开源、免费的关系型数据库。可在官网下载安装。
SQLyoga管理工具:可手动操作、管理MySQL数据库的软件工具。
1.1 连接数据库
在DOS命令窗口输入以下指令连接数据库:
1.启动数据库服务
net start mysql
注:如果出现拒绝访问/系统发生错误的情况,尝试以管理员身份运行DOS命令窗口
2.连接数据库
mysql -h服务器主机地址 -u用户名 -p密码
注:用户名和密码指的是安装MySQL时设置的用户名和密码
连接数据库也可以采用密码不显的方法
输入:mysql -h服务器主机地址 -u用户名 -p 指令后回车,再次输入密码。
密码不显的方式:
2 结构化查询语句SQL
结构化查询语句分类
名称 | 解释 | 命令 |
DDL(数据定义语言) | 定义和管理数据对象,如数据库、数据表等 | create(创建)、alter(修改)、drop(删除) |
DML(数据操作语言) | 用于操作数据库对象中所包含的数据 | insert(插入)、update(修改)、delete(删除) |
DQL(数据查询语言) | 用于查询数据库数据 | select |
DCL(数据控制语言) | 用来管理数据库的语言,包括管理权限及数据更改 | grant、commit、rollback |
注:DDL是针对数据库和数据表操作的,DML和DQL是对表中的数据操作的。
3 DDL(数据定义语言)应用
3.1 命令行操作数据库
创建数据库
create database [if not exists] 数据库名;
删除数据库
drop database [if exists] 数据库名;
查看数据库
show databases;
使用数据库
use 数据库名;
3.2 命令行操作表
创建表可以通过SQLyog工具建表,也可以通过create语句建表。
显示表结构:desc 表名
显示表创建语句:show create table 表名
3.2.1 创建数据表(CREATE TABLE)
create table[if not exists] `表名`(
`字段名1` 列类型 [属性] [索引] [注释],
`字段名2` 列类型 [属性] [索引] [注释],
......
`字段名n` 列类型 [属性] [索引] [注释]
)[表类型] [表字符集] [注释];
注:反引号是用于区别MySQL保留字和普通字符。
1.列类型:规定表中该列存放的数据类型。分为以下几种类型:数值类型、字符串类型、日期和时间型数值类型、NULL值。
数值类型
字符串类型
日期和时间数值类型
NULL值 :理解为没有值或未知值。原则上不用NULL值进行算术运算,结果仍为NULL。
常用数据类型的选择:整数和浮点、日期类型、char和varchar
2.数据字段属性:对表中的数据进行相应约束
unsigned | 无符号的,声明该数据列不允许有负数 |
zerofill | 0填充的,不足位数的用0填充 |
auto_increment | 自增长,每添加一条数据,自动在上一个记录数上+1,通常用于设置主键,且为整数类型 |
NULL和NOT NULL | 默认为NULL,即该列数值没有插入 如果设置为NOT NULL,则该列必须有值 |
DEFAULT | 默认的,用于设置默认值,例如有性别字段,可设置默认为“男” |
unique | 唯一的,声明该列数据具有唯一性 |
3. 数据字段注释:对字段名/表名进行解释
对字段名解释:comment '解释语'
对表名解释:comment='解释语'
举例:使用SQL语句创建student表。具体设计如下:
SQL语句代码:
CREATE TABLE `student` (
`StudentNo` int(4) NOT NULL COMMENT '学号',
`LoginPwd` varchar(20) DEFAULT NULL,
`StudentName` varchar(20) DEFAULT NULL COMMENT '学生姓名',
`Sex` tinyint(1) DEFAULT NULL COMMENT '性别,取值0或1',
`GradeId` int(11) DEFAULT NULL COMMENT '年级编号',
`Phone` varchar(50) NOT NULL COMMENT '联系电话,允许为空,即可选输入',
`Address` varchar(255) NOT NULL COMMENT '地址,允许为空,即可选输入',
`BornDate` datetime DEFAULT NULL COMMENT '出生时间',
`Email` varchar(50) NOT NULL COMMENT '邮箱账号,允许为空,即可选输出',
`IdentityCard` varchar(18) DEFAULT NULL COMMENT '身份证号'
);
4.表类型:设置数据表的类型 。语法:ENGINE=数据表类型
MySQL数据表的类型:MyISAM、InnoDB 、HEAP、BOB、CSV等。
常见的MyISAM和InnoDB类型比较
使用MyISAM:节约空间及响应速度。使用InnoDB:安全性,支持事务处理及多用户操作数据表。
3.2.2 修改表(ALTER TABLE)
#修改表名
alter table `旧表名` rename as `新表名`;
#向表中添加字段
alter table `表名` add `字段名` 列类型[属性];
#修改列类型
alter table `表名` modify `字段名` 新列类型[属性];
#修改字段名
alter table `表名` change `旧字段名` `新字段名` 列类型[属性];
#删除字段
alter table `表名` drop `字段名`;
3.3.3 删除表(DROP TABLE)
语法:drop table [if exists] `表名`;