• 新版网站前后台即将上线,2019年将致力于提高文章质量,加大原创力度,打造一个更加舒适的阅读体验!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 新版网站前后台即将上线,2019年将致力于提高文章质量,加大原创力度,打造一个更加舒适的阅读体验!
  • 如果有任何体验不佳的地方,欢迎向客服反馈!

mysql总结(一)

一、数据库管理
1.1 查询所有数据库
mysql> show databases;
+——————–+
| Database           |
+——————–+
| information_schema |     — mysql 元数据,基础数据
| mysql              |    –mysql 配置数据库,其中包含用户信息。(用户名和密码,权限管理)
| performance_schema |    –mysql 数据库软件的运行数据,日志信息,性能数据
| test               |     –测试数据库。空的
+——————–+
4 rows in set (0.00 sec)
1.2 创建数据库
mysql> create database day15       — 指定默认字符集创建数据库
   -> default character set utf8
   -> ;
Query OK, 1row affected(0.00 sec)
1.3 查看数据库的默认字符集
mysql> show create database day15;
+———-+—————————————————————-+
| Database | Create Database                                                |
+———-+—————————————————————-+
| day15    | CREATE DATABASE `day15`/*!40100 DEFAULT CHARACTER SET utf8 */ |
+———-+—————————————————————-+
1 row inset (0.00 sec)
1.4 删除数据库
mysql> drop database day15;
Query OK, 0 rows affected (0.01 sec)
1.5 修改数据库
mysql> alter database day15 default character set gbk;
Query OK, 1 row affected (0.00 sec)

二、表的管理

2.1 查看所有表
mysql> show tables;
+—————–+
| Tables_in_day15 |
+—————–+
| student         |
+—————–+
1 row in set (0.00 sec)
2.2 创建表
mysql> create table student (
   -> sid  int,
   -> sname varchar(20) ,
   -> sage int
   -> );
Query OK, 0 rows affected (0.01 sec)
2.3 查看表结构
mysql> desc student;
+——-+————-+——+—–+———+——-+
| Field | Type        | Null | Key | Default | Extra |
+——-+————-+——+—–+———+——-+
| sid   | int(11)     | YES  |     | NULL    |       |
| sname | varchar(20) | YES  |     | NULL    |       |
| sage  | int(11)     | YES  |     | NULL    |       |
+——-+————-+——+—–+———+——-+

3 rows in set (0.01 sec)
2.4 删除表
mysql> drop table student;
Query OK, 0 rows affected (0.01 sec)
2.5 修改表
        2.5.1 添加字段
mysql> alter table student add column sgender varchar(2);
Query OK, 0rows affected (0.03 sec)
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 增加数据

— 插入所有字段。一定依次按顺序插入
INSERTINTO student VALUES(1,‘张三’,‘男’,20);
— 注意不能少或多字段值
— INSERT INTO student VALUES(2,’李四’,’女’);
— 插入部分字段
INSERTINTO student(id,NAME) VALUES(2,‘李四’);

        2.6.2 修改数据

— 修改所有数据(建议少用)
UPDATE student SET gender=‘女’;
— 带条件的修改(推荐使用)
UPDATE student SET gender=‘男’WHEREid=1; — 修改 id 为 1 的学生,修改性别为男
— 修改多个字段,注意: SET 字段名=值,字段名=值,….
UPDATE student SET gender=‘男’,age=30WHEREid=2;

2.6.3 删除数据

— 删除所有数据(建议少用)
DELETEFROM student;
— 带条件的删除(推荐使用)
DELETEFROM student WHEREid=2;
–  另一种方式
— delete from: 可以全表删除      1)可以带条件删除  2)只能删除表的数据,不能删除表的约束     3)使用 delete from 删除的数据可以回滚(事务)
— truncate table: 可以全表删除   1)不能带条件删除 2)即可以删除表的数据,也可以删除表的约束 3)使用 truncate table 删除的数据不能回滚
TRUNCATETABLE student;

