基于SQLyog的数据库基础语句梳理

由于时间问题,本人的案例图片未插入,敬请谅解!
数据库操作语句梳理
1.DDL语句
[数据定义语言]:数据库的创建/删除,数据表的创建/删除…
1.1.创建数据库
语法:
CREATE DATABASE “数据库名称”;
描述:
创建数据库
案例:

1.2.删除数据库
语法:
DROP DATABASE “数据库名称”;
描述:
删除指定数据库
案例:

1.3.修改数据库
此处略去修改数据库名称,尽量不要改,就如首都不能随便迁都!
1.4.退出数据库
语法:
exit
描述:
退出数据库
案例:

1.5.查看数据库
语法:
Show database;
描述:
查看当前数据库中,都有哪些数据库
案例:

1.6.进入数据库
语法:
mysql -u root -p
描述:
命令行进入数据库
案例:

1.7.数据库指定命令:use
语法:
use py1807a
描述:
需要用哪个数据库就指定哪个数据库
案例:

(命令行)
1.8.创建表格
语法:
create table [if not exists] student(
Id int comment “学生编号”,
name varchar(20) comment “学生姓名”,
age int comment “学生年龄”
);
描述:
创建一个student表格
案例:

1.9.查看表格
语法:
Show tables;
描述:
查看指定数据库的表格
案例:

1.10.查看表格信息
语法:
desc 表格名称;
描述:
查看表格信息
案例:

1.11.查看表格的创建信息
语法:
show create 表格名称;
描述:
查看表格的创建信息
案例:

1.12.修改表格
1.12.1.表格重命名
语法:
alter table tab_name
Rename to new_table_name;
描述:
表格的重命名
案例:

1.12.2.表中修改列名称
语法:
Alter table table_name
Change column dname sname varchar(20);
描述:
表中修改列的名称
案例:

1.12.3.表中删除一列
语法:
Alter table table_name drop column age;
描述:
删除表格中名称为age的一列
案例:

1.13.删除表格
语法:
drop table [if exists] stu;
描述:
删除指定(stu)数据表
案例:

2.DML语句
[数据的操作语言]:表中数据的增删改查操作
2.1.INSERT语句
语法:
INSERT INTO dept(id,dname,darea,regtime)
VALUES(5,"预留级","研发七","2018-8-28");
或者 insert into dept values(5,"预留级","研发七","2018-8-28");
描述:
给表中插入数据
案例:

另一种插入方式:

另外:

在数据库表格栏创建表即可!

2.2.UPDATE语句
语法:
UPDATE dept SET dname="留班查看" WHERE id=5;
描述:
将id=5的一行的dname对应的值改为留班查看
案例:

2.3.DELETE语句
语法:
DELETE FROM dept WHERE id=5;
描述:
将id=5的一行删除
案例:

2.4.SELECT语句
2.4.1.全表查询
语法:
select * from 表名称;
描述:
查询指定表中的所有数据
案例:

2.4.2.单条件查询
语法:
SELECT * FROM dept WHERE id =3;
SELECT * FROM dept WHERE dname="组长"
描述:
查询id=3的一行/查询dname=“组长”的一列
案例:

2.4.3.多条件查询:并且|或者
And:
语法:
SELECT * FROM dept WHERE id=1 AND dname="行政";
SELECT * FROM dept WHERE id=1 AND dname="组长";
描述:
查询id=1而且dname=”行政”的数据。
两个条件有一个为假,则为假,只有两个条件全为真才为真。
后一条语句不执行
案例:

Or:
语法:
SELECT * FROM dept WHERE id =1 OR dname="组长";
SELECT * FROM dept WHERE id =1 OR id =2;
描述:
查询表中id=1或者dname=”组长”的数据;
查询表中id=1或者id=2的数据
案例:

2.4.4.比较查询
语法:
SELECT * FROM dept WHERE id>3;
描述:
查询表中id大于3的所有数据
案例:

2.4.5.模糊查询
%:匹配任意字符0~n个
语法:
SELECT * FROM dept WHERE dname LIKE "%长/%%";
描述:
查询与”长%“字匹配的任意字符0~n个,/为转义字符。
案例:

:匹配任意一个字符
语法:
SELECT * FROM dept WHERE dname LIKE "
员";
描述:
查询与”员“字匹配的一个字符
案例:

2.4.6.空值查询
语法:
SELECT * FROM dept WHERE dname IS NULL OR darea IS NULL;
SELECT * FROM dept WHERE dname IS NOT NULL AND darea IS NOT NULL;
描述:
查询dname为空或者darea为空的数据
查询dname不为空而且darea不为空的数据
案例:

2.4.7.范围查询
语法:
SELECT * FROM dept WHERE darea IN ("研发七","研发六");
描述:
查询表中在darea(研发六和研发七)中的数据
案例:

2.4.8.范围查询:区间查询
语法:
Select * from dept where id between 2 and 8;
描述:
查询表中id在2到8之间的数据
案例:

