1.什么是数据库?
DataBase(简称DB),能够大量存储和共享数据的集合,是个仓库
2.什么是DBMS?
Database Managerment System 数据库管理系统
数据管理软件,科学组织、存储、维护、获取数据
3.关系型数据库
例如:mysql,业务数据库,时效性高,数据同步操作安全
4.结构化查询语句
(1)DDL 数据定义语言:建库、建表(CREATE,DROP,ALTER)
- 说明:库和表之间的关系:库是由一些列表所组成的(一组数据表的集合)
- 在mysql中,字段内容是区分大小写的
- 使用反引号:在数字键1左面,不是单引号(例:SELECT
EDP
FROMDEPT
WHERE…)
(2)DML 数据操作语言:插入、修改、删除(INSERT,UPDATE,DELETE)
(3)DQL 数据查询语言:查询(SELECT)
(4)DCL 数据控制语言:管理数据库,包括权限和数据更改(GRANT,COMMIT,ROLLBACK)
5.命令行操作数据库
(1)建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名;
-
表列类型设置
数值,字符串,日期和时间,NULL值 -
属性
UNSIGNED:无符号的,不能为负数
ZEROFILL:0填充(数字1-9,如果增长到10,之前的1-9前自动补0)
AUTO_INCREMENT:自增长,通常设置主键,为整数,默认步长是1
NULL和NOT NULL:当前列是否为空
DEFAULT默认值:给该列指定默认值,可以和not null配合使用 -
表类型(数据引擎)
MYISAM:可以归档使用,存储不需要大量修改的数据,作为数据增量引擎使用(支持全文索引)
INNODB(默认):针对一些经常要修改的数据,且操作量大,主要是为了保证数据的安全,不能直接做迁移 -
表字符集
一般现在都是utf-8
(2)删除数据库:DROP DATABASE[IF EXISTS] 数据库名;
(3)查看数据库:SHOW DATABASES;
(4)使用数据库:USE 数据库名
(5)创建表:CREATE TABLE [ IF NOT EXISTS ] 表名
(6)修改表:ALERT TABLE 旧表 RENAME AS 新表
(7)添加字段:ALERT TABLE 表名 ADD 字段 列类型[属性]
(8)修改字段:ALERT TABLE 表名 MODIFY 字段 列类型[属性]
ALERT TABLE 表名 CHANGE 旧字段 新字段 列类型[属性]
(9)删除字段:ALERT TABLE 表名 DROP 字段
(10)删除数据表:DROP TABLE[IF EXISTS] 表名
6.DML(数据操作语言)
(1)INSERT:添加数据语句
INSERT INTO 表名 (字段) VALUES (值)
可同时插入多条数据,values 后用英文逗号隔开
(2)UPDATE:修改数据语句
UPDATE 表名 SET 修改的字段=修改的值 [ WHERE condition ];
(3)DELETE:删除数据语句
DELETE FROM 表名 [ WHERE condition ];
不加条件就是删除整张表
7.DQL(数据查询语言)
(1)查询所有语句
SELECT * FROM student;(效率低不推荐)
(2)查询指定数据列
SELECT id,name FROM student;
(3)设置别名 AS
SELECT StudentNo AS “学号” FROM student;
AS可以省略
(4)去重 DISTINCT
SELECT DISTINCT StudentNo(字段名) FROM student(表名);
所有的数值都相同才能去重
(5)使用表达式
例如:SELECT 100*3;
(6)WHERE关键字
用于检索数据表中符合条件的记录
逻辑操作符:AND或&&,OR或||,XOR或^,NOT或!
比较操作符:IS NULL,IS NOT NULL,BETWEEN,LIKE,IN
(7)联合查询
内连接 ( inner join=join)
SELECT SubjectName,GradeName FROM subject INNER JOIN grade ON subject.GradeID= grade.GradeID;
两张表都有的才会显示,是交集
外连接 ( out join ):
左连接(LEFT JOIN)
SELECT 字段1,字段2,… FROM table_1
LEFT [ OUTER ] JOIN table_2 ON table_1.字段x = table_2.字段y;
右连接 ( RIGHT JOIN)
(8)排序 ORDER BY
ASC 升序
DECS 倒序
SELECT * from emp ORDER BY sal ASC
SELECT * from emp ORDER BY sal DESC
(9)分页 LIMIT
LIMIT index,size 从哪里开始查几条 计算index: (pagenum-1) *size
SELECT * from emp LIMIT 0,2;
(10)分组 GROUP BY 和 HAVING过滤
聚合函数
COUNT() ,SUM() ,AVG() ,MAX(),MIN()
分组后的结果集,计算的应当是聚合后的结果
注意:
执行顺序:
先where查询 , 然后分组 ,然后结果集 ,然后having , order by , limit
(11)子查询
在查询语句中的WHERE条件子句中,又嵌套了另外一个查询语句
当单条件的时候(> < >= <= != = like),必须保证一行一列,即只有一个值
当条件为多个的时候即,一列多行,可以和in一起使用
SELECT * FROM emp WHERE deptno != 10
AND sal IN (SELECT sal FROM emp WHERE deptno = 10);
(12)临时视图,临时表
临时表必须有别名
临时表的字段需要起别名