1. 管理mysql的命令

- 列出mysql中所有的数据库: show databases;

- 使用某个数据库: use database_name; e.g use mysql;

- 列出当前数据库的所有表: show tables;

- 列出表中的列的信息: show tables from table_name;   [会列出column的数据类型,是否为主键,约束,等等信息]

- 显示数据表中的详细索引信息,包括primary key: show index from table_name;

- Msql 创建数据库 : create databse 数据库名字;

-  删除数据库 : drop database 数据库名;

 

2. Mysql 的数据类型

2.1  日期和时间类型

DATA: 格式 YYYY-MM-DD   用作日期

TIME : 格式 HH:MM:SS   用作时间或者持续时间

YEAR: 格式 YYYY    用作年份值

DATETIME : 格式 YYYY-MM-DD HH:MM:SS  用作混合日期和时间值

TIMESTAMP:  YYYYMMDDHHMMSS    用作混合日期和时间之,时间戳

 

2.2 数据类型和字符串类型

 

3. Mysql 数据表操作

3.1 创建表

create table 表名(列名1 列的数据类型 [关键字],

                   列名2 列的数据类型 [关键字],primary key(列命1,列名2));

关键字有:

NOT NULL > 不能为空

AUTO_INCREMENT > 自增,一般用于主键字段

 

3.2 删除数据表

drop table 表名;

 

3.3 向表中插入数据

insert into table 表名(列名1,列名2...) VALUES (数据1,数据2.....)

如果数据是字符类型,内容必须用单引号或者双引号括起来

 

4. Mysql查询

表:

例如:

表一:student表

+----+-----------+-----+--------------+
| id | name | age | school |
+----+-----------+-----+--------------+
| 1 | 张霄儿 | 20 | 北京大学 |
| 2 | kevin | 30 | 复旦大学 |
| 3 | claire | 30 | 复旦大学 |
+----+-----------+-----+--------------+

表二:company表

| id | name |
+----+-----------+
| 1 | baidu |
| 2 | alibaba |
| 3 | telent |
| 4 | shinetech |
+----+-----------+

表三:student_score表

+----+------------+--------+-------+
| id | student_id | course | score |
+----+------------+--------+-------+
| 1 | 1 | 数学 | 100 |
| 2 | 1 | 语文 | 100 |
| 3 | 2 | 数学 | 90 |
| 4 | 2 | 语文 | 90 |
| 5 | 3 | 数学 | 89 |
| 6 | 3 | 语文 | 79 |
| 7 | 4 | 语文 | 98 |
| 8 | 4 | 数学 | 98 |
+----+------------+--------+-------+

 

4.1  直接用逗号连接多个表查询

例如: select * from 表1,表2,表3

这种方式查询将会查询出所有表的笛卡尔积,例如,表1,表2,表3分别有2条数据,那么查出来的结果是2*2*2=8个结果。 但是如果其中有一个表中无任何内容, 则查询返回结果也是空。

 

4.2 limit以及offset关键字

select * from 表 [where 条件] [limit 数字] [offset 数字]

limit 表示限制显示查询的记录条数,offset表示显示查询结果的偏移量。

例如:select * from student,student_score limit 4, offset 1;

 

4.3 UNION查询操作符

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
View Code

DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL: 可选,返回所有结果集,包含重复数据。

描述: union只能用于一下情况:

第一个select和第二个select语句的的select columns一致的时候, 将两个表的查询结果进行合并。默认会消除重复行。

例如:

进行UNION查询:

select id,name from student 
UNION 
select id,name from company;
View Code

 

4.4  查询分组

GROUP BY 语句根据一个或多个列对结果集进行分组。
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数、

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
View Code

在使用group by的时候,select后面的列只能出现两种列:

第一: group by 后面的那个列

第二: function(column) function使用的列

使用 having可以对已经分组的数据进行类似于where的条件过滤

使用with rollup可以对已经分组了的数据再进行统计,sum,avg,count

例如:

#查询班上总分大于等于180分的学生
select student_id,sum(score) from student_score 
group by student_id
having sum(score)>180;
#查询班上总分大于180且每一门功课大于等于90分的学生
select student_id,sum(score) from student_score where student_id not in (select distinct student_id from student_score where score < 90)
group by student_id having sum(score)>180;

对比这两个SQL, 如果要对分组里面的行的数据再进行判断,这时候就需要使用子查询了。

 

 

 

4.  SQL select语句执行的顺序

以下流程图来自于: https://blog.csdn.net/bitcarmanlee/article/details/51004767

 

 

5. Mysql 更新表数据

update 表名 set 列名 = 新的值,列命1=新的值 [where 条件]

如果不指定where条件,则更新所有的列,如果指定where字段,则更新满足条件的列

 如果需要批量修改某一个字段可以使用replace语法:

update 表名 set 列名=replace (列名,‘老的值‘,’新的值‘) [where 条件];

 

6. 删除表数据

delete from 表名 [where 条件];

如果没有指定where条件,则删除该表中的所有数据

posted on 2018-06-27 17:21  srialy  阅读(103)  评论(0编辑  收藏  举报