谷哥的小弟学后台(02)——MySQL

Posted 谷哥的小弟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谷哥的小弟学后台(02)——MySQL相关的知识,希望对你有一定的参考价值。

探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


版权声明


SQL简述

Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性

SQL的优点

  • 简单易学,具有很强的操作性
  • 绝大多数重要的数据库管理系统均支持SQL
  • 高度非过程化;用SQL操作数据库时大部分的工作由DBMS自动完成

SQL的分类

  • DDL(Data Definition Language)
    数据定义语言,用来操作数据库、表、列等;
    常用语句:CREATE、 ALTER、DROP
  • DML(Data Manipulation Language)
    数据操作语言,用来操作数据库中表里的数据;
    常用语句:INSERT、 UPDATE、 DELETE
  • DCL(Data Control Language)
    数据控制语言,用来操作访问权限和安全级别;
    常用语句:GRANT、DENY
  • DQL(Data Query Language)
    数据查询语言,用来查询数据
    常用语句:SELECT

在此,请注意区分DDL和DML:
它们两者的作用对象和级别不一样。DDL操作的对象是数据库,或者一张表,或者表中的某列;DML操作的是表里的数据。

在了解完这些基础知识之后,我们来依次详细学习DDL、DML、DCL、DQL


DDL

创建数据库

create database db1;

创建名字为db1的数据库

show create database db1;

查看刚才创建的数据库db1,结果如下:

