1.服务器端与客户端,什么是数据库
数据库:管理数据的仓库
服务器端:正在存数据的地方
客户端:链接服务器,操作服务器中的数据CRUD
结构:
数据库---->表------>数据(有行有列)
DML:数据库操纵语言
DDL:数据库定义语言
DCL:数据库控制语言
DQL:数据库查询语言
SQL:结构化查询语言
2.数据库常用操作
show databases ;展示所有数据库
create database cgb2110 default character set utf8 ;创建数据库
drop database cgb2110;删除数据库
use cgb2110;使用数据库
show tables;展示所有表
create table 表名 (字段1(名称 类型(n),字段2);创建表
3.表的常见操作
alter table 表名 add column 字段1;添加列
insert into 表名 values(对应字段的值);插入
update 表名 set 字段=??;更新修改对应字段的值
delete from 表名;删除表里面的数据
4.字符
char:长度固定,可能造成空间浪费,空间空格填充
varchar:长度可变,节省空间,空间给其他字符使用
5.字段约束
set names gbk;创建表时解决中文乱码
unique;唯一约束,字段的值必须唯一不能重复
not null;非空约束,约束字段的值不能为null
primary key auto-increment;主键约束:唯一且不为空,且自增
6.条件查询
1.distinct;去除重复的记录行
SELECT loc FROM dept;
SELECT DISTINCT loc FROM dept;
2.where:注意where中不能使用列别名!!
3.like:模糊查询%
7.delete drop 和truncate之间的区别?
drop删除数据库或表,数据和结构定义
delete truncate 只删除表的数据
delete可以指定where条件,删除满足条件的记录,tuncate删除所有记录
对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数
8.什么是事物?
单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全不执行,用来保证多条sql,要么全成功,要么全失败。
事物的四个特性:
原子性:一个事物中的所有操作,要么完全执行,要么完全不执行。
持久性:事物处理结束后,对数据的修改是永久的。
一致性:写入的资料必须符合预设规则,事物开始之前和结束以后,数据库的完整性没有被破环
隔离性:数据库允许多个并发事物同时对数据进行修改和读写。
隔离级别:
读未提交:安全性最差,可能发生并行数据问题,性能最好
读提交:Oracle的默认隔离级别
可重复读:Mysql的默认隔离级别,安全性好,性能一般
串行化:表级锁,读写都加锁,安全性较高,效率低,不能并发
9.多表联查
1.笛卡尔积
select * from 表名1,表名2 where 表名1.字段a=表名2.字段a
2.链接查询join
多表之间用join连接,用on来描述两张表的关系
left join 左连接:取到左表所有和右表满足条件的,不满足的用null填充
小表驱动大表:左表简单,右表复杂
1select * from 2dept left join 3emp on 4dept.deptno=emp.deptno
高效: 2 4 3 1
3.子查询:嵌套查询
select 要查询的内容 from A where a=(select a from B where ---条件)
如果子查询返回多行结果,此时需要用in
10.SQL的执行顺序
(1) FROM [left_table] 选择表
(2) ON <join_condition> 链接条件
(3) <join_type> JOIN <right_table> 链接
(4) WHERE <where_condition> 条件过滤
(5) GROUP BY <group_by_list> 分组
(6) AGG_FUNC(column or expression),... 聚合
(7) HAVING <having_condition> 分组过滤
(8) SELECT (9) DISTINCT column,... 选择字段、去重
(9) ORDER BY <order_by_list> 排序
(10) LIMIT count OFFSET count; 分页