MySQL基础命令

MySQL基础命令

本文用于学习与交流,来自该视频的笔记

https://www.bilibili.com/video/BV1t54y1W7TR?spm_id_from=333.788.b_636f6d6d656e74.12

一、数据库先关的常用命令

  1. 链接数据集:mysql -u root -p(密码)
  2. 查看数据库:show databases
  3. 创建数据库:create database dbname
  4. 切换数据库:use dbname
  5. 查看所有的表:show tables
  6. 修改数据库:alter database dbname character set utf8
  7. 删除数据库:drop database dbname

二、数据类型

int:整型

double:浮点型,double(6,3),最长长度是6位,小数点后3位

char:固定长度字符串类型,char(10),不足10位补足10位

varchar:可变长度字符串,同char

text:字符串,适用于大文本内容,例如博客内容等。

data:日期类型yyyy-MM-dd

三、表相关的常用命令

1.创建表:create table tablename(id int,name varchar(20),sex char(1));

2.查看表信息:desc tbname;

3.查询表数据:select * from tbname;

4.插入数据:insert into tbname values(1,‘小明’,0);

5.修改数据:update tbname set name = ‘小明’,age = 2 where id = 3;

6.删除数据:delete from tbname where id =3;

7.修改表:alter table tbname add achievement double(5,2);

8.修改表:atler table tbname change name username varchar(20);

9.修改表:alter table tbname drop name;

10.删除表:drop table tbname;

四、注释

单行注释:–

多行注释:/* */

五、SQL的分类

DDL(Data Definition Language):数据定义语言,用来操作数据库对象:库、表、列等;

create、alter、drop;用于数据库创建阶段。

DML(Data Manipulate Language):数据操作语言,用来增删改数据库中的数据;

insert、update、delete;用于系统运行阶段

DQL(Data Query Language):数据库查询语言,用来查询数据库中的数据。

select

六、简单的查询

  1. SELECT * FROM student;
  2. SELECT student, achievement FROM students;
  3. SELECT student_name,achievement,age+18 FROM students; --不影响数据
  4. SELECT student_name,achievement,age+18 AS 18_years_later FROM students; --as 设置别名
  5. SELECT student_name,achievement,age,age+18 AS ‘18年以后’ FROM student;

七、按条件查询

  1. SELECT * FROM student WHERE id=1; – where设置条件
  2. SELECT * FROM student WHERE student_name = ‘xiaoming’ AND age = 18; – AND连接条件关系
  3. SELECT * FROM students WHERE age > 10; – <>不等于,>大于,<小于
  4. SELECT * FROM students WHERE age BETWEEN 3AND 15;
  5. SELECT * FROM students WHERE achievement IS NULL;
  6. SELECT * FROM students WHERE age = 3 OR age = 18;
  7. SELECT * FROM students WHERE age IN(3, 18, 15);
  8. select * from tbname where name like ‘%x%’; – 字段包含x的内容

八、排序

  1. SELECT * FROM students ORDER BY age; --升序
  2. SELECT * FROM students WHERE achievement>60 ORDER BY age; --先写条件,再写排序
  3. SELECT * FROM students ORDER BY age ASC; --升序
  4. SELECT * FROM students ORDER BY age ADESC; --降序
  5. SELECT * FROM students ORDER BY age, achievement;

九、常用函数

  1. SELECT LOWER(student_name) FROM students; – 大写转小写
  2. SELECT UPPER(student_name) FROM students; – 小写转大写
  3. SELECT SUBSTR(student_name, 5, 2) FROM students; --截取字符串,从第五个字母开始截取两个字母
  4. SELECT student_name FROM students WHERE SUBSTR(student_name, 5, 1) = “M”;
  5. SELECT student_name, LENGTH(student_name) FROM students;
  6. SELECT student_name, IFNULL(achievement,0) FROM students;

十、聚合函数

  1. SELECT SUM(achievement) FROM students; --计算总成绩
  2. SELECT AVG(achievement) FROM students; --求平均成绩
  3. SELECT MAX(age) FROM students; --求最大年龄
  4. SELECT MIN(age) FROM students; --求最小年龄
  5. SELECT COUNT(*) FROM students; --查询学生数量
  6. SELECT COUNT(achievement) FROM students; – 有成绩学术的综合
  7. SELECT COUNT(achievement) FROM students WHERE sex = 0; – 查询有成绩的男同学
  8. SELECT DISTINCT student_name FROM students; – 去除重复数据
  9. SELECT COUNT(DISTINCT student_name) FROM students; – 统计去除重复后的总数。
  10. SELECT sex, COUNT(*) FROM students GROUP BY sex; --查询不同性别的人数
  11. SELECT team_id, SUM(achievement) FROM students – 按小组计算总成绩
  12. SELECT team_id, SUM(schievement) FROM students GROUP BY team_id HAVING SUM(schievement) > 100; --总成绩大于100的小组

总结:

select

​ xxxx

from

​ xxxx

where

​ xxxx

group by

​ xxxx

having

​ xxxx

order by

​ xxxx

limit

十一、limit关键字

限制查询结果的数量

十二、约束条件分类

非空约束

创建表时,保证字段的值不能为空;

team_name VARCHAR(20) NOT NULL;

默认约束

保证字段即使不插入数据,也会有一个默认值;

team_name VARCHAR(20) DEFAULT ‘无名队’

主键约束

保证不为空,且唯一

id int primary key auto_increment;

外键约束

限制两个表的关系,一个表的外键必须为另一个表的主键,可以为空。

FOREIGN KEY(team_id) REFERENCES teams(id); --定义一对多关系

十三、表之间的关系

1. 一对多关系

一个小组对应多个学生;一个学生只能在一个小组;

主键

数据的唯一字段,不能重复。

外键

对应另一个表的主键

2. 多对多关系

一个学生选择多个老师的课程,一个老师教多个学生。

**创建一个关联表来实现多对多关系。 **

3. 一对一关系

并不常见,因为大部分一对一关系的数据都放在一个表中存储;

可能情况:隔离表的域部分数据,为了隐藏或是作为临时数据定期清空。

十四、查询扩展

多表查询

SELECT s.student, t.team_name FROM student s, team t WHERE s.team_id=t.id;

– 用于查询学生姓名和对应的班级名称(不推荐)

链接查询的分类

  1. 内连接:获取两个表交集的所有内容

SELECT s.student_name, t.team_name FROM student s INNER JOIN teams t ON s.team_id = t.id;

  1. 左外连接:左表全部+右表对应内容

SELECT s.student, t.team name FROM student s LEFT JOIN teams t ON s.team_id = t.id;

  1. 右外连接:右表全部+左表部分内容

SELECT s.student, t.team name FROM student s RIGHT JOIN teams t ON s.team_id = t.id;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值