| Database | Create Database
| db1          | CREATE DATABASE db1 /*!40100 DEFAULT CHARACTER SET utf8 /*

从这里可以看出,刚才创建的数据库采用的是utf8作为字符集。

当然,我们还可以在创建数据库时为其指定字符集

create database db2 character set gbk;

查询数据库

show databases;

查询出所有的数据库

删除数据库

drop database db2;

其实,从这也可以看出来创建数据库和删除数据库是非常类似的,只不过它们的关键是不同;前者使用的是create后者是drop

修改数据库

alter database db1 character set gbk;

将数据库db1的字符集修改为gbk

切换数据库

use db1;

表示现在开始使用数据库db1

查看当前使用的数据库

select database();

请注意该语句最后有个括号()

创建表

语法如下:

create table 表名(
          字段1 字段类型,
          字段2 字段类型,
          …
          字段n 字段类型
);

示例,创建一张员工表:

这里写图片描述

在此创建一张员工表,包含了员工的基本信息。

查看当前数据库中的所有表

show tables;

查看刚才创建的表

show create table employee;

查看表的字段信息

describe employee;

也可以简写为:

desc employee;

修改表的字符集

alter table employee character set gbk;

为表增加列

alter table employee add column photo blob;

为表添加了数据类型为blob的列photo

也可以简写为:

alter table employee add photo blob;

修改列的长度

alter table employee modify job varchar(170);

将表中job字段的长度修改为170

修改列的名称

alter table employee change name username varchar(100);

将表中原name改名为username

删除列

alter table employee drop photo;

删除表中的photo列

修改表的名字

rename table employee to user;

删除表

drop table user;


DML

DML用于对表中的数据进行增、删、改的操作。常用的语句有INSERT 、UPDATE、 DELETE

嗯哼,我们先创建一张表

create table employee(
           id int,
           username varchar(100),
           gender varchar(10),
           birthday date,
           salary float(10,2),
           entry_date date,
           resume text
);

插入操作:INSERT

INSERT的语法:

INSERT INTO 表名(列名1,列名2 …)VALUES(列值1,列值2…);

请注意:

  • 列名与列值的类型、个数、顺序要一一对应
  • 列值不要超出列定义的长度
  • 如果插入空值,请使用null
  • 插入的日期和字符需用引号括起来,例如:‘sun’、‘2016-09-04’

INSERT的示例:

INSERT INTO employee
(id,username,gender,birthday,salary,entry_date,RESUME)
VALUES (1,‘大泽玛利亚’,‘female’,‘1990-09-12’,20000.00,‘2010-11-22’,‘beauty’);

INSERT INTO employee
(id,username,gender,birthday,salary,entry_date,RESUME)
VALUES (2,‘武藤兰姐姐’,‘female’,‘1980-09-12’,30000.00,‘2000-12-12’,‘good’);

INSERT INTO employee
(id,username,gender,birthday,salary,entry_date,RESUME) VALUES
(3,‘井空苍妹妹’,‘female’,‘1987-07-28’,50000.00,‘2001-08-09’,‘great’);

当然,也可以批量插入数据:

INSERT INTO employee VALUES
(4,‘杉原杏璃’,‘female’,‘1992-04-01’,60000.00,‘2014-09-03’,‘very good’),
(5,‘佐佐木希’,‘female’,‘1993-05-09’,70000.00,‘2013-04-04’,‘very nice’),
(6,‘伊藤梅子’,‘female’,‘1995-11-07’,80000.00,‘2012-03-05’,‘very sexy’);

修改操作:UPDATE

UPDATE的语法:

UPDATE 表名 SET 列名1=列值1 , 列名2=列值2…WHERE 列名=值

UPDATE的示例:

UPDATE employee SET salary=88000;

将表中所有员工的salary修改为88000

UPDATE employee SET salary=99000 WHERE username=‘大泽玛利亚’;

将表中username为大泽玛利亚的员工的salary修改为99000

UPDATE employee SET salary=69000,birthday=‘1993-02-28’ WHERE username=‘井空苍妹妹’;

将表中username为井空苍妹妹的员工的salary修改为69000、birthday修改为1993-02-28

UPDATE employee SET salary=salary+1000 WHERE username=‘佐佐木希’;

将表中username为佐佐木希的员工的salary增加1000

删除操作:DELETE

DELETE的语法:

DELETE FROM 表名 WHERE 列名=值

DELETE的示例:

DELETE FROM employee WHERE username=‘大泽玛利亚’;

将表中username为大泽玛利亚的员工删除

DELETE FROM employee;

使用DELETE将表中所有数据删除,执行该操作后表结构还存在,删除后的数据可以找回

TRUNCATE TABLE employee;

使用TRUNCATE将表中所有数据删除,执行该操作后系统将该表DROP然后再创建一个同样的新表,其执行速度远快于DELETE;但是请注意:该方式删除的数据不能找回。


##DCL
之前我们说过:DCL(数据控制语言)用来定义访问权限和安全级别;在此对其进行简单的介绍

创建用户

创建用户的语法为:

create user 用户名@IP地址 identified by 密码;

请看如下示例:

create user xy@loaclhost identified by ‘123456’;

在此创建一个新用户,用户名为xy密码是123456

请注意,创建新用户后需要执行命令更新权限表(grant tables)

FLUSH PRIVILEGES;

给用户授权

给户授权的语法为:

grant 权限1,权限2,…,权限n on 数据库名.* to 用户名@IP地址 identified by ‘密码’;

如果将操作数据库的所有的权限授予用户,语法为:

grant all on 数据库名.* to 用户名@IP地址 identified by ‘密码’;

请看如下示例:

grant all on db1.* to xy@localhost identified by ‘123456’;

撤销授权

撤销授权的语法为:

revoke 权限1,权限2,…,权限n on 数据库名.* from 用户名@IP地址;

如果撤销用户拥有的某数据库的全部权限,语法为:

revoke all on db1.* from xy@localhost;

查看用户权限

查看用户权限的语法为:

show grants for 用户名@IP地址;

请看如下示例:

show grants for xy@localhost;

删除用户

删除用户权限的语法为:

drop user 用户名@IP地址;

请看如下示例:

drop user xy@localhost;

以上是关于谷哥的小弟学后台(02)——MySQL的主要内容,如果未能解决你的问题,请参考以下文章

谷哥的小弟学后台(01)——MySQL

MySQL数据库期末考试试题及参考答案(10)

MySQL数据库期末考试试题及参考答案(10)

Integer缓存IntegerCache详解

对HashMap进行排序的常见方法

MySQL数据库期末考试试题及参考答案(02)