Skip to content

Latest commit

 

History

History
241 lines (168 loc) · 6.71 KB

Beginning-SQL.md

File metadata and controls

241 lines (168 loc) · 6.71 KB

目录

SQL入门笔记

SQL入门笔记

SQL 是用于访问和处理数据库的标准的计算机语言。

数据库包括:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。

运行sql文件创建表格 目录

从教程网站上下载教学用的Websites 表 SQL 文件

$ wget -c http://static.runoob.com/download/websites.sql

登录mysql,进入指定数据库,运行SQL文件

# 登录
$ mysql -u root -p

#创建数据库
mysql> create database testdb;

# 进入指定数据库
mysql> use testdb;

# 运行SQL文件,使用绝对路径
mysql> source /var/lib/mysql/testdb/websites.sql;

查看表格是否成功创建

mysql> show tables;

MySQL之权限管理 目录

新增用户 目录

如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。

只有MySQL的root用户才有用户管理权限

# 进入 mysql 数据库
mysql> use mysql;

# 添加新用户
mysql> INSERT INTO user 
          (host, user, password, 
           select_priv, insert_priv, update_priv) 
           VALUES ('localhost', 'guest', 
           PASSWORD('guest123'), 'Y', 'Y', 'Y');

# 重新载入授权表
mysql> FLUSH PRIVILEGES;

在添加用户时,请注意使用MySQL提供的 PASSWORD() 函数来对密码进行加密。

注意: 在添加成功新用户后,新用户还处于未激活状态,所以随后必须执行 FLUSH PRIVILEGES 语句来重新载入授权表。如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器,除非你重启mysql服务器。

修改用户信息 目录

用到 UPDATE语句

 mysql> UPDATE `user` SET Password=PASSWORD("123456") WHERE Host='10.155.123.55' AND User='kaka';  

删除用户 目录

用到 DELETE语句

mysql> DELETE FROM `user` WHERE Host='10.155.123.55' AND User='kaka';

权限分配 目录

使用 GRANT语句

GRANT 权限 ON 数据库.* TO 用户名@'登录主机' IDENTIFIED BY '密码' 
权限:  
   ALL,ALTER,CREATE,DROP,SELECT,UPDATE,DELETE  
   新增用户:权限为USAGE,即为:"无权限",想要创建一个没有权限的用户时,可以指定USAGE  
数据库:  
     *.*              表示所有库的所有表  
     mylove.*         表示mylove库的所有表  
     mylove.loves     表示mylove库的loves表   
用户名:  
     MySQL的账户名  
登陆主机:  
     允许登陆到MySQL Server的客户端ip  
     '%'表示所有ip  
     'localhost' 表示本机  
     '10.155.123.55' 特定IP  
密码:  
      MySQL的账户名对应的登陆密码  

例如,给用户kaka分配test数据库下user表的查询select权限:

mysql> GRANT SELECT ON test.user TO kaka@'10.155.123.55' IDENTIFIED BY '123456';

查看权限 目录

mysql> show Grants for 'kaka'@'10.155.123.55';  
+-----------------------------------------------------------------------------------------------------------------+  
| Grants for [email protected]                                                                                   |  
+-----------------------------------------------------------------------------------------------------------------+  
| GRANT USAGE ON *.* TO 'kaka'@'10.155.123.55' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |  
| GRANT SELECT ON `test`.`user` TO 'kaka'@'10.155.123.55'                                                         |  
+-----------------------------------------------------------------------------------------------------------------+  

SELECT 语句 目录

SELECT 语句用于从数据库中选取数据。

结果被存储在一个结果表中,称为结果集。

  • SQL SELECT 语法
SELECT column_name,column_name FROM table_name;

SELECT * FROM table_name;
  • SELECT DISTINCT:用于返回唯一不同的值。
SELECT DISTINCT column_name,column_name FROM table_name;

WHERE 子句 目录

WHERE 子句用于提取那些满足指定标准的记录。

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

实例:

SELECT * FROM Websites WHERE country='CN';

SQL 使用单引号来环绕文本值,如果是数值字段,请不要使用引号。

结果集排序 目录

SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;

ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。

INSERT INTO 语句 目录

INSERT INTO 语句可以有两种编写形式。

  • 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
  • 第二种形式需要指定列名及被插入的值,用于在指定的列插入值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

若表中有 id 列,则 id 列是自动更新的,表中的每条记录都有一个唯一的数字。

UPDATE 语句 目录

用于 更新/修改 表中的记录。

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

警告!

执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。

DELETE 语句 目录

DELETE FROM table_name
WHERE some_column=some_value;

请注意 SQL DELETE 语句中的 WHERE 子句!

WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!