MySQL数据库 Day01
1. MySQL的安装及配置
1.1 什么是数据库 SQL?
SQL指结构化查询语言,SQL是用于访问和处理数据库的可以与数据库交互的计算机语言,SQL是一种ANSI 标准的计算机语言。SQL属于非过程化语言
1.2 支持SQL语言的RDBMS数据库有那些?
RDBMS指关系型数据库管理系统, RDBMS是SQL的基础,同样也是所有现当数据库系统的基础,支持SQL语言的RDBMS数据库有MS SQL Sever、IBM DB2、Oracle、MySQL以及 Microsoft Acces。 RDMBS 中的数据存储在数据库对象数据表中, 数据表是相关的数据项的集合,他又列和行组成的二维表
1.3 SQL语言分类有那些(面试)
- DDL 数据定义语言 (针对数据表的结构)
用于数据定义语言,他主要用于定义和管理数据库的各种对象,如:数据表、视图、索引。对数据表进行创建、修改、删除的操作使用的SQL语言属于DDL,数据定义语言针对的是数据表的结构,不是数据表里的数据
DML 三个月还有操纵语言
2 ) DML 数据操作语言:用于插入或更新修改和删除数据
- INSERT INTO …
- UPDATE … SET…
- DELETE FROM
3) DQL 数据查询语言 (重点)
DQL 数据查询语言主要用于查询检索数据,DQL数据查询语言用于检索数据库中的数据,主要是SELECT语句。他在操作数据库的过程中使用最为频繁,SELECT 语句是数据库中用于查询的语句
4)DCL 数据控制语言 (授予权限)
DCL 数据控制语言:用于定于数据用户权限等,DCL数据控制语言用于执行权限,授予和权限收回操作。主要包括 GRANT 和 REVOKE两条命令。其中GRANT命令用于给用户或角色授予权限,而REVOKE命令 则用于收回用户或角色所具有的权限。- GEANT … TO…
- REVOKE … FROM…
5) TCL 事物控制语言
TCL 事物控制语言用于维护数据的一致性 , 包括>COMMIT、ROLLBACK 和SAVEPOINT语句。 其中, COMMIT 语句用于提交对数据库的更改,ROLLBAKE 语句用于取消对数据库的更改,而SAVEFOINT 语句则用于保存点
面试题
- 数据定义语言是用于()的方法。
A 确保数据的准确性
B 定义和修改数据结构
C 查看数据
D 删除和更新数据- 操作数据库的过程中使用最为频繁的是()
A CREATE
B DROP
C SHOW
D SELECT
答案 B D
1.4 数据的类型
常用的数据类型 int varchar char date datetime text等
- 整数型 INT 字节数 4 INTEGER 等等 区别是 取值范围不同
- 浮点型和定点类型 FLOAT 字节数4 DOUBLE 字节数8 DECIMAL(M,D) 字节数 M+2
- float(m,n)m 是所有位数 (整数+小数) n表示 小数位
- 时间日期类型
- YEAR 字节1 0000
- DATE 字节4 0000:00:00
- TIME 字节3 00:00:00
- DATETIME 字节 8 0000-00-00 00:00:00
- TIMESTAMP 字节4 最大时间
- 字符串类型
- CHAR:255 char(5) 固定字符串
- VARCHAR:65535 可变字符串 varchar(5) TEXT文本 保存大文本,字符串数据
- 二进制类型
1.5 MySQL 常见的约束条件有哪些?
1)主键约束PRIMARY KEY(PK) 唯一标识表中的某一条记录, 相当于非空 + 唯一
一个表中只能有一个主键,可以有一个字段标识,也可以由多个字段联合(联合主键)组成,如果采用联合主键时,每隔字段都不能为空
2)非空约束 确保字段值不能为空
3)* 唯一约束 确保所在的字段不出现重复值,但允许出现NULL值, UNIQUE表示*
4)* 外键约束FORRIGN KEY FK 用 REFERERENCES表示参照,主要作用:确保相关的两个字段之间的参照关系,被参照的表称作主表,参照主表的表 称为子表,子表中的参照字段可以位空,或者来自主表,删除子表中的数据时,主表中的数据不被删除,反之,删除主表中的数据时,如果子表中有参照记录,则主表记录不能删除*
5) auto_increment 自增 (放在主键上) 在保重差额u数据时,如果不对该字段赋值,会自动在以由的最大值的基础上+1
6)dafault 默认值 在表中插入数据时,如果不对该字段赋值,该字段将使用默认值
7)unsigned -无符号说明次字段位无符号整数类型
8) zerofill 表示0填充 定义了数据类型的长度,如果世纪位数小于定义的长度,显示会在左边用0填充。
面试题2:
在设计数据库时,要充分考虑数据的完整性或准确性。
关于 PRIMARY KEY 和 UNIQUE的描述错误的是
A PRIMARY KEY 用来在表中设置主键 主键列的值是可以重复的 , 用来唯一标识表中的每一条记录
B PRIMATY KEY 列不可以有null值 而UNIQUE列 是可以有null值
C PEIMARY KEY 列和UNIQUE 列都不可以有null值
D 设为UNIQUE 的列的值是不能重复的,用来唯一区别 UNIQUE列的值
答案 A C
2. MySQL的常用基本操作命令
2.1 如何创建数据表
1) 创建数据库的基本表的创建
CERATE TABLE [IF NOT EXISTS] 表名(
字段1 数据类型1 主键,
字段2 数据类型2 ,
字段3 数据类型3 ,
字段4 数据类型4
);
- IF NOT EXISTS 是可选参数的 如果不指定if not exists语句,创建同名表的时候就会报错
- 指定了 if not exists 语句来创建表 虽然表明是存在的,但是创建没有报错,但是存在警告信息是表已经存在了
- 两次创建的表 如果字段不同, 表明相同, 还是不允许创建
CREAT TABLE t_class(
cno int(4)primary key,
cname varchar(15)
);
-- 带IF NOT EXISTS 参数
CRAEAT TABLE IF NOT EXISTS t_class(
cno int(4) primary key;
cname varchar(15)
)
- 带有约束的数据表的创建 语法格式:
CREATE TABLE DDL(数据定义语言 此处填写表名)(
字段1 数据类型1 约束条件1 约束条件2 ... ,
字段2 数据类型2 约束条件,
字段3 数据类型3,
字段4 数据类型4 );
)
实例:
CREATE TABLE t_stu(
sno int(8) primary key auto_increment,
sname varchar(30) not null,
sex char(4) default '男',
age int(3)unsigned,
cno int(4)
)
- 创建数据表时添加主键约束 和外键约束 实例2:
-
CREAT TABLE t_stu( sno int(8) primary key auto_increment, sname varchar(30) not null, sex char(4) default '男', age int(3)unsigned, cno int(4), primaty key (sno), constraint fk_stu_cno foreign key(cno) references t_class(cno) )
- 如果是联合主键 primary key(sid,cid)
2.2 如何修改数据表的结构?
1) 如何修改表名?
语法: ALTER TABLE 旧表明 RENAME[TO] 新表名
例如
ALTLE TABLE t_stu RENAME TO t_student;
- 如何修改字段?
语法: ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新属性类型;
实例1: 修改字段类型
ALTER TABLE t_student CHANGE stu_id stu_id int(6);
实例2 修改字段名和类型
ALTER TABLE t_student CHANGE stu_id sid int(5);
- 如何增加字段?
语法 AELTE TABLE 表明ADD 新属性名 新属性类型[完整性约束][first | after 原有字段];
3.1) 新增无完整性约束的字段示例:
ALTER TABLE t_student ADD email varchar(20);
3.2) 新增有完整性约束的字段实例:
ALTER TABLE t_student ADD age int not null;
3.3)将字段添加到第一位实例:
AELTER TABLE t_student ADD sid int primary key first;
3.4)将字段添加到某个字段之后示例:
AELTER TABLE t_student ADD address varchar(100) after telephone;
- 如何删除字段?
语法: ALTER TABLE 表名 DROP 属性名;
示例:
AELTER TABLE t_student DROP address;
- 如何给自己创建好的表增加主键约束?
语法: AELTE TABLE 表名 ADD PRIMARY KEY (主键列名)
AELTER TABLE t_class ADD PRIMARY KEY(cno);
- 如何删除主键约束?
语法: ALTER TABLE 表名1 DROP PRIMARY KEY;
实列
ALTER TABLE t_class DROP PRIMATY KEY;
- 如何给一创建好的表增加外键约束
ALTER TABLE t_student ADD CONSTRAINT fk_stu_cno FOREIGE KEY(cno) REFERENCES t_class(cno);
- 如何删除外键?
ALTER TABLE t_student DROP foreign fk_t_stu_cno
注意 :MySQL 在外键后,会自动健一个同名的索引。所以要删除外键,需要同时删除这个同名索引。
ALTER TABLE t_student DROP index fk_t_stu_cno;
- 如何删除数据表?
语法 : DROP TABLE[ID EXISTS]表名:
DROP TABLE t_test;
-- 带 IF EXISTS 参数
DROP TABLE IF EXISTS t_test;
面试题3 :
DROP TABLE 和TRUNCATE TABLE 的异同?
- DROP TABLE
- DDL 语言
- 用于删除表 包括表的结构,属性以及索引也会被删除
- 无法回退,彻底删除
- TEUNCATE TABLE
- DDL 语言
- 默认所有的表的内同都删除, 表结构不会被删除
- 无法回退
- 删除速度比delete快
3. 学会使用 Navicat
4. 使用DDL语句创建school数据库并使用数据库
5. 修改数据表的结构