数据库:DataBase简称(DB)
存储数据的仓库,数据是有组织的进行存储
数据库管理系统:DataBase Management System简称(DBMS)
操纵和管理数据库的大型软件
SQL :Structured Query Language简称(SQL)
操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准
数据库分为两大类
1.关系型数据库
采用了关系模型来组织数据的数据库
关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
2.非关系型数据库
mysql通用语法
1.SQL语句可以单行或多行书写,以分号结尾
2.SQL语句可以使用空格/缩进来增强语句的可读性
3.MSQL数据库的SQL语句不区分大小写,关键字建议用大写
4.注释:
1.单行注释:--注释内容或者#注释内容(MySQL特有)
2.多行注释:/*注释内容*/
SQL分类
分类 说明
DDL 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML 数据操作语言,用来对数据库表中的数据进行增删改
DQL 数据查询语言,用来查询数据库中的记录
DCL 数据控制语言,用来创建数据库用户,控制数据库的访问权限
DDL-数据库操作
1.查询
查询所有数据库 show databases;
查询当前数据库 select database();
2.创建
create database [ if not exists]数据库名「defaultcharset字符集][collate排序规则];
3.删除
drop database [ if exists]数据库名;
4.使用
use数据库名;
DML -操作表-数据类型
5.添加字段
alter table 表名 add 字段名 类型 (长度) comment’注释‘
6.修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
7.修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)comment’注释‘
8.修改表名
alter table 表名 renameto 新表名
9.删除表名
drop table 表名
Mysql中的数据类型有三类:数值类型,字符串类型,日期时间类型
数值类型
字符串类型
日期时间类型
DML语言
添加 字段
insert into 表名 (字段1,字段2)values (值1,值2)
insert into `subject`(ClassHour,SubjectName,GradeID) values(20,".net",2),(30,"php",2)
修改 数据
update 表名 set 列1 = 值1[where]
update grade set GradeName = "S3" where GradeId = 3;
-- 将java课程课时+10 并切修改时间为当前时间
update `subject` set ClassHour = ClassHour+10,SubjectAddTime = now() where SubjectName = "java";
删除 delete 语法
delete from 表名 [where条件]
delete from `subject` where SubjectNo = 7;
truncate命令
用于完全清空表数据,但表结构、索引、约束等不变
truncate table_name;
truncate 与delete的区别
相同点
都能删除数据,不删除表结构,truncate速度更快
不同点
1.使用truncate table 重新设置 auto_incremeent(自动递增)计数器
2.使用truncate table 不会对事务有影响
DQL语句(查询)
查询表中所有的数据列结果
select * from 表名
查询指定结果数据列
select 列1,列2,from 表名
如区分连接查询时两个表有同名的字段
select 表名.列名 from 表名,result
AS子句作用
1.可以给数据列取一个新的别名
ELECT StudentNo AS “学号” FROM student;
2.可以给表取一个新的别名
3.可把经计算或总结的结果用另外一个新名称来代替
distinct 关键字
作用:
去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同)只返回一条
语法:
select distinct 字段1,字段2.....from表名
#查询成绩表中的所包含的课程ID
SELECT DISTINCT SubjectNo FROM result;
where 条件语句
比较操作符
between and范围查询
1. 范围检索
select 字段1,字段2....from表名 where 字段x
between 值1 and 值2
2.等同于>=和<=联合使用
#查询课程表中课时在110和120之间的所有记录
SELECT * FROM subject WHERE ClassHour BETWEEN 110 AND 120;
等同于:
SELECT * FROM subject WHERE ClassHour >= 110 AND ClassHour <=120;
link 模糊查询
在where子句中,使用link关键字 进型模糊查寻
#查询包含“数学”的所有课程
SELECT * FROM subject WHERE SubjectName LIKE "%数学%";
#查询所有姓名为“李**”三个字的学生信息
SELECT StudentNo,StudentName FROM student
WHERE StudentName LIKE "李__";
in范围查询
SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…)
SELECT * FROM subject where ClassHour = 100 OR ClassHour =110 OR ClassHour = 120; #普通处理方式
SELECT * FROM subject where ClassHour IN ( 100, 110,120 );
#使用IN进行查询方式,更为简洁,效率更高
null 空值条件查询
多表连接查询分为:
- 内连接(inner join)
- 外连接: 1.左连接(LEFT JOIN) 2.右连接(RIGHT JOIN)
内连接(inner join )
说明 :
两张表连接,两张表字段完全匹配才返回数据语法:
SELECT 列名 from a表 inner join b表 on a表.连接字段=b表.连接字段 [WHERE tiaoj]
如 学生表与年级表
学生表数据:
学生1 年级1
学生2 年级2
年级表数据:
年级1
select * from student a INNER JOIN grade b on a.GradeId=b.GradeID;
结果:
显示
左连接(LEFT JOIN)
右连接(RIGHT JOIN)
子查询 的种类
标量子查询:子查询返回的结果是单个值(数字,字符串,日期)
列子查询:返回的结果是一列或者多行,常用操作符 in , not in, any, some,all
in:指定的集合范围之内,多选一。
not in : 不在指定的集合范围之内
any: 子查询返回列表中,有任意一个满足即可
some: 子查询返回列表中,有任意一个满足即可
all: 子查询返回列表中,都要满足
行子查询 :子查询返回的结果是一行(可以是多列),常用操作符:= ,<>, in ,not,in