mySql笔记
一、数据库操作
-
创建数据库
create database
数据库名 -
删除数据库
drop database if exists
数据库名
二、数据表操作
-
创建表
create table `表名`(
`列名` 类型[] default '默认值' comment '注释',
`列名` 类型[] default '默认值' comment '注释',
、、、
`列名` 类型[] default '默认值' comment '注释',
primary key(`列名`)
)engine= innodb default charset=utf8注意
不要忘记每句句尾的
,, 最后一句不需要, -
修改表
-
修改表名
alter table
旧表名rename as新表名-
增加表字段
alter table
表名add列名列属性-
修改表字段
alter table
表名modify列名列属性 -- 修改约束(列属性)alter table
表名change旧列名新列名列属性 --列名重命名-
删除表字段
alter table
表名drop列名 -
-
删除表
drop table if exists
表名
三、MySQL数据管理
-
外键
信息表
CREATE TABLE IF NOT EXISTS `information`(
`id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学号',
`classid` INT(10) NOT NULL COMMENT'班级',
`name` VARCHAR(10) NOT NULL DEFAULT'匿名' COMMENT '姓名',
`age` INT(3) NOT NULL DEFAULT '18' COMMENT'年龄',
`sex` VARCHAR(3) NOT NULL DEFAULT'女' COMMENT'性别',
`address` VARCHAR(100) DEFAULT NULL COMMENT'地址',
`email` VARCHAR(20) DEFAULT NULL COMMENT'邮箱',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8班级表
CREATE TABLE class(
classid INT(10) NOT NULL AUTO_INCREMENT COMMENT'班级号',
classname VARCHAR(20) DEFAULT'1班' COMMENT'班级名',
PRIMARY KEY(`classid`)
)ENGINE=INNODB DEFAULT CHARSET=utf把班级表设置为信息表的外键约束
ALTER TABLE `information`
ADD CONSTRAINT `FK_classid`
FOREIGN KEY (`classid`) REFERENCES `class` (`classid`)
-
通用格式
alter table
主键表add constraint
FK_外键主键foreign key (
外键主键) references外键表名(外键主键)注意
主键表中的
外键列属性需与外键表中的主键列保持一致 -
DML 语言(数据管理)
-
插入语句
insert into
表名(列名1,列名2,列名3,...) values ('值1','值2','值3',...),('值1','值2','值3',...),('值1','值2','值3',...),..注意
如果不写列名后面的值必须一一对应,否则会报错
插入的值用单引号隔开
'' -
修改语句
update
表名set列名='值'(变量) where 条件不加条件将修改全表
update `class` set `className` = '软件一班' where `classId` = '0001'
update `class` set `className` ='软件二班',`classNum` = '45' where `classId` = '0002' -
删除语句
delete from
表名where [条件]不加条件将清空表
delete from `class` where `classname` = '软件一班'
delete from `class` where `classnum` > 45truncate 和 delete 的区别
truncate table
表名清空表会将表自增归零
delete from
表名清空表不会影响自增
-
-
DQL语言(数据查询语言)
-
简单查询
语法格式:select * from
表名select * from `student` -
别名
select
列名as 别名,列名as 别名,... from表名as 别名select `name` as 姓名,`sex` as 性别,`age` as 年龄 from `student` as s -
去重
语法格式:select distinct
列名from表名SELECT DISTINCT `resultid` AS 成绩编号 FROM `result` -
查看版本
select version()
-
where子句查询
语法 含义 and 或 && 必须同时满足两个条件 or 或 || 满足其中一个条件即可 no 或 ! 不满足条件 SELECT * FROM `student`
WHERE `sex`= '男'
SELECT * FROM `student`
WHERE `sex`='男' AND age>22
SELECT * FROM `student`
WHERE NOT sex='男'
SELECT `name` AS 姓名,`age` AS 年龄 FROM `student`
WHERE sex='男' or age>18 -
模糊查询
语法 含义 between .. and .. 满足范围的值 like 根据关键字查数据,通常与'%','_'联合使用 in 精确查询,必须是该字段才出数据 is null 查询某个值是空的数据 is not null 查询某个值不是空的数据 SELECT `name` AS 姓名,`age` AS 年龄 FROM `student`
WHERE `name` LIKE '刘_'
SELECT `name` AS 姓名,`sex` AS 性别 FROM `student`
WHERE `name` LIKE '颜%'
SELECT `name`,`age` FROM `student`
WHERE `address` IS NULL
SELECT `name`,`age` FROM `student`
WHERE `address` IS NOT NULL -
拼接字段:concat
SELECT CONCAT('分数:',score) FROM result
WHERE score BETWEEN 80 AND 100注意
'%' 匹配0到任意字段的数据,'_'只匹配一个字段连
-
联表查询
-- 查询学生的班级名、姓名、性别、年龄、地址
SELECT `classname`,`name`,`sex`,`age`,`address`
FROM student AS s
INNER JOIN class AS c
WHERE s.classid = c.classid AND classname='1班'inner join :查询两个表的交集
right join: 查询右表所有数据,即使左表没有对应的数据
left join:与right join 相反,查询左表所有数据,即使右表没有对应的数据

浙公网安备 33010602011771号