2.4.9.排序查询
语法:
SELECT * FROM dept ORDER BY id;
SELECT * FROM dept ORDER BY id DESC;
SELECT * FROM dept ORDER BY darea ASC;
描述:
按照id的顺序进行正序排列
按照id的顺序进行倒叙排列
按照darea的顺序进行笔画的顺序进行排列
可以合并一起查询
案例:

2.4.10.分页查询
语法:
SELECT * FROM dept LIMIT 0,2;#id 1,2
SELECT * FROM dept LIMIT 2,2;#id 3,4
描述:
id = count(page-1)
Page1:id =2
(1-1)=0,从id=0开始查询
Page2:id =2*(2-1)=2,从id=2开始查询
所说的id不是自己输入的,而是系统默认的id=0就是第一行
案例:

2.4.11.聚合函数
语法:
SELECT AVG(id) FROM dept;
SELECT COUNT(*) FROM dept;#对所有数据进行查询,建议不要使用
SELECT COUNT(1) FROM dept;#指定其中的某一列查询
SELECT MAX(id) FROM dept;
SELECT MIN(id) FROM dept;
SELECT SUM(id) FROM dept;
描述:
avg() 求取指定列的平均值
count() 求取指定列的数据总数量
max()求取指定列中数据的最大值
min()求取指定列中数据的最小值
sum()求取指定列中数据的和

案例:

2.4.12.指定列查询
语法:
SELECT dname,darea FROM dept;
描述:
查询dept表中dname,dareae两列
案例:

2.4.13.查询数据剔重
语法:
SELECT DISTINCT darea FROM dept;
描述:
select distinct 列 from 表名称,查询数据表中指定列-所有不重复的数据,每个数据只能出现一次
案例:

2.4.14.分组查询
语法:
SELECT COUNT(1),darea FROM dept GROUP BY darea;
描述:
从表中按照darea进行分组,查询每组数据出现次数的总和。
案例:

语法:
SELECT COUNT(1),darea FROM dept GROUP BY darea HAVING darea IS NOT NULL;
描述:
从表中按照地区进行分组,查询每组数据出现次数的总和,并且剔除darea列中值为NULL的一列!
案例:

2.4.15.关于查询的疑问
SELECT
指定查询列
[FROM 表名称
(1)[WHERE 条件]
(2)[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
(3)[HAVING 分组条件]
(4)[ORDER BY {col_name | expr | position}
[ASC | DESC] , ...]
(5)[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[FOR UPDATE | LOCK IN SHARE MODE]]

2.5.数据库:多表关联查询
2.5.1.直接查询
语法:
SELECT * FROM emp,dept;
描述:
两张表联合查询,emp中行数与dept中行数的成绩:m*n
案例:

2.5.2.关联查询
语法:
SELECT * FROM emp,dept WHERE emp.dept_id = dept.id;
select * from emp e,dept d where e.dept_id=d.id
扩展:SELECT * FROM emp WHERE dept_id IN (2,3);
描述:
查看emp表中dept_id和dept表中id相同的数据
扩展:查询单表中dept_id这个属性值在(2,3)范围内的数据
扩展内容与上述(2.4.7)范围查询方法一样
案例:

2.5.3.子查询
1)单行子查询
语法:
SELECT * FROM emp
WHERE dept_id = (SELECT id FROM dept WHERE dname = "班长");
描述
从emp表中查询dept_id在dept表中查询dname为(班长)的id ->返回值为(2)中的数据
emp表中dept_id = 2的只有一列
案例:

2)多行子查询
语法:
SELECT * FROM emp
WHERE dept_id IN
(SELECT id FROM dept WHERE dname IN("班长","组长"));
SELECT id FROM dept WHERE dname IN("班长","组长")
描述:
从emp表中查询dept_id在 dept表中查询dname为(“班长和组长”)的id——>返回值为(2,3,6,7,9)中的数据
因为emp表中dept_id只有(1,2,3)三个数据,所以只能查到(2,3)
从dept表中查询dname为(“班长和组长”)的id——>返回值为(2,3,6,7,9)
案例:

2.5.4.连接查询
1)内连接查询【扩展】
2)外连接查询
a)左外连接查询
语法:
SELECT * FROM dept d LEFT JOIN emp e ON d.id = e.dept_id;
描述:
以dept表为主emp表在右进行查询,查询dept中的id与emp中的dept_id相同的数据,
而且在dept表中的其他数据也全部查询出来,emp中没有与它匹配的值全为NULL。
案例:

b)右外连接查询
语法:
SELECT * FROM dept d RIGHT JOIN emp e ON d.id = e.dept_id;
描述:
以emp表为主dept表在左进行查询,查询dept中的id与emp中的dept_id相同的数据,
而且在emp表中的其他数据也全部查询出来,dept表中没有与它匹配的值全为NULL。
案例:

3)全连接查询【扩展】
4)扩展:hash查询

你可能感兴趣的:(基于SQLyog的数据库基础语句梳理)