什么是数据库?
数据库(Database,简称DB)概念: 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个 数据“仓库” 。
作用:存放、管理数据
分类
关系型数据库
常见的关系型数据库:MySQL、ORACLE、PostgreSQL
NoSQL
常见的NoSQL数据库:redis、mongoDB
为什么学习MySQL
特点:操作便捷;小巧,功能齐全;免费、开源的数据库;可运行于windows或linux系统
数据库结构
数据库(Database):以文件的形式存放在磁盘上,即对应于一个或多个物理文件。
数据表(Table):简称表,由一组数据记录组成, 数据库中的数据是以表为单位进 行组织的。一个表是一组相关的 按行排列的数据;每个表中都含 有相同类型的信息。
字段(Field):也称域。表中的每一列称为一个 字段。每个字段都有相应的描述 信息。
记录(Record): 表中的每一行称为一个记录,它由若干个字段组成。
索引(Index) :索引实际上是一种特殊类型的表, 其中含有关键字段的值和指向实 际记录位置的指针,可以提高访 问数据库的效率。
SQL语句: 结构化查询语句命令,用来从一 个或多个表中获取一组指定的记录,或者对某个表执行指定的操作。
SQL语句分类
SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一 种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库 脚本文件的扩展名。
DDL(数据定义语言)
作用:定义和管理数据对象, 如数据库,数据表等
常见命令:CREATE、DROP、ALTER
DML(数据操作语言)
作用:用于操作数据库对象中所包含的数据
常见命令:INSERT、UPDATE、DELETE
DQL(数据查询语言)
作用:用于查询数据库数据
常见命令:SELECT
DCL(数据控制语言)
作用:用来管理数据库的语言,包括管理权限及数据更改
常见命令:GRANT、COMMIT、ROLLBACK
数据库表的字段类型
字符串类型
类型 | 特点 | 空间上 | 时间上 | 使用场景 |
CHAR(M) | 固定长度 | 浪费存储空间 | 效率高 | 存储不大,对速度要求高 |
VARCHAR(M) | 可变长度 | 节省存储空间 | 效率低 | 非CHAR的情况 |
数值类型
tinyint【taɪni】:非常小的数据
int:标准整数
bigint:较大的整数
Decimal:字符串形式的浮点数
日期和时间类型
DATETIME:格式:YY-MM-DD hh:mm:ss
设置当前 创建时间,或者是更新时间时给TIMESTAMP或者DATETIME字段 设置 DEFAULT CURRENT_TIMESTAMP 添加当前默认时间
DDL语言
库的操作
创建数据库
语法:create database 库名
create database xiaozhao2;
删除数据库
语法:drop database 库名
drop database xiaozhao2;
使用库 / 切换库
语法:use 库名
use xiaozhao2;
查看所有的库
show databases;
表的操作
查看所有的表
show tables;
创建表
语法:
-- create table 表名(
-- 字段名 类型 属性,
-- 字段名 类型 属性,
-- ...
-- 字段名 类型 属性
-- );
CREATE TABLE STUDENT(
stu_name varchar(10),
stu_age tinyint,
stu_birthday datetime,
stu_id char(18),
stu_score decimal(4,1)
);
查看表结构
方式一:desc 表名
desc student;
方式二:show create table 表名
show create table student;
表结构修改
语法:alter table 表名 关键词 数据;
关键词:rename as 、 add、 drop、 modify、 change
1. 修改表名
语法:alter table 旧表名 rename as 新表名;
alter table student rename as xuesheng;
2. 添加字段
语法:alter table 表名 add 新字段名 类型 属性;
alter table xuesheng
add stu_qq varchar(20) comment '这是学生的qq号'
(其中,comment是备注)
3.删除字段
语法: alter table 表名 drop 字段名;
alter table xuesheng drop stu_age;
4.修改字段
方式一
语法:alter table 表名 modify 字段名 要修改的类型 要修改的属性;
使用modify 只能修改 数据类型 和 属性,并且修改是覆盖性的
alter table xuesheng modify stu_name varchar(100);
alter table xuesheng modify stu_qq int;
方式二
语法:alter table 表名 change 旧字段名 新字段名 要修改类型 要修改属性;
change 数据类型 和 属性 还可以修改字段名
alter table xuesheng
change stu_qq qq varchar(20) comment '这是qq号';
删除表
语法:drop table 表名
drop table xuesheng;
DML语言
新增(INSERT)
语法:INSERT INTO 表名 (字段名,字段名,...,字段名) VALUES (值,值,...,值)
全字段插入
INSERT INTO student (sid,sname,birthday,ssex,classid)
VALUES(9,'张三','2007-1-1','男',1)
部分字段插入
INSERT INTO student(sname,ssex) VALUES('陈小远','男');
一次性添加多条数据
方式一
语法:INSERT INTO 表名 (字段名..) VALUES(值..),(值..),(值..)...
INSERT INTO student (sname,ssex) VALUES('xn','女'),('ztt','女'),('zad','女');
方式二
语法:INSERT INTO SELECT (注意:插入和被插入的表都必须存在)
创建一个空表:
CREATE TABLE newstu(
xingming VARCHAR(10),
xingbie VARCHAR(10),
classid int
);
把student表中的数据插入到newstu里:
INSERT INTO newstu(xingming,xingbie,classid) SELECT sname,ssex,classid from student
方式三
被插入表不能存在:
create table stu1 select sid,sname,birthday from student
修改(update)
简单的修改
语法:UPDATE 表名 SET 字段名=字段值, 字段名=字段值, 字段名=字段值
UPDATE stu1 SET birthday='2005-7-9'
条件修改
语法:UPDATE 表名 SET 字段名=字段值, 字段名=字段值, 字段名=字段值【WHERE子句条件】
UPDATE stu1 SET birthday='2002-2-2' WHERE sname='陈小远';
注意:NULL不会被改变,因为null是类型,不是值,不能参与运算
UPDATE newstu SET classid=200
WHERE xingbie != '男';
UPDATE newstu SET classid=300
WHERE xingbie <> '女'; -- <>是不等于的意思
删除(drop)
语法1:DELETE FROM 表名
DELETE FROM newstu;
语法2:DELETE FROM 表名 【WHERE条件子句】
DELETE FROM stu1 WHERE sid = 1;
清空表
方法1
语法:DELETE 表名(只删除了数据)
方法2
语法:TRUNCATE 表名(不仅删除了数据,还删除了索引)
方法3
语法:DROP 表名(不仅删除了数据,还删除了索引,表结构也被删了)