mysql总结(一)

一、数据库管理

1.1查询所有数据库

mysql> show databases;

+--------------------+

Database

+--------------------+

information_schema-- mysql元数据,基础数据

mysql--mysql配置数据库,其中包含用户信息。(用户名和密码,权限管理)

performance_schema--mysql数据库软件的运行数据,日志信息,性能数据

test--测试数据库。空的

+--------------------+

4rowsinset (.00sec)

1.2创建数据库

mysql> create database day15 -- 指定默认字符集创建数据库

->defaultcharactersetutf8

-> ;

Query OK,1rowaffected(0.00sec)

1.3查看数据库的默认字符集

mysql> show create database day15;

+----------+----------------------------------------------------------------+

Database Create Database

+----------+----------------------------------------------------------------+

day15 CREATE DATABASE`day15`/*!40100 DEFAULT CHARACTER SET utf8 */

+----------+----------------------------------------------------------------+

1rowinset(0.00sec)

1.4删除数据库

mysql>drop database day15;

Query OK, 0 rows affected (0.01 sec)

1.5 修改数据库

mysql>alter database day15 default charactersetgbk;

Query OK, 1 row affected (0.00 sec)

二、表的管理

2.1查看所有表

mysql> show tables;

+-----------------+

Tables_in_day15

+-----------------+

student

+-----------------+

1rowinset (.00sec)

2.2创建表

mysql> create table student (

->sid int,

->sname varchar(20) ,

->sage int

-> );

Query OK,rows affected (0.01sec)

2.3查看表结构

mysql> desc student;

+-------+-------------+------+-----+---------+-------+

FieldTypeNullKeyDefaultExtra

+-------+-------------+------+-----+---------+-------+

sidint(11)YESNULL

snamevarchar(20)YESNULL

sageint(11)YESNULL

+-------+-------------+------+-----+---------+-------+

3rowsinset (.01sec)

2.4删除表

mysql>drop table student;

Query OK, 0 rows affected (0.01 sec)

2.5修改表

2.5.1 添加字段

mysql>alter table studentaddcolumn sgendervarchar(2);

Query OK,rowsaffected(0.03sec)

Records: 0 Duplicates: 0 Warnings: 0

2.5.2 删除字段

mysql>alter table student drop column sgender;

Query OK, 0 rows affected (0.03 sec)

Records: 0 Duplicates: 0 Warnings: 0

2.5.3 修改字段类型

mysql>alter table student modify column remark varchar(100);

Query OK, 0 rows affected (0.07 sec)

Records: 0 Duplicates: 0 Warnings: 0

2.5.4 修改字段名称

mysql>alter table student change column sgender gender varchar(2);

Query OK, 0 rows affected (0.03 sec)

Records: 0 Duplicates: 0 Warnings: 0

2.5.5 修改表名称

mysql>alter table student rename to teacher;

Query OK, 0 rows affected (0.01 sec)

2.6 增删改数据

2.6.1 增加数据

-- 插入所有字段。一定依次按顺序插入

INSERTINTOstudentVALUES(1,'张三','男',20);

-- 注意不能少或多字段值

-- INSERT INTO student VALUES(2,'李四','女');

-- 插入部分字段

INSERTINTOstudent(id,NAME)VALUES(2,'李四');

2.6.2 修改数据

-- 修改所有数据(建议少用)

UPDATEstudentSETgender='女';

-- 带条件的修改(推荐使用)

UPDATEstudentSETgender='男'WHEREid=1;-- 修改id为1的学生,修改性别为男

-- 修改多个字段,注意: SET 字段名=值,字段名=值,....

UPDATEstudentSETgender='男',age=30WHEREid=2;

2.6.3 删除数据

-- 删除所有数据(建议少用)

DELETEFROMstudent;

-- 带条件的删除(推荐使用)

DELETEFROMstudentWHEREid=2;

-- 另一种方式

-- delete from: 可以全表删除 1)可以带条件删除 2)只能删除表的数据,不能删除表的约束 3)使用delete from删除的数据可以回滚(事务)

-- truncate table: 可以全表删除 1)不能带条件删除 2)即可以删除表的数据,也可以删除表的约束 3)使用truncate table删除的数据不能回滚

TRUNCATETABLEstudent;

2.7 增删改数据

2.7.1 查询所有列

SELECT*FROMstudent;

2.7.2 查询指定列

SELECTid,NAME,genderFROMstudent;

2.7.3 查询时添加常量列

-- 需求: 在查询student表时添加一个班级列,内容为“java就业班”

SELECTid,NAME,gender,age,'java就业班'AS'年级'FROMstudent;

2.7.4 查询时合并列

-- 需求: 查询每个学生的servlet和jsp的总成绩

SELECTid,NAME,(servlet+jsp)AS'总成绩'FROMstudent;

-- 注意:合并列只能合并数值类型的字段

SELECTid,(NAME+servlet)FROMstudent;

2.7.5 查询时去除重复记录

-- 需求: 查询学生的性别 男 女

SELECTDISTINCTgenderFROMstudent;

-- 另一种语法

