MySQL--学习笔记
1:连接mysql的三种方式:
1.通过mysql客户端连接服务器;
2.通过cmd命令行的形式;
3.通过第三方工具,例如navicat。
2:数据库只是框架,数据表才是实质性内容。
3.含有业务逻辑意义的字段不适合设为主键。
4:唯一约束与主键约束的区别?
与主键约束相比,唯一约束也用于确保列中不存在重复值,但其列值可以为空(NULL)
主键用于识别每一条记录,唯一约束用于保证某条字段的唯一性。
主键定义主键约束,索引定义唯一约束(unique唯一的)
域完整性由非空约束和默认值约束实现
实体完整性由主键约束和唯一约束实现。
5:参照完整性:由外键与另外一张表的主键相连。
四个基本术语:主表,从表,参照列,被参照列
主表:被参照的表。
6:DDL和DML(DDL是针对表结构,DML是针对数据)
DML(Data Manipulation Language)数据操作语言-数据库的基本操作,SQL中处理数据等操作统称为数据操纵语言,简而言之就是实现了基本的“增删改查”操作。包括的关键字有:select、update、delete、insert、merge
DDL(Data Definition Language)数据定义语言-用于定义和管理 SQL 数据库中的所有对象的语言,对数据库中的某些对象(例如,database,table)进行管理。包括的关键字有:
create、alter、drop、truncate、comment、grant、revoke
1.DML操作是可以手动控制事务的开启、提交和回滚的。
2.DDL操作是隐性提交的,不能rollback
7:删除被从表引用的主表记录时需要设置为set null,删除时从表关联的记录为null,如果选择为cascade则会级联删除。
8:distinct关键字,选择列可以为表达式:删除重复项。
判断字段值是否为空只能用 is null 而不能用 = (有字符的意思),
9:运算符
算数运算符,比较运算符,逻辑运算符(or and not)
10:定制显示查询结果的关键字
order by limit:num_start,num(也可以省略num_start)
11:排序可以按照多列排序,即在优先列相等的情况下对第二列排序
12:模糊查询(like)---区间,范围查询。
通配符%可以匹配0或多个任意字符, _ 只匹配一个字符。
运算符:in 和between and
13:mysql函数
1.数学函数:ceil ,floor,随机函数rand(),round函数
2.控制流函数:if,ifnull
3.字符函数:
计算字符串长度:char_length(str)
字符串的替换函数:
insert(str,pos,len,new_str)一次只能替换一次,
replace(str,from_str,to_str):一次可以替换多个相同的字符串
substr(str,pos,len):截取子字符串。
4.日期时间函数
curdate:当前日期
now:当前时间
格式化时间:date format
5.系统信息函数和加密函数
version():显示版本信息
database()
user()
charset()
加密:md5(str)
6:聚合函数(聚合函数一般与group by联合使用,聚合函数会忽略空值)
求和:SUM(column)
AVG(column)
MAX(column)
COUNT(*/column):统计column不为空的数量
group by
order by
使用where可以过滤数据
7:多字段分组和having字句
where与having的区别:
都是过滤,where在分组前过滤,having在group by分组后过滤
8.分组查询和聚合查询一般需要联合使用
14:内连接:(只出现满足匹配条件的记录) 将两张表匹配相同的部分从新组成新表。
语法:from 表1 [inner] join 表2 on(连接条件).....表1.字段1 = 表2.字段2 [where 条件表达式] 字段1和字段2分别为相连两表的主键和外键
笛卡尔集:交叉连接,叉乘 cross join
join:是完全匹配操作
多表连接采用两两连接的方式
简单多表连接查询的方法:在from子句中直接列出所有要连接的表,不同的表用逗号隔开,然后在where子句中指定连接条件
15:外连接(不满足连接条件的记录出现在查询结果中)
左外连接:(from ... left join ...on...)结果集包括左表的所有记录和右表中满足连接条件的记录,结果集中那些不符合连接条件,来源于右表的列值为null
右外连接
16:设计数据库的重点是转化为物理设计模型。
17:MYSQL编程
1.(set赋值)变量赋值的两种方法
set @ 变量 = ' '
1.2:显示变量结果:select @变量
2.(select赋值)使用select用法只对一个变量赋值:select 表达式 from 表 into @变量
使用select对多个变量赋值:select 表达式1 into @变量1 , 表达式2 into @变量2 from 表
3.重置命令标识符(delimiter $$,将分号更改为$$)
概念:每天mysql表达式都使用 '; '作为结束标识,由于begin-end语句块中的多条mysql表达式密不可分,避免这些表达式被拆开,需要重置命令结束标识符。
将几个独立语句作为一个整体来执行
18:游标本质是一种能从select结果集中每次提取一条记录的机制,因此游标与select语句息息相关;
19:DB与DBMS,SQL的区别
db:database,数据库,实际在硬盘上以文件的形式存在
dbms:数据库管理系统,常见的有mysql,Oracle,mongodb等等。
sql:结构化查询语言,标准的的sql适合于所有的数据库产品;sql语句的编译有dbms完成。
dbms负责执行sql语句,通过执行sql语句来操作db中的数据。
20.事务
事务是由用户所定义的完整的工作单元,一个事务内的所有语句作为一个整体来执行。表现特征为:全部执行成功,或者全部不执行。
21.in与between and的区别
| BETWEEN … AND … | Number is within range of two values (inclusive) 在两个数之间 | col_name BETWEEN 1.5 AND 10.5 |
| IN (…) | Number exists in a list 在一个列表 | col_name IN (2, 4, 6) |
22.
| LIKE | Case insensitive exact string comparison 没有用通配符等价于 = | col_name LIKE "ABC" |
23.order by 排序
DISTINCT 关键字来指定某个或某些属性列唯一返回,主要目的是去重。
浙公网安备 33010602011771号