MYSQL的学习整理

创建数据库

database后面写 库的名字

CREATE DATABASE learn;

创建表

CREATE TABLE people(
id INT(20) AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
age INT(20) NOT NULL,
PRIMARY KEY (id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
  • 设置表名CREATE TABLE people
  • 设置column的名字 以及对应的类型,属性(主键?null?自增?)例如:id INT(20) AUTO_INCREMENT
  • 设置引擎与charset ENGINE=INNODB DEFAULT CHARSET=utf8;

基本的select,insert,update,delete的使用

  • select 列名称 from 表名称;
  • select * from 表名称; *表示选取全部列
  • select 的输出结果集还可以被select,嵌套的使用select
  • insert into 表名称 values(value1,value2,…); 全部列一一对应插入值
  • insert into 表名称(column1,column2,…) values(value1,value2,…);自定义要插入的列的数值
  • update 表名称 set(column1=value1,column2=value2,…) where condition;(condition 就是 条件 像 name=‘jason’ 找到name是jason的记录去修改column1=value1,column2=value2,…)
  • update 表名称 set 列名称=condition; 像update coins set side=if(side='p','n','p'); 用到了if的判断,有点像Java的三元判断语句,update coins set side = case when side = 'p' then 'n' when side = 'n' then 'p' end
    或者是case来代表状态,这都是update可以用的去更新数据的一种方式
  • delete from 表名称 where 列名称=列名称下的某条记录值;这个与select有点像。

稍微进阶一点,多表联查用到join,模糊查询用到like与通配符

多表联查

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
主要是每一个表都有一个主键,这个主键是不可重复的,标记了每个记录的独一无二,如果id是主键,那即使name是重复的,还是可以通过你独有的id查询到你的的记录,通过这个表的主键,当在另外一个表有表示这个主键列名的意思,就可以让俩个表进行关联了,举个例子,教师表,课程表,教师表的id是主键,课程表有个列名叫teacher_id,就可以通过教师表的id与课程表的teacher_id 进行关联,从而进行两个表的联合

  • JOIN: 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行

注意inner join和 join是一样的

select name from students where name not in 
(select s.name from students s 
join recording r on r.student_id=s.id
join companies c on c.id=r.company_id
where c.name='Alibaba');

这是一个三表联查,将三个表的数据联系到一起,可以看出他们是通过主键来进行联系的,这里面是一个select的一个嵌套,里面是个三表联查的结果集,返回的是投递了Alibaba公司简历的学生名字。根据上面join的不同含义,主要了解为什么有的写join ,有的写left join…
like 操作符

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

pattern就是通配符的应用

  • % 代表零个或多个字符
  • _ 代表一个字符
  • [charlist] 代表字符列中任意一个字符
  • [ ^charlist ]或者[ !charlist ] 代表不在字符列的任意一个字符

稍微需要理解一下的是后面两个
像下面这个 从Persons表中找到Ctiy这个列中 以A 或L 或 N 开头的数据,后面%表示任意字符

SELECT * FROM Persons
WHERE City LIKE '[ALN]%'

那[ !charlist ] 这个的使用也就很明显了,找到不是 A L N 这三个里面的任意一个字母开头的City记录

in操作符

IN 操作符允许我们在 WHERE 子句中规定多个值。

SELECT column_name
FROM table_name
WHERE column_name IN (value1,value2,...);

只要name在(value1,value2,…)这里面,就会被挑出来
例如在user表里面找name是在这里面的值(‘Jason’,‘Tom’)的记录

SELECT NAME FROM USER WHERE NAME IN ('Jason','Tom');

在这里插入图片描述
在这里插入图片描述

between用法

BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。

  • 如果是查看名字的字典排序,要用between,而不是比较运算符
SELECT column_name
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

union与union all

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

  • 需要注意的是union选取的是两表中不重复的值

union all 与union一样,用于合并两个或多个 SELECT 语句的结果集,只是重复的值也会选取

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值