MySQL学习笔记
《软件测试工程师所需的MySQL数据库技术,mysql系统精讲+课后练习》学习笔记
SQL在线编辑器:在线SQL廖雪峰的
数据库简介
数据库: 是指长期存储在计算机内、有组织的数据集合。简而言之,数据库就是一个存储数据的地方。
表:是数据库中存储数据的基本单位,数据按照分类存储到不同的表中,能够非常高效的查询其中的数据。
关系型数据库(Relational Database):由多张有关联的表组成的数据库。
关系型数据库的主要产品
Oracle:在大型项目中使用,银行,电信等项目;
MySQL: web 时代使用最广泛的关系型数据库;
Microsoft SQL Server: 在微软平台的项目常用;
SQLite:轻量级数据库,主要应用在移动平台。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQLAB 公司开发,后来被Sun公司收购,Sun公司后来又被 Oracle 公司收购,目前属于 Oracle 旗下产品。MySQL 开源、支持多平台、免费、使用范围广,是了解学习关系型数据库的首选。
SQL概述
SQL(Structured Query Language)是“结构化查询语言”。
SQL 是一门特殊的语言,专门用来操作关系型数据库,当前关系型数据库都支持使用 SQL语言进行操作,也就是说可以通过 SQL 语言操作 oracle、mysql、sql server、sqlite 等等所有的关系型数据库。
SQL 语言主要分为:
DQL:数据查询语言,用于对数据进行查询,如 select;
DDL:数据定义语言,进行数据库、表的管理等,如 create、 drop;
DML:数据操作语言,对数据进行增、删、改,如: insert、update、delete;
TPL:事务处理语言,对事务进行处理。包括 begin transaction、commit、rollback;
对于测试工程师来讲,重点是数据的查询,需要熟练编写 DQL,能看懂 DDL,DML 和其他语句了解即可。
语法规范:关键字不区分大小写,建议用大写。
SQL语言基础
SQL注释
-- 单行注释(--与注释文字之间用空格分隔)
/*多行注释*/
数据库中的元素
数据库——database
表——table
字段——field
记录——record
CREATE TABLE 创建表
-- 创建表语法:
CREATE TABLE 表名(
字段名 数据类型,
字段名 数据类型,
...
);
-- 举例:
/* 创建表student
字段:id 数据类型:int(整数)
字段:name(姓名) 数据类型:varchar(字符串) 长度:10
字段:height(身高) 数据类型:decimal(小数) 长度:一共5位,3位整数,2位小数
字段:age(年龄) 数据类型:tinyint unsigned(无符号小整数)
*/
CREATE TABLE student(
id INT,
name VARCHAR(10),
height DECIMAL(5,2),
age TINYINT UNSIGNED
);
INSERT 插入语句
-- 插入语法
INSERT INTO 表名 VALUES(...);
-- 往student表中插入一条记录
INSERT INTO student VALUES(1,'孙策',175.5,25);
-- 指定字段进行插入
INSERT INTO student (id,name) VALUES(2,'孙权');
-- 插入多条记录
INSERT INTO student VALUES(3,'周公瑾',180,25),(4,'诸葛亮',178,26);
INSERT INTO student (id,name) VALUES(5,'大乔'),(6,'小乔');
SELECT 查询语句
SELECT *或者SELECT 字段名 控制了查询返回什么样的字段(列)
-- 查询语法
SELECT 查询字段 FROM 表名;
--查询student表格
SELECT * FROM student;
-- 查询特定字段,顺序自定义
SELECT age,id,name FROM student;
UPDATE 修改语句
-- 修改语法
UPDATE 表名 set 字段1 = 值1,字段2 = 值2 WHERE 条件;
-- 将id为3的记录姓名改为刘备,年龄改为20岁
UPDATE student SET name = '刘备',age = 20 WHERE id = 3;
-- id大于3的人年龄增加1
UPDATE student set age = age + 1 where id > 3;
DELETE 删除语句
-- 删除语法
DELETE FROM 表名 WHERE 条件;
-- 删除student表中id为6的记录(删除一条)
DELETE FROM student WHERE id = 6;
-- 删除student表中id小于3的记录(删除多条)
DELETE FROM student WHERE id < 3;
TRUNCATE 删除表数据
-- 删除语法
TRUNCATE TABLE 表名;
-- 删除student表
TRUNCATE TABLE student;
DELETE和TRUNCATE的区别
在速度上,truncate > delete;
如果想删除部分数据用delete, 注意带上 where子句;
如果想保留表而将所有数据删除,自增长字段恢复从 1 开始,用truncate;
DROP TABLE 删除表
-- 删除表语法
DROP TABLE 表名;
-- 删除student表,不存在报错
DROP TABLE student;
-- 如果表student存在,就删除,如果不存在,什么也不做
DROP TABLE IF EXISTS student;
字段的常用约束
主键(primary key): 值不能重复,auto_increment 代表值自动增长;
非空(not null):此字段不允许填写空值;
惟一(unique): 此字段的值不允许重复:
默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准。
CREATE TABLE a(
-- 主键自增长,不指定自增长,指定按照指定的id
id int UNSIGNED PRIMARY key AUTO_INCREMENT,
name VARCHAR(10),
age TINYINT UNSIGNED
);
INSERT INTO a VALUES(1,'钟离',30);
INSERT INTO a (name,age) VALUES('万叶',15);
-- 如果不指定字段,主键自增长字段的值可以用占位符,0或者null
INSERT INTO a VALUES(0,'神里绫华',18);
INSERT INTO a VALUES(NULL,'香菱',17);
CREATE TABLE b(
id INT UNSIGNED,
-- name字段必须有值,如果没有值插入会报错
name VARCHAR(10) NOT NULL,
age INT;
);
INSERT INTO b VALUES(1,'行秋',20);
CREATE TABLE c(
id INT,
-- name字段值不能重复
name VARCHAR(10) UNIQUE,
age INT
);
CREATE TABLE d(
id INT,
name VARCHAR(10),
-- 如果插入时指定则用指定值,插入时未指定则用默认值
age INT