一.数据库的介绍
二.RDMS专业术语
表:具有固定的列数和任意的行数;
数据库:数据库是一些关于关联表的集合;
列:一个数据项 Field字段;
行:一天记录;
主键:主键是唯一的,一个数据表中只能包含一个主键,你可以使用主键来查询数据。
外键:外键用于关联两个表。
索引:使用索引可以快速访问数据库表中的特定信息,索引是对数据表中一列或多列的值进行排序的一种结构,类似于输的目录。
三.MySQL数据库
1.介绍
.
2.常用数据库命令
(1)MySQL数据库分为两种:用户数据库,系统数据库
(2)安装 Navicat
(3)本机的数据库
(4)字符集选UTF-8
(5)字符集的介绍
(6)MySQL的存储引擎
扩展名分别为:.frm .myd .myl
(6).数据库基本操作 cmd命令
登录数据库 mysql -u root -p
查看当前所有存在的数据库 show databases;
查看mysql端口命令: show variables like 'port' ;
查询当前正在使用的数据库
select database();
status;
切换数据库 use database_name;
创建一个新的数据库
create database database_name;
删除数据库
drop database database_name;
(7)什么是表?
在关系型数据库中,数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。它由纵向的列和横向的行组成,行被称为记录,是组织数据的单位;列被称为字段,每一列表示记录的属性,都有相应的描述信息,如数据类型、数据宽度等。可以简单用如下图片进行表述数据库表:
3.SQL
1.常用数据类型
(2)日期类型:
(3)字符串类型
(4)
2.常见运算符介绍
算术运算符 加(+)、减(-)、乘(*)、除(/)、取余(%)
比较运算符 大于( > )、小于( < )、等于( = )、大于等于( >= )、小于等于( <= )、不等于(!=)
逻辑运算符 非( NOT或! )、与( AND 或 && )、或( OR 或|| )、异或(XOR)
3.DDL(针对表的结构进行修改,数据定义语言)
创建数据库 create database数据库名 character set utf8;
Navicat端 :
右键->创建数据库
修改数据库:
use 数据库名;
创建表(先使用数据库才能创建表)
查看表中字段的信息 desc 表名;
int(11)代表 不够11位 用0补齐 ,
varchar(10)限制最多只能添加10位;
添加列 alert table 表名 add 列名 数据类型;
修改(modify)一个表的字段类型 alert table 表名 modify 字段名 数据类型;
删除一列 alert table 表名 drop 字段名(列名);
修改表名 rename table 原来表名 to 新表名;
查看表的创建细节 show create table 表名;
修改表的字符集
修改表的列名
alter table student change 要修改的列名 新列名 varchar(20);
修改之后:
4.DML(数据操作语言,用来操作表中的记录)
查询表中的所有数据: select * from 表名;
插入操作:insert into 表名(列名1,列名2...)values (值1,值2)
注意: varchar 类型 需要加 ' '
\G 换一种方式显示:
注:要访问表必须先使用数据库 use 数据库名;
批量插入记录: insert into 表名 (列名1,列名2...) values (列值1,列值2...),(列值1,列值2...);
更新操作:
删除操作:
4.数据表的基本操作
(1)使用主键约束
单字段主键: 在定义列的同时指定主键,语法规则如下: 字段名 数据类型 primary key [默认值]
在定义完所有列之后指定主键: [CONSTRAINT <约束名>] PRIMARY KEY [字段名]
多字段联合主键 PRIMARY KEY [字段1,字段2,…,字段n]
(2)使用非空约束
非空约束语法规则如下: 字段名 数据类型 NOT NULL
(3)使用唯一性约束
唯一约束语法规则如下: 字段名 数据类型 UNIQUE
5.约束
使用默认约束
默认约束语法规则如下: 字段名 数据类型 DEFAULT 默认值 使用外键约束 外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或多个外键。
(1)使用foreign key来指定本表的外键列,并使用references来指定参照哪个主表,以及参照到主表的哪个列。 CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES table_name(column_name)
(2)修改数据表时添加外键约束 Alter table ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES table_name(column_name)
6.别名和限制使用
select count(*) as 输出列名 from 表名; select count(*) as 列名 from 表名; #将count(*)命名为列名
limit子句:对查询的显示结果限制数目
limit 3; 表示前3条数据。 limit 4,1 表示从第5条开始查询,显示前1条数据。 limit 5,3 显示第6/7/8条数据。
7.单表查询
- 查询所有字段 select * from 表名;
- 查询指定字段 select 列名 from 表名;
- 查询指定记录 select 字段名1,字段名2,...,字段名n from 表名 where 查询条件;
- DISTINCT 查询结果去重 SELECT distinct 字段名 from 表名;
- 带IN/NOT IN 关键字的查询 SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);
- 带 BETWEEN AND 的范围查询 SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
- 带 LIKE 的字符匹配查询 SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
- 查询空值(IS NULL) SELECT column_name(s) FROM table_name WHERE column_name IS NULL;
- 带 AND 或 OR 的多条件查询 查询结果排序(ORDER BY) 分组查询(GROUP BY ) SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
- HAVING SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;
8.使用聚合函数查询
函数 |
作用 |
AVG() |
返回某列的平均值 |
COUNT() |
返回某列的行数 |
MAX() |
返回某列的最大值 |
MIN() |
返回某列的最小值 |
SUM() |
返回某列值的和 |
9.连接查询
多表查询
内关联(inner join等价于join)
外关联(left join、right join、full join)
交叉关联(cross join)
内关联、左右关联的另外一种写法(where)
10.子查询
子查询是将一个查询语句嵌套在另一个查询语句中,内层查询语句的查询结果,可以为外层查询语句提供查询条件。
在特定情况下,一个查询语句的条件需要另一个查询语句来获取。
基本结构: SELECT 显示列 FROM 表名 WHERE 字段名 IN (查询语句);
连接子查询关键字:in、not in 、=、!=、exitst
11.插入数据
- 为表的所有字段插入数据 INSERT INTO table_name (column_lists) VALUES (value_lists);
- 为表的指定字段插入数据
- 将查询结果插入表中 INSERT INTO table_name1 (column_list1) SELECT (column_list2) FROM table_name2 WHERE 查询条件;
- 将查询结果插入新建的数据表中 CREATE table1_bak AS SELECT * FROM TABLE1;
12.更新数据
更新数据基本语法
UPDATE 语句用于更新表中已存在的记录。
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
13.删除数据
删除数据基本语法
DELETE 语句用于删除表中的行。
DELETE FROM 表名 WHERE 字段名=some_value; truncate (table) tb 删除表中的所有数据,不能与where一起使用