一、基础知识
1、数据库类型:
- 关系型数据库:
关系型数据库模型是将复杂的数据结构用较为简单的二元关系(二维表)来表示。
例如:Oracle、DB2、SQL Server、MySQL等。 - 非关系型数据库(NOSQL):
NOSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
例如:Memcached、MongoDB等。
2、MySQL优点:
- 开放源代码
- 跨平台
- 轻量级
- 成本低
3、基本操作:
- 创建数据库:create database 数据库名;
- 显示所有数据库:show databases;
- 切换数据库:use 数据库名;
- 显示数据库下的表:show tables;
- 删除数据库:drop database 数据库名;
4、SQL语言分类:
- 数据查询语言(DQL):select
- 数据操作语言(DML):
DML主要用于对数据库中的数据进行增加(insert)、修改(update)和删除(delete)的操作 - 数据定义语言(DDL):
DDL主要用针对是数据库对象(数据库、表、索引、视图、触发器、存储过程、函数)进行创建(create)、修改(alter)和删除(delete)操作 - 数据控制语言(DCL):
DCL用来授予或回收访问数据库的权限:GRANT:授予用户某种权限,REVOKE:回收授予的某种权限 - 事务控制语言(TCL):
TCL用于数据库的事务管理。其主要包括:
1) START TRANSACTION:开启事务
2) COMMIT:提交事务
3) ROLLBACK:回滚事务
4) SET TRANSACTION:设置事务的属性
二、DDL和DML
1、创建数据库表
- 建立一张用来存储学生信息的表
- 字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息
- 学号是主键 = 不能为空 + 唯一
- 姓名不能为空
- 性别默认值是男
- Email唯一
create table student(
sno int(10) primary key not null unique,
sname varchar(10) not null,
sex varchar(1) defualt '男',
semail varchar(20) unique
);
2、数据库表列类型
- 整数类型:int/integer、bigint
- 浮点类型:float、double
- 字符串类型:char、varchar
- 日期和时间类型:date(年-月-日)/datetime(年-月-日 时:分:秒)
3、数据的增删改查
- 增加:insert into 表名 values(值,值,...),(值,值,...)
insert into 表名 (字段名,字段名,...) values(对应的值,...) - 修改:update 表名 set 字段名=要改成的值,... where 字段名=要修改的值
- 删除:delete from 表名 where 字段名=值
- 查询:select * from 表名
4、修改、删除数据库表结构
- 添加:alter table 表名 add 字段名 类型(长度) first/after(字段名)
- 删除:alter table 表名 drop 字段名
- 修改:
- 列名不变:alter table 表名 modify 字段名 类型(长度)
- 列名该表:alter table 表名 change 旧字段名 新字段名 类型(长度)
- 修改表名:
- alter table 表名 rename to 新表名
- alter table 新表名 rename 旧表明
- 查看表结构:desc 表名
- 删除数据库表:drop table 表名
5、表的完整性约束
- 主键约束:primary key
- 非空约束:not null
- 自增约束:auto increment
- 唯一约束:unique
- 检查约束:check
- 默认值约束:default
- 外键约束: foreign key
具体操作:
- 添加约束:
- alter table 表名 modify 字段名 类型(长度) 约束条件
- 在建表语句中添加:constraint 约束名 约束条件 (字段名)
- 删除约束:
- alter table 表名 modify 字段名 类型(长度)
- alter table 表名 drop 约束条件
- alter table 表名 drop index 约束名
6、外键约束
- 添加外键约束:
- 建表语句中添加:constraint 约束名 foreign key (字段名) references 另一张表名 (字段名)
- alter table 表名 add constraint 约束名 foreign key (字段名) references 另一张表名 (字段名)
on delete set null on update cascade
- 删除外键约束:alter table 表名 drop foreign key 约束名
7、更多操作
- 快速创建数据库表 结构和数据完全相同:create table 表名 as select * from table 表名
- 快速创建数据库表 只要结构相同,不要数据 :create table 表名 as select * from table 表名 where 1=2
- 快速创建数据库表,只要部分结构:create table 表名 as select 字段名,字段名,... from table 表名
- 删除所有数据:
- delete from 表名
- truncate table 表名:效率高,再次添加数据时,逐渐自增从1开始
8、单表查询
- 最简单的SQL语句
- 所有列:select * from 表名
- 指定列:select 字段名,字段名 from 表名
- 算术表达式:select 字段名+(-、*、/)数字 from 表名
- 使用别名:select 字段名 别名 from 表名
- 去重:
- select distinct 字段名 from 表名
- 对组合结果去重:select distinct 字段名,字段名 from表名
- 排序:select 字段名 from 表名 order by 字段名 desc ,字段名