数据库基础知识001

1、SQL分类

(1)DDL(Data Definition Language)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用关键字:create、drop、alter等。

(2)DML(Data Manipulation Language)语句:数据库操纵语句,用于增删改查数据库记录,并检查数据完整性。常用包括insert、delete、update、select等。

(3)DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要关键字包括grant、revoke等。

2、DDL与DML最大区别是DML只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。

3、创建数据库

mysql –u root –p

mysql 代表客户端命令,-u 后面跟连接的数据库用户,-p 表示需要输入密

CREATE DATABASE dbname

4、删除数据库

drop database dbname;

5、创建表

CREATE TABLE tablename (column_name_1 column_type_1 constraints, column_name_2 column_type_2 constraints , ……column_name_n column_type_n constraints)

因为 MySQL 的表名是以目录的形式存在于磁盘上,所以表名的字符可以用任何目录名允许
的字符。column_name 是列的名字,column_type 是列的数据类型,contraints 是这个列的约
束条件。

6、查看一下表的定义

DESC tablename

虽然 desc 命令可以查看表定义,但是其输出的信息还是不够全面,为了查看更全面的表定
义信息,有时就需要通过查看创建表的 SQL 语句来得到,可以使用如下命令实现:

mysql> show create table emp \G;

*************************** 1. row ***************************
Table: emp
Create Table: CREATE TABLE `emp` (
`ename` varchar(20) DEFAULT NULL,
`hiredate` date DEFAULT NULL,
`sal` decimal(10,2) DEFAULT NULL,
`deptno` int(2) DEFAULT NULL,
KEY `idx_emp_ename` (`ename`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.02 sec)
ERROR:
No query specified
mysql>

从上面表的创建 SQL 语句中,除了可以看到表定义以外,还可以看到表的 engine (存储引擎)
和 charset(字符集)等信息。“\G”选项的含义是使得记录能够按照字段竖着排列,对于内
容比较长的记录更易于显示。

7、删除表

DROP TABLE tablename

8、修改表

(1) 修改表类型

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]

例如,修改表 emp 的 ename 字段定义,将 varchar(10)改为 varchar(20):

alter table emp modify ename varchar(20);

(2) 增加表字段

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]

例如,表 emp 上新增加字段 age,类型为 int(3):

alter table emp add column age int(3);

(3)删除表字段,语法如下:

ALTER TABLE tablename DROP [COLUMN] col_name

例如,将字段 age 删除掉:

alter table emp drop column age;

(4)字段改名

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]

例如,将 age 改名为 age1,同时修改字段类型为 int(4):

alter table emp change age age1 int(4) ;

(5)修改字段排列顺序

前面介绍的的字段增加和修改语法(ADD/CNAHGE/MODIFY)中,都有一个可选项 first|after
column_name,这个选项可以用来修改字段在表中的位置,默认 ADD 增加的新字段是加在
表的最后位置,而 CHANGE/MODIFY 默认都不会改变字段的位置。
例如,将新增的字段 birth date 加在 ename 之后:

alter table emp add birth date after ename;

修改字段 age,将它放在最前面:

alter table emp modify age int(3) first;

(6)表改名

ALTER TABLE tablename RENAME [TO] new_tablename

例如,将表 emp 改名为 emp1

alter table emp rename emp1;

9、DML 语句

DML 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、

删除(delete)和查询(select),是开发人员日常使用最频繁的操作。下面将依次对它们进
行介绍。

(1)插入记录

INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn);

例如,向表 emp 中插入以下记录:ename 为 zzx1,hiredate 为 2000-01-01,sal 为 2000,deptno
为 1,命令执行如下:

mysql> insert into emp (ename,hiredate,sal,deptno) values(‘zzx1‘,‘2000-01-01‘,‘2000‘,1);

(2)更新记录

UPDATE tablename SET field1=value1,field2.=value2,……fieldn=valuen [WHERE CONDITION]

