SQL语句备忘录

SQL语句备忘录

1. 创建授权用户

1.1 创建用户

  • 命令 : CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

  • 例子:

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; 
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

1.2 授权

  • 命令 : GRANT privileges ON databasename.tablename TO 'username'@'host'

  • 说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*

    例子:

GRANT SELECT, INSERT ON test.user TO 'pig'@'%'; 
GRANT ALL ON *.* TO 'pig'@'%';

注意 : 用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; 

1.3 设置与更改用户密码

  • 命令 : SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

  • 如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");

  • 例子:

SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456"); 

1.4 撤销用户权限

  • 命令 : REVOKE privilege ON databasename.tablename FROM 'username'@'host';

  • 说明: privilege, databasename, tablename - 同授权部分.

  • 例子:

REVOKE SELECT ON *.* FROM 'pig'@'%'; 

注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.

相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限.

具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看.

1.5 删除用户

  • 命令: DROP USER 'username'@'host';

  • 例子:

DROP USER pig

2. 增删修改数据库

2.1 显示所有数据库

  • 命令: Show Databases;

  • 查看表结构

    mysql> desc test;

    2.2 使用某个库

  • USE dbname;

2.3 创建数据库

CREATE DATABASE dbname;

2.4 删除数据库

DROP DATABASE dbname;

3 数据表增删改

3.1 创建数据表

create table <表名>(<列名> <数据类型>[列级完整性约束]  [,<列名> <数据类型>[列级完整性约束]]…);

Create TABLE tbname(col1 int not null, col2 varchar(20));

3.2 删除数据表

DROPTABLE tbname;

3.3 修改数据表内容

设置主键

ALTER TABLE `table_name` ADD PRIMARY KEY(`field_name`);

ALTER TABLE `table` CHANGE `field` `field_new_name` INT(4) NOT NULL DEFAULT '0' FIRST;
-- 然后这里有个坑, id 必须反引号,不然报错。
alter table fuck change id `id` int(4) not null defualt '0' frist;

添加列

mysql> alter table test add(tage int(3));

删除列:

alter table testtable  drop  column name;

修改列的类型:

alter table testtable modify address char(40)

或者这样:

alter table testtable change address address char(40)

修改表列名

alter table testtable change  column address address1 varchar(30)

3.4 向表中插入数据

-- 插入顺序要与实际存储顺序严格一致
INSERT INTO 表名称 VALUES (值1, 值2,....)

-- 插入顺序不需要与实际存储顺序严格一致,但是要与前面的列名顺序一致。
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

3.5 更新数据表的内容

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

3.6 删除某条数据

DELETE FROM 表名称 WHERE 列名称 = 值

4 数据查询

4.1 最简单的查询

SELECT 列名 FROM [dbname.]tbname WHERE 条件
mysql> select * from users where username='v0w';

4.2 union 查询

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

4.3 join查询

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

引用两个表

我们可以通过引用两个表的方式,从两个表中获取数据:

谁订购了产品,并且他们订购了什么产品?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
文章作者: V0WKeep3r
文章链接: http://v0w.top/2018/09/04/SQL%E8%AF%AD%E5%8F%A5%E5%A4%87%E5%BF%98%E5%BD%95/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 V0W's Blog
支付宝打赏
微信打赏