第一课
创建资料库
CREATE DATABASE `database`;
//1.分号必须有
2.指令大小写都可以
3.资料库名字可以不用加``,但是如果涉及到关键字就必须用。
展示资料库
show databases;
删除资料库
drop database `database`;
第二节
使用资料库
use `sql_tutorial`;
数据类型
int | 整数 |
---|---|
decimal(m,n) | 有小数点的数 m代表有几位数 n是小数点占的位数 |
varchar(n) | 字符串 n是最多存放的位数 |
blob | (Binary Large Object)图片 影像 档案 … |
date | ‘YYYY-MM-DD’日期 |
timestamp | ‘YYYY-MM-DD HH:MM:SS’记录时间 |
创建表格
CREATE table `stdunt`(`stdunt_id` int primary key,//可以写成 `stdunt_id` int,primary key(`stdunt_id`)`name` varchar(20), `major` varchar(20)
);
//括号里面为表格内容
foreign key 外键 关联多个表格 !!在第一个表格创建时不能设定
primary key 主键 设置成主键的属性对应的资料是唯一的 主键在声明是不能为空
alter table `Employee`
add foreign key(`sup_id`)
references `employee`(`emp_id`)
on delete set null;
//添加一个外键(某个表格某某某)对应摸某表格某某某
查看表格
DESCRIBE `stdunt`;
//运行后就会显示表格
删除表格
drop table `stdunt`;
新增一个属性(添加表格一行或者一列 不确定第一次学)
altert able `stdunt`
add gpa decimal(3,2);
删除属性
alter table `stdunt `
drop colum gpa;
第三节 存入资料
添加资料
按顺序填写
INSERT INTO `stdunt` VALUES (1,`小白`,`历史`);
!!!如果已经写入会一直报错
//按顺序填写
字符串必须用’或者"包起来
INSERT INTO `stdunt` values(3, '小绿', null);
// null 代表着空白
INSERT INTO `stdunt` (`name`,`major`,`stdunt_id`) values('小蓝','英语',4);!!报错
//
INSERT INTO stdunt
(name
,major
,stdunt_id
) values(‘小蓝’,‘英语’,4);
没有报错 可以运行 应该是中英文字符混了
!!!英文标号自动加黑
//自己决定输入顺序
//添加部分
INSERT INTO `stdunt` (`major`,`stdunt_id`) values ('英语',5);
等同于
等同于
INSERT INTO `stdunt`(`name`,`major`,`stdunt_id`) values(null,'英语',5);
搜寻资料
SELECT * FROM `stdunt` ;
// * 代表全部 这是搜寻这个表的全部资料
第四节
constraints //限制,约束
CREATE TABLE student(
`student_id` INT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL, //(意思是这一列值不可以为空)
`major`VARCHAR(20) UNIQUE, // (这一列值要是唯一的)
);
//还可以写default表示预设
例:
CREATE TABLE student(
`student_id` INT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL,
`major`VARCHAR(20) DEFAULT '历史', // (如果在新增资料时,没有声明 ”major“ 这个属性,就会变成预设值“历史”)
);
CREATE TABLE student(
`student_id` INT auto_increment,//添加属性是不需要写,会直接自动加一
`name` VARCHAR(20) ,`major`VARCHAR(20) , };
第五节 修改删除资料
SET SQL_SAFE_UPDATES=0;
//关闭自动更新
!!!关闭后才行
UPDATE `stdunt`
SET `major` = '英语文学'
WHERE `major` = '英语';
//可以用 and or
不加 “WHERE”
例:
UPDATE `stdunt`
SET `major` = '英语文学'
结果:major 全部显示英语文学
删除资料
DELETE FROM `stdunt`
WHERE `stdunt_id`=4;
//stdunt_id=4的资料就删掉了
第六课 如何搜寻资料
SELECT `name` , `major` FROM `stdunt`;
//从stdunt的表格中取得这两样属性
全部都要就写 *
排序
SELECT *
FROM `stdunt`
ORDER BY `score`;
//把stdunt这个表格 按照’score’进行排序 把所有属性全取出来
这是由低到高
!!如果从高到低就在分号前加上DESC
限制传输资料
SELECT *
FROM `stdunt`
LIMIT 3;
//只传输前3个资料
//!!可以和排序条件判断一起用
// 在最后面
条件判断
SELECT *
FROM `stdunt`
WHERE `major`='英语';
//where是条件判断 判断major为英语的资料显示出来
两条语句相等
WHERE `major`='英语 OR `major`='历史' OR `major`='化学' ;
WHERE `major` IN ('英语,'历史','化学');
聚合函数
aggregate functions
select count(`xxx`) from `xxx`;
取得xxx的属性在xxx的表格中有几笔资料
平均就把 count 换成 avg
sum 总和
max 最大
min 最小
wildcards 万用字源
% 代表多个字节
_ 代表一个字节
select *
from `xxx`
where `` like '%333';
//选出尾号333的属性
// %333% 中间有333的
union 合集
两个搜寻中间加一个 union 就可以
限制:前后属性数量要一致
合并资料类型一样 不能一个整数一个字符串
join 连接
select *
from`xxx`
join `sss`
on `aaa` =`bbb`;
//将xxx的aaa和sss的bbb的属性连接并将表格全部显示
// left join 条件不成立 左边表格资料也能传输 但右边必须成立
right join 相反
子查询 subquery
查询语句中插入另一个查询语句 //套娃
on delete cascade //右边对应不上左边就把删掉
on delete set null //把左边置为null
限制:前后属性数量要一致
合并资料类型一样 不能一个整数一个字符串
join 连接
select *
from`xxx`
join `sss`
on `aaa` =`bbb`;
//将xxx的aaa和sss的bbb的属性连接并将表格全部显示
// left join 条件不成立 左边表格资料也能传输 但右边必须成立
right join 相反
子查询 subquery
查询语句中插入另一个查询语句 //套娃
on delete cascade //右边对应不上左边就把删掉
on delete set null //把左边置为null