第一章 数据库简介
一、为什么学习数据库
在处理大量的数据时,数据库无疑是最方便快捷的处理工具。
二、数据库是什么
三、关系型数据库
所谓关系型数据库,由多张有关联的表组成的数据库。
关系型数据库的主要产品(Oracle、MySQL、Microsoft SQL Server、SQLite)
四、关系型数据库核心元素
1、数据库(表的集合,一个数据库中能够有多个表);
2、表(由行和列组成的二维表格);
3、行(记录);
4、列(字段);
五、MySQL简介
MySQL是一个关系型数据库管理系统,MySQL开源、支持多平台、免费、使用广泛。
六、SQL语言
1、SQL语言主要分为:
DQL:数据查询语言,用于对数据进行查询,如select;
DDL:数据定义语言,进行数据库、表的管理等,如creat、drop;
DML:数据操作语言,对数据进行增、删、改、查,如:insert、update、delete;
TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback;
2、SQL语言不区分大小写
第二章 Navicat使用
一、学习目标
用navicat对数据库进行操作;
二、连接到本机的MySQL
三、数据库操作
四、编写和运行SQL语言
第三章 SQl语言基础
一、学习目标
1、掌握CREATE TABLE、DROP TABLE语句
2、掌握:增加INSERT、查询SELECT、删除DELETE、修改UPDATE表语句;
二、SQL语言中的注释
1、单行注释
格式:--注释内容
注意:--与注释内容之间用空格分隔
2、多行注释
格式:/*注释内容*
在Navicat中按ctrl+/快速注释选中的SQL代码
在Navicat中按ctrl+shift+/选中SQL代码取消注释
三、MySQL常用数据类型
1、整数:int,与符号范围(-2147483648,2147483648);无符号范围(0,4294967295),如:int unsigned,代表设置一个无符号整数;
2、小整数:tinyint,有符号范围(-128,127),无符号范围(0,255),如:tinyint unsigned,代表设置一个无符号的小整数
3、小数:decimal,如decimal(5,2)表示共存5位数,小数占2位,不能超过2位,整数占3位,不能超过3位;
4、字符串:varchar,如varchar(3)表示最多存3个字符,一个中文或一个字母都占一个字符;
5、日期时间:datetime,范围(1000-01-01 00:00:00~9999-12-31 23:59:59),如‘2024-01-23 12:29:59’.
四、表、字段、记录
1、表(table):数据库中存储数据的基本单位,表是一个由行和列组成的二维表格结构。
2、字段(field):表中的列,在数据库中,叫做字段(field)。
3、记录(record):表中的一行,在数据库中,叫做记录(record)。
五、CREATE TABLE 创建表
语法:
create table 表名(
字段名 数据类型,
字段名 数据类型
...
);
例1:创建表a,字段要求:name(姓名),数据类型:varchar(字符串),长度为10
CREATE TABLE a(
NAME VARCHAR(10)
);
例2:创建表b,字段要求:name(姓名),数据类型:varchar(字符串),长度为10;height(身高),数据类型:decimal(小数),一个5位,其中3位为整数,2位为小数。
CREATE TABLE b(
name varchar(10),
height decimal(3,2)
);
例3:创建表c,字段要求:id:数据类型为int(整数);name(姓名),数据类型:varchar(字符串),长度为20;age年龄:数据类型为tinyint unsigned(无符号小整数);
CREATE TABLE c(
id int,
NAME VARCHAR(20),
age TINYINT UNSIGNED
);
六、INSERT 添加数据
1、添加一条记录:SQL语句中,字符串用单引号或者双引号引起来,数字可以省略引号。
格式一:所有字段设置值,值的顺序与表中字段的顺序对应
insert into 表名 values(...);
例1:表 c 插入一条记录,设置所有字段信息
insert into c values(0,‘亚瑟’,22);
格式二:部分字段设置值,值的顺序与给出的字段顺序对应
insert into 表名 (字段1,...) values (值1,...);
例2:表c插入一条记录,只设置id和姓名name
INSERT INTO c(id,NAME) VALUES (1,'老夫子');
2、添加多条记录
格式一:写多条insert语句,语句之间用英文分号隔开
例3:表c插入三条记录,写三条insert语句,语句之间用分号隔开
INSERT INTO c(id,NAME,age) VALUES (3,'刘宇',30);
INSERT INTO c VALUES (4,'魏翔',40);
INSERT INTO c(id,NAME,age) VALUES (5,'牛郎',70);
格式二:写一条insert语句,添加多条记录,数据之间用英文逗号隔开
insert into 表名 values(...),(...),...;
例4:表c插入多条记录,用一条insert语句,数据之间用逗号隔开
INSERT INTO c VALUES(6,'庄子',23),(7,'孟子',40);
格式三:写一条insert语句,设置指定字段值
insert into 表名(字段1,...) values (值1,...),(值1,...),...;
例5:表c插入多条记录,用一条insert语句,只设置姓名和年龄
INSERT INTO c(NAME,age) VALUES ('刘备',26),('张飞',30);
七、SELECT 简单查询
1、查询所有字段
语法:select*from 表名
例1:查询表c所有数据
SELECT*FROM c;
2、查询指定字段
语法:select 字段1,字段2,...... from 表名;
例2:查询表c的id字段;查询表c的id和age字段;查询表c的所有字段,但顺序自定义;
SELECT id FROM c;
SELECT id,age FROM c;
SELECT id,name,age FROM c;
八、UPDATE 修改数据
语法:update 表名 set 字段1=值1,字段2=值2...where 条件;
例1:修改表c,所有人的年龄(age 字段)改为50
UPDATE c SET age=50;
例2:修改表c,id为3的记录,姓名(name 字段)改为‘狄仁杰’,年龄(age字段)改为20
UPDATE c SET name='狄仁杰',age=20 WHERE id=3;
九、DELETE 删除表中数据
语法:delete from 表名 where 条件;
例1:删除表c中id为6的记录
DELETE FROM c WHERE id=6;
例2:删除表c的所有记录
DELETE FROM c;
十、TRUNCATE 删除表中数据
语法:turncate table 表名;(删除表中所有数据,保留表结构)
例:删除表c所有数据
turncate table c;
十一、DELETE和TURNCATE的区别
1、在速度上,turncate > delete;
2、如果想删除部分数据用delete,注意带上where子句;
3、如果想保留表而将所有数据删除,自增长字段恢复从1开始,用turncate;
十二、DROP TABLE 删除表
语法1:DROP TABLE 表名;
例1:删除表a
DROP TABLE a;
语法2:DROP TABLE if exists 表名;
例2:如果表a存在就删除表a,如果不存在,不操作
DROP TABLE if EXISTS a;
第四章 字段的约束
一、常用约束介绍
1、主键(primary key):值不能重复,auto_increment代表值自动增长;
2、非空(not null):此字段不允许填写空值;
3、惟一(unique):此字段不允许重复;
4、默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准。
二、创建带约束字段的语法格式
create table 表名(
字段名 数据类型 约束,
字段名 数据类型 约束
...
);
三、主键与自增长
1、带有primary key(主键)的字段,值不能重复;
2、auto_increment为自增长;
3、语法
create table 表名(
字段名 数据类型 primary key auto_increment,
字段名 数据类型 约束
...
);
例1:创建表d,字段要求如下:
id:数据类型为int unsigned(无符号整数),primary key(主键),auto_increment(自增长)
name姓名:数据类型为varchar(字符串)长度为10
age年龄:数据类型为int(整数)
CREATE TABLE d(
id INT UNSIGNED PRIMARY KEY auto_increment,
NAME VARCHAR(10),
age INT
);
例2:不指定id字段值,系统会自动填写,且自增长
-- 插入时候指定了id的值
INSERT INTO d (id,NAME,age) VALUES (3,'曹操',30);
-- 不指定id值
INSERT INTO d (name,age) VALUES ('刘备',30);
SELECT * FROM d;
例3:所有字段都插入,但没写自增长字段值,该语句会出现错误
insert into d values ('乾隆',60);
解决方案:使用占位符,通常使用0或者null(空)来占位
例4:用0或者null来占位,实现自增长字段的插入
INSERT INTO d (id,name,age) VALUES (null,'康熙',30);
INSERT INTO d (id,NAME,age) VALUES (0,'光绪',50);
四、非空(not null)
1、带有not null(非空)的字段,值不能为空;
2、语法:
create table 表名(
字段名 数据类型 not null,
...
);
例1:创建表e,字段要求如下:
id:数据类型为int unsigned(无符号整数)
name姓名:数据类型为varchar(字符串)长度为10,not null(非空)
age年龄:数据类型为int(整数)
3、非空字段表,insert插入数据一定要指定字段值,不然会插入失败
五、惟一(unique)
1、此字段的值不允许重复;
2、语法:
create table 表名(
字段名 数据类型 unique ,
...
);
例1:创建表f,字段要求如下:
id:数据类型为int unsigned(无符号整数)
name姓名:数据类型为varchar(字符串)长度为10,unique(惟一)
age年龄:数据类型为int(整数)
CREATE TABLE f(
id int UNSIGNED,
name VARCHAR(10) UNIQUE,
age int
);
INSERT INTO f (id,NAME,age) VALUES (1,'张飞',30);
-- 报错,name惟一不可以重复
INSERT INTO f (id,NAME,age) VALUES (2,'张飞',40);
SELECT * FROM f;
六、默认值(default)
1、当不填写此值时会使用默认值,如果填写时以填写为准;
2、语法
create table 表名(
字段名 数据类型 default值 ,
...
);
例1:创建表g,字段要求如下:
id:数据类型为int(整数)
name姓名:数据类型为varchar(字符串)长度为10
age年龄:数据类型为int(整数),default(默认值)为30
CREATE TABLE g(
id int,
NAME VARCHAR(20),
age int DEFAULT(30)
);
INSERT INTO g (id,name) VALUES (1,'刘备');
SELECT * FROM g;