SELECTDISTINCT(gender)FROMstudent;

-- 需求: 查询学生所在的地区

SELECTDISTINCTaddressFROMstudent;

2.7.6 条件查询

-- 2.7.1 逻辑条件: and(与) or(或)

-- 需求: 查询id为2,且姓名为李四的学生

SELECT*FROMstudentWHEREid=2ANDNAME='李四';-- 交集

-- 需求: 查询id为2,或姓名为张三的学生

SELECT*FROMstudentWHEREid=2ORNAME='张三';-- 并集

-- 2.7.2 比较条件: > < >= = 且

-- 需求: 查询servlet成绩大于70分的学生

SELECT*FROMstudentWHEREservlet>70;

-- 需求: 查询jsp成绩大于等于75,且小于等于90分的学生

SELECT*FROMstudentWHEREjsp>=75ANDjsp

-- 另一个语法

SELECT*FROMstudentWHEREjspBETWEEN75AND90;-- (包前包后)

SELECT*FROMstudentWHEREgender'男';

-- 2.7.3 判空条件(null 空字符串): is null / is not null / ='' / ''

-- 需求: 查询地址为空的学生(包括null和空字符串)

-- null vs 空字符串

-- null:表示没有值

-- 空字符串:有值的!

-- 判断null

SELECT*FROMstudentWHEREaddressISNULL;

-- 判断空字符串

SELECT*FROMstudentWHEREaddress='';

SELECT*FROMstudentWHEREaddressISNULLORaddress='';-- (包括null和空字符串)

-- 需求: 查询有地址的学生(不包括null和空字符串)

SELECT*FROMstudentWHEREaddressISNOTNULLANDaddress'';

-- 2.7.4 模糊条件: like

-- 通常使用以下替换标记:

-- % : 表示任意个字符

-- _ : 表示一个字符

-- 需求: 查询姓‘张’的学生

SELECT*FROMstudentWHERENAMELIKE'李%';

-- 需求: 查询姓‘李’,且姓名只有两个字的学生

SELECT*FROMstudentWHERENAMELIKE'李_';

2.7.7 聚合查询

-- 常用的聚合函数: sum() avg() max() min() count()

-- 需求:查询学生的servlet的总成绩 (sum() :求和函数)

SELECTSUM(servlet)AS'servlet的总成绩'FROMstudent;

-- 需求: 查询学生的servlet的平均分

SELECTAVG(servlet)AS'servlet的平均分'FROMstudent;

-- 需求: 查询当前servlet最高分

SELECTMAX(servlet)AS'最高分'FROMstudent;

-- 需求: 查询最低分

SELECTMIN(servlet)AS'最低分'FROMstudent;

-- 需求: 统计当前有多少学生(count(字段))

SELECTCOUNT(*)FROMstudent;

SELECTCOUNT(id)FROMstudent;

-- 注意:count()函数统计的数量不包含null的数据

-- 使用count统计表的记录数,要使用不包含null值的字段

SELECTCOUNT(age)FROMstudent;

2.7.8 分页查询

-- 起始行从0开始

-- 分页:当前页 每页显示多少条

-- 分页查询当前页的数据的sql: SELECT * FROM student LIMIT (当前页-1)*每页显示多少条,每页显示多少条;

-- 需求: 查询第1,2条记录(第1页的数据)

SELECT * FROM student LIMIT 0,2;

-- 查询第3,4条记录(第2页的数据)

SELECT * FROM student LIMIT 2,2;

-- 查询第5,6条记录(第3页的数据)

SELECT * FROM student LIMIT 4,2;

-- 查询第7,8条记录 (没有记录不显示)

SELECT * FROM student LIMIT 6,2;

2.7.9 查询排序

-- 语法 :order by 字段 asc/desc

-- asc: 顺序,正序。数值:递增,字母:自然顺序(a-z)

-- desc: 倒序,反序。数值:递减,字母:自然反序(z-a)

-- 默认情况下,按照插入记录顺序排序

SELECT * FROM student;

-- 需求: 按照id顺序排序

SELECT * FROM student ORDER BY id ASC;

SELECT * FROM student ORDER BY id; -- 默认正序

SELECT * FROM student ORDER BY id DESC;-- 反序

-- 注意:多个排序条件

-- 需求: 按照servlet正序,按照jsp的倒序

SELECT * FROM student ORDER BY servlet ASC,jsp DESC;

2.7.10 分组查询

-- 需求: 查询男女的人数

-- 预期结果:

-- 男 3

--- 女 2

-- 1) 把学生按照性别分组(GROUP BY gender)

-- 2) 统计每组的人数(COUNT(*))

SELECT gender,COUNT(*) FROM student GROUP BY gender;

2.7.11 分组查询后筛选

-- 需求: 查询总人数大于2的性别

-- 1) 查询男女的人数

-- 2)筛选出人数大于2的记录(having)

--- 注意: 分组之前条件使用where关键字,分组之前条件使用having关键字

SELECTgender,COUNT(*)FROMstudentWHEREGROUPBYgenderHAVINGCOUNT(*)>2;

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222G0353J00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券