例如,将表 emp 中 ename 为“lisa”的薪水(sal)从 3000 更改为 4000:

update emp set sal=4000 where ename=‘lisa‘;

在 MySQL 中,update 命令可以同时更新多个表中数据,语法如下:

UPDATE t1,t2…tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]

(3) 删除记录

DELETE FROM tablename [WHERE CONDITION]

(4)查询记录

SELECT * FROM tablename [WHERE CONDITION]

(a)查询不重复的记录

有时需要将表中的记录去掉重复后显示出来,可以用 distinct 关键字来实现:

select distinct deptno from emp;

(b)条件查询

(c)排序和限制

用关键字 ORDER BY 来实现,语法如下:

SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2
[DESC|ASC],……fieldn [DESC|ASC]]

DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序
排列,如果不写此关键字默认是升序排列。ORDER BY 后面可以跟多个不同的排序字段,并
且每个排序字段可以有不同的排序顺序。
例如,把 emp 表中的记录按照工资高低进行显示:

select * from emp order by sal;

对于排序后的记录,如果希望只显示一部分,而不是全部,这时,就可以使用 LIMIT 关键字
来实现,LIMIT 的语法如下:
SELECT ……[LIMIT offset_start,row_count]

其中 offset_start 表示记录的起始偏移量,row_count 表示显示的行数。

例如,显示 emp 表中按照 sal 排序后的前 3 条记录:

select * from emp order by sal limit 3;

如果要显示 emp 表中按照 sal 排序后从第二条记录开始,显示 3 条记录:

select * from emp order by sal limit 1,3;

limit 经常和 order by 一起配合使用来进行记录的分页显示。注意:limit 属于 MySQL 扩展 SQL92 后的语法,在其他数据库上并不能通用。

(d)聚合

很多情况下,我们需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人

数,这个时就要用到 SQL 的聚合操作。
聚合操作的语法如下:
SELECT [field1,field2,……fieldn] fun_name
FROM tablename
[WHERE where_contition]
[GROUP BY field1,field2,……fieldn
[WITH ROLLUP]]
[HAVING where_contition]
对其参数进行以下说明。
? fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum(求和)、count(*)(记
录数)、max(最大值)、min(最小值)。
? GROUP BY 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门
就应该写在 group by 后面。
? WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
? HAVING 关键字表示对分类后的结果再进行条件的过滤。

注意:having 和 where 的区别在于 having 是对聚合后的结果进行条件的过滤,而 where 是在聚
合前就对记录进行过滤,如果逻辑允许,我们尽可能用 where 先过滤记录,这样因为结果
集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用 having 进行再过滤。

例如,要 emp 表中统计公司的总人数:

select count(1) from emp;

在此基础上,要统计各个部门的人数:

select deptno,count(1) from emp group by deptno;

更细一些,既要统计各部门人数,又要统计总人数:

select deptno,count(1) from emp group by deptno with rollup;

统计人数大于 1 人的部门:

select deptno,count(1) from emp group by deptno having count(1)>1;

最后统计公司所有员工的薪水总额、最高和最低薪水:

select sum(sal),max(sal),min(sal) from emp;

(e)表连接

当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。
从大类上分,表连接分为内连接和外连接,它们之间的最主要区别是內连接仅选出两张表中
互相匹配的记录,而外连接会选出其他不匹配的记录。我们最常用的是内连接。
例如,查询出所有雇员的名字和所在部门名称,因为雇员名称和部门分别存放在表 emp 和
dept 中,因此,需要使用表连接来进行查询:

select ename,deptname from emp,dept where emp.deptno=dept.deptno;

外连接有分为左连接和右连接,具体定义如下。
? 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
? 右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录

例如,查询 emp 中所有用户名和所在部门名称:

select ename,deptname from emp left join dept on emp.deptno=dept.deptno;

(f)记录联合

