什么是数据库
按照数据结构来存储、管理、组织数据的仓库;
数据库的的简称DB(database)。
数据库的分类
关系型数据库(SQL)
关系型数据库是把复杂的数据转化为简单的二元关系,也就是二维表格的形式,它是当前使用最广泛的数据库。
mysql、Oracle、SQL Server、DB2、SQLlite。
非关系型数据库
面对高并发的软件,对数据库的IO流、性能要求比较高的情况,要使用非关系型数据库。
Hbase、Redis。
MySQL的简介
mysql使用比较广泛的,是最好的关系型数据库之一。
RDBMS即关系型数据库管理系统。
特点:
1、数据以表的形式来展示。
2、一行为一条记录。
3、一列为一个字段。
4、许多的行和列来组成一张表。
5、若干个表单来组成数据库。
表结构:
所有的表都是由一个或者多个列组成的;
比如:在学生表中,一个学生的信息有学号、姓名、性别、班级等等,相同的字段放在同一列,一组数据放在同一行。
SQL语言
是结构化的查询语言,是一种专门用来与数据库通信的语言;
特点:
1、不区分大小写的。
2、关键字 字段名 表名 需要用空格或者逗号来隔开。
3、每一个SQL语句是用分号来结尾的。
4、语句可以写一行也可以写多行。
数据库的操作(使用SQLyog):
查看当前mysql服务器中有哪些数据库:
#数据库相关操作
#查看当前mysql服务器中有哪些数据库
SHOW DATABASES;
创建数据库:
#创建数据库
#create database 数据库名称
CREATE DATABASE baihu;
切换数据库:
#切换数据库
#use 数据库名称
#因为表在建立的时候必须要先选择数据库才行,
USE student;
删除数据库:
#删除数据库
#drop database 数据库名称
DROP DATABASE baihu;
表的相关操作
创建表:
#创建表
#create table 表名称 (列名1 列1的数据类型, 列名2 列2的数据类型);
CREATE TABLE student (stu_name CHAR(2), age INT);
查看一个数据库中有哪些表:
#查看一个数据库中有哪些表
SHOW TABLES;
删除表操作:
#删除表操作
#drop table 表名;
DROP TABLE student;
查看表结构;
#查看表结构
#desc 表名
DESC test01;
查看建表语句;
#查看建表语句
#show create table 表名;
SHOW CREATE TABLE student;
更新表 :
1、更新表必须要指定更新的表名
2、说明所需要修改的列
给表添加一列
#给表添加一列
ALTER TABLE student ADD telephone CHAR(11) NOT NULL DEFAULT '18888888888';
DESC student;
修改列
#修改列
#alter table 表名 modify 列名 新类型 新参数;
#alter table 表名 change 旧列名 新列名 新类型 新参数;
ALTER TABLE student MODIFY age CHAR(2);
ALTER TABLE student CHANGE age stu_age INT;
删除列
#删除列
#alter table 表名 drop 列名;
ALTER TABLE student DROP telephone;
修改表名
#修改表名
#alter table 当前的表名 rename to 新表名
#rename table 当前的表名 to 新表名
ALTER TABLE student RENAME TO new_stu;
RENAME TABLE new_stu TO student;
表内的数据的插入
#表内的数据的插入
#insert into
#1、插入完整的行
#insert into 表名 (列名1,列名2...) values (值1, 值2....);
INSERT INTO student (stu_name, stu_age, join_time) VALUES
('大娃', 8, '1990-08-08 18:00:30');
INSERT INTO student VALUES ('二娃', 7, '1990-08-09 18:00:30');
INSERT INTO student (stu_age, stu_name, join_time)VALUES
(8, '大娃', '1990-08-08 18:00:30');
#在插入行的时候,如果不写列的名称,mysql默认是按照列的顺序进行插入,
#实际在开发过程中,建议将列写清楚,这样即使表的列的顺序出现变化,也能保证
#sql语句能正常执行。
#2、插入行的一部分
#如果要插入行的一部分,要将需要添加数据的列名写清楚,
#因为不写列名默认要填写所有的数据。
INSERT INTO student (stu_name, stu_age) VALUES ('四娃', 10);
#3、插入多行
#插入多行时,将每一组数据用括号括起来,并用逗号隔开即可。
INSERT INTO student (stu_name, stu_age, join_time) VALUES
('大娃', 13, '1990-08-08 18:00:30'),
('二娃', 12, '1991-08-08 18:00:30'),
('三娃', 11, '1992-08-08 18:00:30');
更新表数据
#更新表数据 update
#格式:update 表名 set 列名1 = 新值1, 列名2 = 新值2[where子句];
#如果按照这种写法没有条件限制,会将所有的值全部改掉
UPDATE student SET stu_name='迪迦';
#修改数据的时候一定要使用where子句来限制条件,否则会出问题。
UPDATE student SET stu_name='赛文' WHERE stu_age=11;
删除表数据
#删除表数据
#delete from 表名 where ... ;
#必须要指定where子句中的条件,否则会将所有的数据全部删掉
#从表中删除特定的行
DELETE FROM student WHERE stu_age=13 AND join_time='1990-08-08 18:00:30';
#删除表中的全部数据
DELETE FROM student;
#清空表数据
TRUNCATE TABLE student;
truncate 和 delete的区别
#truncate 和 delete的区别
# delete from 是直接对表中的数据进行逐行删除,所以相对来说如果数据量比较大,会消耗比较长的时间,
#但是优势是可以灵活指定删除哪些数据
#truncate table 代表是先整张表删除,然后创建一个一模一样的空表
select 查询语句
#select 查询语句
#1、查询哪些字段
#2、从哪里查询(选择哪个表)
#格式:select 字段1, 字段2... from 表名;
SELECT stu_name FROM student;
SELECT stu_name, stu_age FROM student;
#查询表中所有的数据
SELECT * FROM student;
#避免查询到重复的数据
SELECT DISTINCT stu_age FROM student;
MySQL中的常见数据类型
数值类型:
整数型:
int类型:占4个字节,带符号的范围-2147483648~2147483647,不带符号,0~4294967295;
浮点类型:
float:单精度浮点
double:双精度浮点
字符串类型:
#字符串类型
#CHAR(M)
#最多可以容纳M个字符,M可以省略,默认为1;
#VARCHAR(M)
#最多可以容纳M个字符,如果存储的字符数N少于M,
#实际占用的存储空间是L+1个字节,其中L代表的N个字符占用的字节数,M可以省略不写
#char 和 varchar的区别
#char是固定长度,每个值占用相同的字符数,不够的位数mysql会用空格在右边补全
#varchar是一种可变长度类型,每个值占用的空间是它里面存储的字符对应的字节数+1
#因为varchar需要计算每一个值的实际空间,所以要多一个字节来计算。
#值 CHAR(4) 需要存储 VARCAHR(4) 需要存储
#'' ' ' 4个字节 '' 1个字节
#'ab' 'ab ' 4个字节 'ab' 3个字节
#'abcd' 'abcd' 4个字节 'abcd' 5个字节
#如果数据长度相同就选择char类型,比如手机号、身份证号等等
#如果数据长度不一致,就选择varchar类型,比如姓名、地址等等
#因为这样能更加节约空间
#char的执行效率比varchar高
日期 / 时间类型:
#日期/时间类型
#日期时间类型 DATETIME
#格式"YYYY-MM-DD hh:mm:ss"
#date:日期类型
#time:时间类型
#datetime:日期时间类型
DROP TABLE student;
CREATE TABLE student(stu_name VARCHAR(5), age INT, join_time DATETIME);
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
stu_name VARCHAR(10) NOT NULL,
age INT DEFAULT 18,
join_time DATETIME DEFAULT '2024-08-06 12:00:00'
);
SQL语言总结
SQL语言分为三类:
DML(数据库操作语言) DDL(数据库描述语言) DCL(数据库控制语言)
DML(数据库操作语言)
DML:增删改查:
INSERT INTO -向数据库中插入数据
DELETE FROM -从数据库中删除数据
UPDATE SET -修改数据库中的数据
SELECT FROM -从数据库中查询数据
DDL(数据库描述语言)
CREATE DATABASE -创建数据库
DROP DATABASE -删除数据库
USE DATABASE -切换数据库
ALTER DATABASE -修改数据库
CREATE TABLE -创建表
ALTER TABLE -修改表
DROP TABLE -删除表
CREATE INDEX -创建索引
DROP INDEX -删除索引
TRUNCATE TABLE -清空表
DCL(数据库控制语言)
GRANT -授权