目 录
第一章 数据库简介
第二章 SQL语言基础
1. 注释
2. 常用数据类型
3. 数据库的元素
创建表(CREATE)
添加数据(INSERT)
INSERT INTO C VALUES (2,'小度',14);
INSERT INTO C(id) VALUES (3);
INSERT INTO C(name) VALUES ('可可');
INSERT INTO C VALUES (5,'教练',20),
(6,'慧尚',22),
(7,'线上',43);
简单查询(SELECT)
修改数据(UPDATE)
UPDATE c SET age = 18,name = '小雪' WHERE id = 2;
删除表中的记录(DELETE)
删除表中的记录(TRUNCATE)
TRUNCATE TABLE c;
DELETE和TRUNCATE区别
删除表(DROP)
第三章 字段的约束
常见约束
主键和自增长(primary key auto_increment)
CREATE TABLE a (
id INT UNSIGNED PRIMARY key auto_increment,
name VARCHAR(10),
age INT
);
INSERT INTO a(NAME,age) VALUES('小艾',17),('王华',34),('雪儿',18)
0或者null作为自增长字段占位符
非空约束(NOT NULL)
唯一(UNIQUE)
默认值(DEFAULT)
第四章 别名与重复记录
数据准备
/* 如果学生表students存在,就删除学生表students */
drop table if exists students;
/* 创建学生表students */
create table students (
studentNo varchar(10) primary key, /*学号,主键,值不能重复*/
name varchar(10), /*姓名*/
sex varchar(1), /*性别*/
hometown varchar(20), /*家乡*/
age tinyint, /*年龄*/
class varchar(10), /*班级*/
card varchar(20) /*身份证号码*/
);
/* 向学生表students插入数据 */
insert into students values
('001', '王昭君', '女', '北京', '30', '1班', '110101199003157654'),
('002', '诸葛亮', '男', '上海', '29', '2班', '310102199104262354'),
('003', '张飞', '男', '南京', '30', '3班', '320102199003047654'),
('004', '白起', '男', '安徽', '35', '4班', '340202198505177654'),
('005', '大乔', '女', '天津', '28', '3班', '120101199204067654'),
('006', '孙尚香', '女', '河北', '25', '1班', '130502199506137654'),
('007', '百里玄策', '男', '山西', '39', '2班', '140102198107277654'),
('008', '小乔', '女', '河南', '25', '3班', null),
('009', '百里守约', '男', '湖南', '31', '1班', ''),
('010', '妲己', '女', '广东', '24', '2班', '440701199607147654'),
('011', '李白', '男', '北京', '30', '4班', '110202199005017754'),
('012', '孙膑', '男', '新疆', '36', '3班', '650102198401297655');
字段的别名(AS)
表的别名(AS)
消除重复记录(DISTINCT)
第五章 条件查询
WHERE子句
多种运算符
比较运算符
逻辑运算符(and or not)
模糊查询(LIKE)
范围查询
空判断
where 子句在update与delete 语句中同样有效
第六章 排序(order by)
第七章 聚合函数(用在select后)
总记录数count
最大值max
最小值min
求和sum
平均值avg
第八章 数据分组(group by)
分组
分组后对数据进行筛选(having)
where和having的区别
第九章 数据分页显示(limit)
多表查询
第十章 连接查询
数据准备
/* 如果学生表students存在,就删除学生表students */
drop table if exists students;
/* 创建学生表students */
create table students (
studentNo varchar(10) primary key, /*学号,主键,值不能重复*/
name varchar(10), /*姓名*/
sex varchar(1), /*性别*/
hometown varchar(20), /*家乡*/
age tinyint, /*年龄*/
class varchar(10), /*班级*/
card varchar(20) /*身份证号码*/
);
/* 向学生表students插入数据 */
insert into students values
('001', '王昭君', '女', '北京', '30', '1班', '110101199003157654'),
('002', '诸葛亮', '男', '上海', '29', '2班', '310102199104262354'),
('003', '张飞', '男', '南京', '30', '3班', '320102199003047654'),
('004', '白起', '男', '安徽', '35', '4班', '340202198505177654'),
('005', '大乔', '女', '天津', '28', '3班', '120101199204067654'),
('006', '孙尚香', '女', '河北', '25', '1班', '130502199506137654'),
('007', '百里玄策', '男', '山西', '39', '2班', '140102198107277654'),
('008', '小乔', '女', '河南', '25', '3班', null),
('009', '百里守约', '男', '湖南', '31', '1班', ''),
('010', '妲己', '女', '广东', '24', '2班', '440701199607147654'),
('011', '李白', '男', '北京', '30', '4班', '110202199005017754'),
('012', '孙膑', '男', '新疆', '36', '3班', '650102198401297655');
/* 如果课程表courses存在,删除课程表courses */
drop table if exists courses;
/* 创建课程表courses */
create table courses (
courseNo int unsigned primary key auto_increment, /*课程号 主键,值不能重复,且自增长*/
coursename varchar(10) /*课程名称*/
);
/* 向课程表courses插入数据 */
insert into courses (coursename) values
('数据库'),
('html'),
('linux'),
('系统测试'),
('单元测试'),
('测试过程'),
('python');
/* 如果成绩表scores存在,删除课程表scores */
drop table if exists scores;
/* 创建scores表 */
create table scores (
id int unsigned primary key auto_increment,/*主键,值不能重复,且自增长*/
courseNo int unsigned, /*课程号,与courses表中courseNo关联*/
studentNo varchar(10), /*学号,与students表中studentNo关联*/
score tinyint /*成绩*/
);
/* 向scores表插入数据 */
insert into scores (courseNo, studentNo,score) values
(1, '001', 90),
(1, '002', 75),
(2, '002', 98),
(3, '001', 86),
(3, '003', 80),
(4, '004', 79),
(5, '005', 96),
(6, '006', 80);
/* 如果区域表areas存在,删除areas */
drop table if exists areas;
/* 创建区域表areas */
create table areas(
id int primary key,
name varchar(20),
pid int);
/* 向区域表areas插入数据 */
insert into areas
values ('130000', '河北省', NULL),
('130100', '石家庄市', '130000'),
('130400', '邯郸市', '130000'),
('130600', '保定市', '130000'),
('130700', '张家口市', '130000'),
('130800', '承德市', '130000'),
('440000', '广东省', NULL),
('440300', '深圳市', '440000'),
('440100', '广州市', '440000'),
('440500', '汕头市', '440000'),
('440600', '佛山市', '440000'),
('440200', '韶关市', '440000');
内连接(inner join … on …=…)
带有where的内连接
多表内连接
左连接(left join … on …=…)
右连接(right join … on …=…)
第十一章 自关联
第十二章 子查询
子查询是嵌套到主查询里面的 子查询是嵌套到主查询里面的 子查询做为主查询的数据源或者条件 子查询是独立可以单独运行的查询语句 主查询不能独立独立运行,依赖子查询的结果
标量子查询(比较运算符)
返回结果只有一行一列
列子查询(in)
表级子查询(和其他表联合查询)
第十三章 MySql常用内置函数
一、字符串函数
concat连接字符串
length返回字符串字符个数
left从左侧截取字符串
right从右侧截取字符串
substring从指定位置截取字符串
ltrim去除字符串左侧空格
rtrim去除字符串右侧空格
trim去除字符串左右边两侧空格
二、数学函数
round四舍五入
rand随机数
产生一个从0-10的浮点数(小数)
三、日期时间函数(current_date()/current_time()/ now())
第十四章 了解存储过程
第十五章 了解视图
视图就是对select语句的封装
第十六章 了解事务
第十七章 了解索引(index)
创建索引
查看索引
删除索引
索引的优缺点
掌握基于命令行的SQL使用