我们经常会碰到这样的应用,将两个表的数据按照一定的查询条件查询出来后,将结果合并
到一起显示出来,这个时候,就需要用 union 和 union all 关键字来实现这样的功能,具体语
法如下:

SELECT * FROM t1
UNION|UNION ALL
SELECT * FROM t2
……
UNION|UNION ALL
SELECT * FROM tn;

UNION 和 UNION ALL 的主要区别是 UNION ALL 是把结果集直接合并在一起,而 UNION 是将
UNION ALL 后的结果进行一次 DISTINCT,去除重复记录后的结果。

10、DCL 语句

DCL 语句主要是 DBA 用来管理系统中的对象权限时所使用,一般的开发人员很少使用。

时间: 2024-11-07 03:23:16

数据库基础知识001的相关文章

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

SQL数据库基础知识-巩固篇<一>

SQL数据库基础知识-巩固篇<一>... 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用了> MySQL-57 DataBase MS-SQLServer-2000 DataBase SQL的含义:结构化查询语言(Structured Query Language)简称SQL 作用:SQL(Structured Query Language,结构化查询语言)是一种用于操作数据库的语言. 结构化查询语言包含6个部分:一:数

oracle学习入门系列之二 数据库基础知识

oracle学习入门系列之二 数据库基础知识 本篇蛤蟆要梳理下那些被淡忘的数据库基础知识,也许根本就没被人记住过.不管是哪种情况,该记住的必须记住,记不住就把他记下来吧. 首先问几个问题如下: 数据库基础知识是什么? 好吧,蛤蟆直接吐后而不亡,看目录开始吧. 本人邮箱:[email protected] 微信公众号:HopToad 欢迎各界交流 1      基本概念 概念就是概念,大伙对这些名词不要死磕,但是对定义一定要理解,理解方能领悟,领悟方能运用自如后创新. 1.1      数据 数据

SQL Server之 (一) 数据库简介 SQL Server环境配置 数据库基础知识

   前言 这个是我工作两年多后,再次从最基础的SQL入门开始,认真的学一遍SQL Server,捡漏和巩固都有;因为自己刚开始学的时候,总是心烦气躁,最近换工作,发现1到2年经验,问到基础性的东西还是很多,这个时候需要的是扎实的基础功夫,所以一系列打击+反省后,自己节假日在家从最基础重新认识一下SQL Server,继续沉淀一下.哪里有不对或需深入探讨,请直接留言或者小窗我;欢迎~ (一) 数据库简介   SQL Server环境配置   数据库基础知识 1.什么是数据库,数据库有哪些特点,为

Oracle数据库基础知识

oracle数据库plsql developer 目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外键 创建删除索引 创建修改删除视图 二     SQL查询 基本的SQL语句 unionminusintersect 内连接外连接 子查询关联子查询 betweeninexists 复制表insert into selectselect into from 三     SQL查询优化 尽量少用 IN 操

数据库基础知识_

01. 前言介绍 前言知识介绍说明 基础知识配置

mysql数据库基础知识总结

这里把自己学的mysql数据库的知识总结一下,当是给自己复习一遍,也是方便以后查询 安装和配置mysql就不说了,可以借鉴这位博友的安装过程   https://www.cnblogs.com/by330326/p/5608290.html 一.mysql基本命令 1.创建命令 create user '用户名' @'ip' identified by '密码';  创建用户 ip是指用户登录mysql的电脑ip,可以写%,本地写localhost grant 权限(select/insert/

数据库基础知识(六)

1.用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息. employee: eid,ename,salary,deptid; select * from employee order by deptiddesc,salary 2.列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序 创建表: mysql> create table employee921(idint primary key auto_increment,name varchar(5 0),salar

数据库基础知识:数据库中的约束和三大范式

一.数据库中的范式: 范式, 英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法,以下就是对这三个范式的基本介绍: 第一范式(1NF): 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性. 例如: userInfo: '山东省烟台市 1318162008' 依照第一范式必须拆分成