目录
前言:
主要用来记录学习和方便自己查询,使用的软件是SQLyog容易上手。
一、MySql简述
1. 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
2. mysql是一个关系数据库管理系统(RDBMS),所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
二、基本操作
1.对数据库操作:
create database if not exists `数据库名`; -- 创建数据库
DROP DATABASE IF EXISTS `数据库名`; -- 删除数据库
show databases; -- 显示所有数据库
use `数据库名`; -- 切换数据库
-- 如果表名或数据库名为特殊字符,需要带 ` ` 区分,建议都带上;
2. 对表的操作:
2.1 创建表:create
create table if not exists `表名`(
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释]
)[表类型] [字符集设置] [注释]
-- 上面是模板,字段名就是列名,类型就是数据类型,属性就是非空、自增等设置,
-- 索引就是设置为主键等,注释就是解释字段含义。可以先创建好列名和属性其他的可以最后再补。
-- 注意区分 ` ` 和 ' ' 第一个是在ESC键下,另一个是单引号。
例子:
CREATE TABLE IF NOT EXISTS `student` (
-- AUTO_INCREMENT 自增 INT(4)不足在前面补0
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`) -- 主键,最后一行不用加,
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用的
*/
-- ENGINE 引擎
/*
ENGINE=InnoDB使用InnoDB引擎,InnoDB,是MySQL的数据库引擎之一。
DEFAULT CHARSET=utf8 数据库默认编码为utf-8
AUTO_INCREMENT=1 自增键的起始序号为1,AUTO_INCREMENT会在新记录插入表中时生成一个唯一的数字。
希望在每次插入新记录时,自动地创建主键字段的值,可以在表中创建一个 auto-increment 字段。
*/
2.2 修改表:alter
-- 修改表名
alter table '表名' rename as '新表名';
-- 增加列(字段)
alter table '表名' add '列名' 类型 索引 注释;
-- 删除列
alter table '表名' drop '列名';
-- 更改列
alter table '表名' change '原字段名' '新字段名' 新数据类型 -- 还可以修改字段类型(约束)
alter table '表名' modify '字段名' 新数据类型 -- 字段类型(约束)
3. 对表数据的操作
3.1 插入、修改、删除数据:
-- 插入数据 insert into
insert into '表名'(字段名1,字段名2...) values('数据1','数据2'....);
例子:
INSERT INTO `student`(name, pwd, sex) VALUES('张三','0000','男');
-- 添加多条用逗号隔开
INSERT INTO `student`(name, pwd, sex) VALUES('张三','0000','男'),('李四','0011','女'),('王五','0022','男');
-- 修改数据 update
update '表名' set '字段名' = '修改内容' where 条件 or/and 条件2;
例子:
UPDATE `student` SET `name` = '新name'; -- 不加条件修改全部
UPDATE `student` SET `name` = '张三' WHERE `id` = 1;
UPDATE `student` SET `name` = '张三' ,`email`='123@qq.com' WHERE `id` = 1; -- 多个用逗号隔开
-- 删除数据 delete
delete from '表名' where 条件; --删除某条数据
truncate '表名'; -- 清空表数据,索引和结构保留
例子:-- 格式:DELETE FROM 表名 [WHERE 条件];
DELETE FROM `student` WHERE id = 1; -- 删除某条数据
TRUNCATE student -- 清空表数据,表的结构和索引不会删除
3.2 表查询select:
-- 查询表数据 select
select '字段名' from '表名' where 条件;
select '字段名' as '别名' from '表名' where 条件;
--别名就是让别名代替字段名在结果中显示。
-- INNER JOIN 联表查询
SELECT s.studentno,`studentname`,`subjectno`,`studentresult`
FROM `student` AS s
INNER JOIN `result` AS r
WHERE s.studentno = r.studentno; -- 等值连接中去掉重复的列,形成的连接;
-- 查询类型很多。。。。。后面补