1.1 简介
数据库(Data Base,简称DB):长期保存在计算机的存储设备上,数据按照一定的规则组织起来,可以被各种用户、应用共享的数据集合。
数据库管理系统(Database Management System, 简称DBMS):指的是一种用来管理和操作数据的大型软件,用于建立、使用、维护数据,对数据库进行统一的管理和控制,以保证数据的完整性和安全性。用户可以通过数据库管理系统访问数据库中的数据。
数据库:存储、维护和管理数据的集合。
数据库管理系统:数据库软件,数据库是通过这些软件进行创建和操作的。
2.1 DDL语言的学习
2.1.1 介绍
DDL(Data definition Language):数据定义语言,用来定义数据库中相关的对象的结构
-
对象: 指的就是库,表
-
结构:库的创建,删除,修改,更名 以及, 表创建,表删除,表修改(列名修改,添加新列,删除新列)
-
对应的关键字:create、alter、drop 其后都跟着对象的关键字,比如 database table
2.1.2 针对于库的DDL操作
本质:就是对DB对应的文件夹进行操作。
1)创建数据库
创建一个库 create database 库名; 创建一个库,同时指定编码集 create database 库名 character set 编码集
查看一下C:/ProgramData/MySQL/MySQL server 8.0/Data下是否多出了几个文件夹
2)查看数据库:
# 查看当前数据库服务器中的所有的数据库 show databases; # 查看创建数据库mydb1定义的信息 show create database 库名;
3)切库操作(使用哪一个库)
# 切换当前使用的数据库 use 库名; # 查询当前正在使用的数据库 select database();
4)修改数据库
# 将数据库mydb1的字符集修改为GBK alter database 库名 character set 新编码集;
5)删除库
drop database 库名;
2.1.3 针对于表的DDL操作
1)表的概念
表:数据在数据库中的存储是以表的形式存在的。一个表中有若干个字段,将数据按照这些字段进行存储。
1、数据表(table),是关系型数据库的基本存储结构。一个关系型数据库是由多个表组成的。 2、数据表是二维的,它由纵向的列和横向的行组成。 3、数据表的行(Row)是横排数据,也被称之为记录(Recond)。 4、数据表的列(Column)是竖排数据,也被称之为字段(Field)。 5、表与表之间也可能存在着关系。
表与表之间的关系
1. 一对一 在实际开发中应用不多。因为一对一的关系,完全可以放到一个表中 2. 一对多 一对多建表原则:在多的一方,创建一个字段,作为外键指向另外那一方的主键。 3. 多对多 多对多的建表原则:需要创建第三张表,在中间表中至少需要有两个字段。这两个字段分别作为外键指向各自一方的主键。
2)数据类型
每一个字段在设计表的时候都要去指定类型:
int:整型 double:浮点型,例如double(5,2):表示最多有5位,其中必须有两位是小数,即最大值是 999.99 char:固定长度的字符串,例如char(5) : 'aa' 占5位 varchar:可变长度的字符串,例如varchar(5):'aa' 占2位 text:字符串类型 blob:字节类型 date:日期类型,格式是:yyyy-MM-dd time:时间类型,格式为:hh:mm:ss timestamp:时间戳类型,yyyy-MM-dd hh:mm:ss,会自动赋值 datetime:时间类型,yyyy-MM-dd hh:mm:ss
3)DDL操作表
# DDL操作(表) # 创建表格 CREATE TABLE t_users(name varchar(50), age INT, gender VARCHAR(10), height INT, weight INT); # 删除表格 DROP TABLE t_users; # 查看当前数据库中所有的表 SHOW TABLES; # 查看创建一个表的信息 SHOW CREATE TABLE t_users; # 查看一张表的字段信息 DESC t_users; # 给一张表添加一个字段 ALTER TABLE t_users ADD score DOUBLE(5,2); # 修改一张表的字段类型 ALTER TABLE t_users MODIFY score INT; # 修改一张表的字段名 ALTER TABLE t_users CHANGE name uname VARCHAR(50); # 修改一张表的字符集 ALTER TABLE t_users CHARACTER SET GBK; # 删除一张表中的字段 ALTER TABLE t_users DROP score;
2.2 DML操作
DML(Data Manipulation Language):数据操纵语言,指的是对表中的数据(记录)进行增、删、改的操作。不要和DDL搞混了。
关键字:insert into 、update、delete
注意事项:
-
在SQL中,字符串类型和日期类型需要用单引号括起来
-
空值操作: 在条件中使用 is null 或者is not null 。
2.2.1 增加数据
就是使用insert into 向表中添加记录,可以添加一条,也可以添加多条
添加一条的写法:
写法1: 给表中的所有字段赋值,从左到右,按照类型进行赋值,不能多,不能少 insert into tableName values (val1,val2,val3,...); 写法2: 指定某些字段赋值, 从左到右,按照类型进行赋值 insert into tableName (colName1,colName2,colName3,...) values (val1,val2,val3,...);
添加多条的写法:
写法1: 给表中的所有字段赋值,从左到右,按照类型进行赋值,不能多,不能少 insert into tableName values (val1,val2,val3,...),(val1,val2,val3,...),..,(val1,val2,val3,...); 写法2: 指定某些字段赋值, 从左到右,按照类型进行赋值 insert into tableName (colName1,colName2,colName3,...) values (val1,val2,val3,...),(val1,val2,val3,...),..,(val1,val2,val3,...);
练习:
表名: teacher 字段名及其类型 id int name varchar(10) age int gender char(1) salary double(6,2) subject varchar(10) hiredate date 表字符集: utf8; 插入数据: 1001 张三 23 男 2000 语文 2010-03-03 1002 李四 24 女 2000 数学 2010-03-04 1003 王五 23 女 2000 英语 2010-03-05 1004 赵六 25 男 2000 生物 2010-03-06
create table teacher( id int, name varchar(10), age int, gender char(1), salary double(6,2), subject varchar(10), hiredate date )default character set utf8; insert into teacher values (1001, '张三', 23, '男', 2000, '语文', '2010-03-03'), (1002, '李四', 24, '女', 2000, '数学', '2010-03-04'), (1003, '王五', 23, '女', 2000, '英语', '2010-03-05'), (1004, '赵六', 25, '男', 2000, '生物', '2010-03-06');
2.2.2 修改数据
关键字使用update,表示对表中的记录的部分字段进行更新操作。 可以使用where 子句用来进行条件筛选(过滤)
where的用法:
在进行数据的删除、修改、查询的时候,可以使用where对数据进行一个过滤。
= :相等比较(类似于java中的==)
!= <> : 表示不相等
> < >= <= : 大小比较
BETWEEN...AND... : 在xxx和xxx之间
IN(set) :在括号中所有值之间取
IS [not] NULL
AND、OR
==注意==:如果没有使用where子句进行过滤筛选,则是对表中的所有记录进行更新 (==要小心了==)
语法如下:
update tableName set colName1 = value1, colName2 = value2,...... [where conditions];
练习:
1. 修改所有人的工资为2500 update teacher set salary = 2500; 2. 将所有人的工资增加500 update teacher set salary=salary+500; 3. 修改年龄为23岁的教师的工资为5000,入职日期为'2010-10-10' update teacher set salary = 5000,hiredate = '2010-10-10' where age = 23; 4. 修改名字为张三的教师的入职日期为空,工资为空 update teacher set hiredate = null, salary = null where name = '张三'; 5. 将在'2010-10-10'之前入职的员工工资上调1000元 update teacher set salary = salary+1000 where hiredate < '2010-10-10'; 6. 将教语文、英语、生物的老师的年龄改为null update teacher set age = null where subject = '语文' or subject = '英语' or subject = '生物'; update teacher set age = null where subject in ('语文','英语','生物'); 7. 将没有课的老师工资下调1000元。 update teacher set salary = salary -1000 where subject is null;
2.2.3 删除数据
关键字是delete. 指的是删除表中的符合条件的所有记录(行数据)
注意: 如果不指定条件,表中的所有行都被删除了。
语法:
delete from tableName [where conditions];
练习:
1. 删除工资是4000,年龄不是null的教师信息 delete from teacher where salary = 4000 and age is not null; 2. 删除剩下的所有记录 delete from teacher;
delete 与 truncate的区别
delete删除表中的数据,表结构还在;删除的数据可以恢复。
truncate是直接将表DROP掉,然后再按照原来的结构重新创建一张表。数据不可恢复。
truncate删除效率比delete高。
truncate table tableName