一、数据库概述
1、数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。
2、数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。
3、数据库软件应该为数据库管理系统:数据库是通过数据库管理系统创建和操作的。
4、数据库:存储、维护和管理数据的集合。
二、Sql的分类
1、DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
2、DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
3、DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
4、DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
三、 DDL:操作数据库、表、列等
使用的关键字:CREATE、 ALTER、 DROP
1、操作数据库
(1)、创建:
Create database mydb1;
Create database mydb2 character set gbk;
Create database mydb3 character set gbk COLLATE gbk_chinese_ci;
(2)、查询:
Show databases: 查看当前数据库服务器中的所有数据
Show create database mydb2:查看前面创建的mydb2数据库的定义信息
Drop database mydb3:删除前面创建的mydb3数据库
(3)、修改:
alter database mydb2 character set utf8:查看服务器中的数据库,并把mydb2的字符集修改为utf8;
(4)、删除:
Drop database mydb3;
(5)、其他:
Select database():查看当前使用的数据库
Use mydb2:切换数据库
2、操作数据表
(1)、语法:
create table 表名(字段1 字段类型,字段2 字段类型,...字段n 字段类型);
(2)、常用数据类型:
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10) 'aaa ' 占10位
varchar:可变长度字符串类型; varchar(10) 'aaa' 占3为
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)、其他:
SHOW TABLES:当前数据库中的所有表
DESC employee:查看表的字段信息
SHOW CREATE TABLE user:查看表格的创建细节
DROP TABLE user :删除表
四、DML操作(重要)
DML是对表中的数据进行增、删、改的操作
1、插入操作:INSERT
INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);
2、修改操作:update
UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值
3、删除操作:delete
DELETE 表名 【WHERE 列名=值】
注意:DELETE 删除表中的数据,表结构还在;删除后的数据可以找回。TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。删除的数据不能找回。执行速度比DELETE快。
五、DQL操作
DQL数据查询语言 (重要),数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。查询返回的结果集是一张虚拟表。
1、基础查询
1.1 查询所有列:SELECT * FROM stu;
1.2 查询指定列:SELECT sid, sname, age FROM stu;
2、条件查询
条件查询就是在查询时给出WHERE子句
3、模糊查询
_ 任意一个字母; %:任意0~n个字母
4、字段控制查询
4.1 去除重复记录:DISTINCT
4.2 给列名添加别名:AS
5、排序
ORDER BY 字段名 ASC;升序
ORDER BY 字段名 DESC;降序
6、聚合函数
sum avg max min count
7、分组查询
注: 凡和聚合函数同时出现的列名,则一定要写在group by 之后
注:having与where的区别:
1.having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
2.having后面可以使用分组函数(统计函数), where后面不可以使用分组函数。
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
8、limit
LIMIT用来限定查询结果的起始行,以及总行数。
六、数据库的完整性
1、实体完整性
实体:即表中的一行(一条记录)代表一个实体(entity)
实体完整性的作用:标识每一行数据不重复。
约束类型: 主键约束(primary key) 唯一约束(unique) 自动增长列(auto_increment)
2、域完整性
域完整性的作用:限制此单元格的数据正确,不对照此列的其它单元格比较域代表当前单元格
域完整性约束:数据类型 非空约束(not null) 默认值约束(default)
check约束(mysql不支持)check(sex='男' or sex='女')
3、引用完整性(参照完整性)
外键约束:FOREIGN KEY
4、表与表之间的关系
一对一,一对多
七、多表查询(非常非常重要)
1、合并结果集
2、连接查询
3、自然连接
4、子查询
5、自查询
八、mysql数据库的备份与恢复
1、生产SQL脚本——导出数据
在控制台使用mysqldump命令可以用来生成指定数据库的脚本文本,但要注意,脚本文本中只包含数据库的内容,而不会存在创建数据库的语句!所以在恢复数据时,还需要自已手动创建一个数据库之后再去恢复数据。
mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径 |
注意,mysqldump命令是在Windows控制台下执行,无需登录mysql!!!
2、执行sql脚本——恢复数据
前提:必须先创建数据库名
第一种方式:msyql>SOURCE C:\mydb1.sql 需要登录mysql
第二种方式:C:>mysql -uroot -p123 mydb1<c:\mydb1.sql 不需要登录mysql