1.资料库的句子能分成下列五类:
(1)DDL:Data Define Language 定义统计数据
(2)DML:Data Manipulate Language 操作方式统计数据
(3)DQL:Data Query Language 查阅统计数据
(4)DCL:Data Control Language 掌控使用者职权
2.查阅资料库条目
show databases;
3.建立资料库
create database 统计数据库中文名称;
4.选定资料库(接下去大部份的操作方式都是在该库下继续执行)
use 资料库中文名称;
5.建表句子
create table 表名(
表头1中文名称正则表达式,
表头2中文名称正则表达式
);
6.查阅库上面的大部份表
(1)show tables;(继续执行的大前提是有选定资料库)
(2)show tables from 资料库名
7.查阅表的大部份表头特性
(1)show columns from 表名;
(2)desc 表名;
(3)SELECT
columnname AS 列名,
datatype AS 正则表达式,
columndefault AS 默认值,
columncomment AS 备注
FROM
informationschema.columns
WHERE
tablename=表名 and tableschema =库名;
8.修改表结构,添加表头
alter table 表名 add Hamming正则表达式;
9.修改表结构,添加表头B到表头A之后
alter table 表名 add 表头B名正则表达式 after 表头A名;
10.修改表结构,仅修改Hamming或者仅修改表头特性或者两者都修改
alter table 表名 change 待修改Hamming修改后的Hamming修改后的表头特性;
11.建表设置非空约束句子(如果不插入非空表头,会提示报错)
create table 表名(
表头1中文名称正则表达式 not null,
表头2中文名称正则表达式
);
12.建表设置默认值(在不设置默认值的情况下,大部份表头默认是空(null))
create table 表名(
表头1中文名称正则表达式 default 默认值,
表头2中文名称正则表达式
);
13.修改表表头的默认值
ALTER TABLE 表名 ALTER Hamming SET DEFAULT 默认值
14.删除表头默认值
(1)ALTER TABLE 表名 ALTER Hamming SET DEFAULT null;(注意表头非空特性时,不能设置null默认值)
(2)ALTER TABLE 表名 ALTER Hamming DROP DEFAULT;
15.修改表表头约束(能是多个)
alter table 表名 modify 原Hamming原表头特性约束1约束2…;
16.非空表头设置为允许为空
alter table 表名 modify 原Hamming原表头特性 null;
17.添加unique特性(当设置多个表头唯一值约束时,是由这些表头作为一个整体来验证唯一性)
CREATE TABLE 表名(
Hamming1正则表达式1,
Hamming2正则表达式2,
CONSTRAINT 约束名 UNIQUE (表头1,表头2,…)
);
ALTER TABLE 表名
ADD CONSTRAINT 约束名 UNIQUE (表头1,表头2…)
18.删除unique特性(如果建立UNIQUE时没有设置约束,需要通过脚本查阅系统默认设置的约束名来操作方式)
ALTER TABLE 表名 DROP INDEX 约束名
19.设置主键(能是一个表头作为主键,也能是多个表头作为联合主键)
create table 表名(
表头1中文名称正则表达式 not null,
表头2中文名称正则表达式
primary key(主键表头1中文名称,主键表头2中文名称…)
);
ALTER TABLE 表名 ADD PRIMARY KEY (主键表头1中文名称,主键表头2中文名称…);
20.设置备注
(1)建立备注
create table 表名(
表头1中文名称正则表达式 comment 备注信息,
表头2中文名称正则表达式
);
(2)修改备注
alter table 表名 modify 原Hamming原表头特性 comment 备注信息;
21.添加外键约束(注意外键依赖表头必须是该表主键,外键两表头类型必须完全一致,编码字符集必须一致)
CREATE TABLE 表名(
表头一表头类型,
表头二表头类型,
CONSTRAINT 外键约束中文名称 FOREIGN KEY (外键表头) REFERENCES 外键依赖表(外键依赖表头)
)
ALTER TABLE 表名
ADD CONSTRAINT 外键约束中文名称 FOREIGN KEY (外键表头) REFERENCES 外键依赖表(外键依赖表头);
ALTER TABLE 表名 DROP foreign key 外键约束中文名称;
22.添加索引
CREATE INDEX 索引中文名称 ON 表名(索引表头1,索引表头2…)
1.添加统计数据
INSERT INTO 表名(表头1,表头2,表头3,…) VALUES (值1,值2,值3,…);
添加多组统计数据
INSERT INTO 表名(表头1,表头2,表头3,…) VALUES (值1,值2,值3,…),(值1,值2,值3,…),(值1,值2,值3,…);
插入查阅结果集
INSERT INTO 表1(表头1,表头2,…) SELECT (表头1,字段2,…) FROM 表2;
2.更新统计数据
UPDATE 表名 SET 表头1=值1,表头2=值2,… WHERE 条件;
3.删除统计数据
delete from 表名 where 条件;
一、简单单表查询
1.where条件实际是一个条件表达式
2.表达式常用运算符=、<>(不等于,!=)、>、<、>=、<=
3.in 选定多个值,后跟数组(数组用圆括号,其中多组值逗号隔开)
where 表头 in (值1,值2)
示例:select * from student where id in (1,2);
in对应的是数组,能嵌套查阅sql子集
示例:select * from student where id in (select id from test);
4.between
BETWEEN 操作方式符选取介于两个值之间的统计数据范围内的值。能表示数字和时间,包括边界值
select * from student where id between 5 and 7;
select * from schedule where date between 2020=09-2123:00:00 and 2020-09-2218:00:00;
5.and运算符(并且的逻辑关系,多个同时满足条件用and相连)
示例:select * from student where name =lifang or sex =M;
6.or运算符(或者的逻辑关系,用or相连)
示例:select * from student where id =1 or id =2;
7.not(对立面)
示例:select * from student where id not in (1,2);
select * from schedule where date not between 2020=09-2123:00:00 and 2020-09-2218:00:00;
8.like 模糊查阅
(1)%替代0 个或多个字符
like %关键字%包含关键字的大部份结果集
like %关键字关键字在末位
like 关键字%关键字在首位
(2)替代一个字符(中文要占两个字节)
关键字表示关键字在第二位
9.null作为条件
is null 为空
is not null不为空
10.别名
通过as的方式选定列头信息
11.order by
排序关键字:asc升序,desc降序
如果order by 表头1排序关键字1,表头2排序关键字2
其意味着表头1为主排序表头
12. limit
limit a,b a代表起始统计数据的序号,b代表从起始统计数据开始显示多少条统计数据
例如:limit 0,4显示前四条统计数据 limit 2,3显示第3条到第5条统计数据
limit b是limit 0,b简写
13.distinct
DISTINCT 关键词用于返回唯一不同的值
二、联合查阅
left join 左联以left join 左侧表为主表(主表表头完整显示,副表作为扩展信息补充(可能为null))
right join 右联以right join 右侧表为主表(主表表头完整显示,副表作为扩展信息补充(可能为null))
inner join 内联两表取交集
两表联合查阅
select A.表头,B.表头 from A left join B on A.关联表头=B.关联表头 where 条件;
select A.表头,B.表头 from A inner join B on A.关联表头=B.关联表头 where 条件;
select A.表头,B.表头 from A right join B on A.关联表头=B.关联表头 where 条件;
多表联合查阅
left join b on b.关联表头=a.关联表头能通过on中的两个表判断对应主表是谁,不需要连在一起写
样例:
select
route.RouteId ,
a1.airportName as DepartureAirportName,
c1.CityName as DepartureCityName,
country1.CountryName as DepartureCountryName,
a2.AirportName as ArrivalAirportName,
c2.CityName as ArrivalCityName,
country2.CountryName as ArrivalCountryName
from
route
left join airport as a1 on a1.IATACode=route.DepartureAirportIATA
left join airport as a2 on a2.IATACode = route.ArrivalAirportIATA
left join city as c1 on a1.CityCode = c1.CityCode
left join city as c2 on c2.cityCode = a2.CityCode
left join country as country1 on country1.CountryCode = c1.CountryCode
left join country as country2 on country2.CountryCode = c2.CountryCode
left join city as c2 on c2.cityCode = a2.CityCode 它的主表是a2,但是他们没有连在一起写
三、MySQL函数
count
sum
avg
max
min
GROUPCONCAT
TIMESTAMPDIFF
DATEDIFF
DATEADD
NOW
CURDATE
CURTIME
四、统计分组
group by
having
五、exists
两者等价
select * from student where not EXISTS (select 1 from sc WHERE sc.Sno=student.Sno);
select * from student where student.sno not in (select sc.sno from sc);