2.7 增删改数据
2.7.1 查询所有列
SELECT * FROM student;
2.7.2 查询指定列
SELECTid,NAME,gender FROM student; 
2.7.3 查询时添加常量列
— 需求: 在查询 student 表时添加一个班级列,内容为“java 就业班”
SELECTid,NAME,gender,age,‘java 就业班’AS‘年级’  FROM student;
2.7.4 查询时合并列
— 需求: 查询每个学生的 servlet 和 jsp 的总成绩
SELECTid,NAME,(servlet+jsp) AS‘总成绩’FROM student;
— 注意:合并列只能合并数值类型的字段
SELECTid,(NAME+servlet) FROM student;
2.7.5 查询时去除重复记录
— 需求: 查询学生的性别     男 女
SELECTDISTINCT gender FROM student;
— 另一种语法
SELECTDISTINCT(gender) FROM student;
— 需求: 查询学生所在的地区
SELECTDISTINCT address FROM student; 
2.7.6 条件查询
— 2.7.1 逻辑条件: and(与)     or(或)
— 需求: 查询 id 为 2,且姓名为李四的学生
SELECT * FROM student WHEREid=2ANDNAME=‘李四’; — 交集
 
— 需求: 查询 id 为 2,或姓名为张三的学生
SELECT * FROM student WHEREid=2ORNAME=‘张三’; — 并集
 
— 2.7.2 比较条件: >   <   >=  <=  =  <>(不等于)     between and (等价于>= 且 <=)
— 需求: 查询 servlet 成绩大于 70 分的学生
SELECT * FROM student WHERE servlet>70;
 
— 需求: 查询 jsp 成绩大于等于 75,且小于等于 90 分的学生
SELECT * FROM student WHERE jsp>=75AND jsp<=90;
— 另一个语法
SELECT * FROM student WHERE jsp BETWEEN75AND90; — (包前包后)
 
SELECT * FROM student WHERE gender<>‘男’;
 
 
— 2.7.3 判空条件(null 空字符串):  is null / is not null / =”  / <>”
— 需求: 查询地址为空的学生(包括 null 和空字符串)
— null vs  空字符串
— null:表示没有值
— 空字符串:有值的!
— 判断 null
SELECT * FROM student WHERE address ISNULL ;
— 判断空字符串
SELECT * FROM student WHERE address=;
 
SELECT * FROM student WHERE address ISNULLOR address=; — (包括 null 和空字符串)
 
— 需求: 查询有地址的学生(不包括 null 和空字符串)
SELECT * FROM student WHERE address ISNOTNULLAND address<>;
 
— 2.7.4 模糊条件: like
— 通常使用以下替换标记:
— % : 表示任意个字符
— _ : 表示一个字符
— 需求: 查询姓‘张’的学生
SELECT * FROM student WHERENAMELIKE‘李%’;
 
— 需求: 查询姓‘李’,且姓名只有两个字的学生
SELECT * FROM student WHERENAMELIKE‘李 _’;
2.7.7 聚合查询
— 常用的聚合函数: sum()  avg()  max()  min()  count()
— 需求:查询学生的 servlet 的总成绩 (sum() :求和函数)
SELECTSUM(servlet) AS‘servlet 的总成绩’FROM student;
 
— 需求: 查询学生的 servlet 的平均分
SELECTAVG(servlet) AS‘servlet 的平均分’FROM student;
 
— 需求: 查询当前 servlet 最高分
SELECTMAX(servlet) AS‘最高分’FROM student;
 
— 需求: 查询最低分
SELECTMIN(servlet) AS‘最低分’FROM student;
 
— 需求: 统计当前有多少学生(count(字段))
SELECTCOUNT(*) FROM student;
 
SELECTCOUNT(id) FROM student;
 
— 注意:count()函数统计的数量不包含 null 的数据
— 使用 count 统计表的记录数,要使用不包含 null 值的字段

SELECTCOUNT(age) FROM student;
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 关键字
SELECT gender,COUNT(*) FROM student WHEREGROUPBY gender HAVINGCOUNT(*)>2;


    丨极客文库, 版权所有丨如未注明 , 均为原创丨
    本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
    转载请注明原文链接:mysql 总结(一)
    喜欢 (0)
    [247507792@qq.com]
    分享 (0)
    勤劳的小蚂蚁
    关于作者:
    温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

    欢迎 注册账号 登录 发表评论!

    • 精品技术教程
    • 编程资源分享
    • 问答交流社区
    • 极客文库知识库

    客服QQ


    QQ:2248886839


    工作时间:09:00-23:00