设为首页 收藏本站
查看: 609|回复: 0

[经验分享] 管理系统中的mysql基本应用

[复制链接]

尚未签到

发表于 2018-10-4 14:19:35 | 显示全部楼层 |阅读模式
  MySQL 是什么?
  MySQL是最流行的关系型数据库管理系统(RDNMS指建立在关系模型上的数据库)
  常用的RDBMS术语

  •   数据库: 数据库是一些关联表的集合。
  •   数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  •   冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  •   主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  •   外键:外键用于关联两个表。
  •   复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  •   索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  •   参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
  MySQL的入门基础命令
  启动关闭MySQL服务器

  •   首先,我们需要通过以下命令来检查MySQL服务器是否启动:
  •   ps -ef | grep mysqld
  •   如果MySql已经启动,以上命令将输出mysql进程列表, 如果mysql未启动,你可以使用以下命令来启动mysql服务器:
root@host# cd /usr/bin  
./mysqld_safe &
  如果你想关闭目前运行的 MySQL 服务器, 你可以执行以下命令:
  
root@host# cd /usr/bin  
./mysqladmin -u root -p shutdown
  
Enter password: ******
  如果你想重启目前运行的 MySQL 服务器, 你可以执行以下命令:
  
root@host# service mysqld restart //重启 mysql  
MySQL 用户设置
  如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。
  1、新建用户
  创建test用户,密码是123456
MySQL -u root -p  
CREATE USER 'test'@'localhost'  IDENTIFIED BY '1234'; #本地登录
  
CREATE USER 'test'@'%'  IDENTIFIED BY '1234'; #远程登录
  
quit
  
mysql -u test -p #测试是否创建成功
  2.为用户授权

  a.授权格式:grant 权限 on 数据库.* to 用户名@登录主机>  b.登录MYSQL,这里以ROOT身份登录:
  mysql -u root -p
  c.为用户创建一个数据库(testDB):
  create database testDB;
  create database testDB default charset utf8 collate utf8_general_ci; #设置字符集的语句,一般不写。utf8_general_ci忽略大小写
  d.授权test用户拥有testDB数据库的所有权限:

  grant all privileges on testDB.*to "test" @" localhost">  flush privileges;#刷新系统权限表
  e.指定部分权限给用户:

  grant select,update on testDB.*to "test" @" localhost">  flush privileges;#刷新系统权限表
  f.授权test用户拥有所有数据库的某些权限:  

  grant select,delete,update,create,drop on . to test@”%”>
  g.数据库/数据表/数据列权限:
  数据库/数据表/数据列权限:
  Alter: 修改已存在的数据表(例如增加/删除列)和索引。
  Create: 建立新的数据库或数据表。
  Delete: 删除表的记录。
  Drop: 删除数据表或数据库。
  INDEX: 建立或删除索引。
  Insert: 增加表的记录。
  Select: 显示/搜索表的记录。
  Update: 修改表中已存在的记录。
  全局管理MySQL用户权限:
  file: 在MySQL服务器上读写文件。
  PROCESS: 显示或杀死属于其它用户的服务线程。
  RELOAD: 重载访问控制表,刷新日志等。
  SHUTDOWN: 关闭MySQL服务。
  特别的权限:
  ALL: 允许做任何事(和root一样)。
  USAGE: 只允许登录--其它什么也不允许做。
  3、删除用户
  mysql -u root -p
  Delete FROM mysql.user Where User=”test” and Host=”localhost”;
  flush privileges;
  drop database testDB;
  删除账户及权限:
  drop user 用户名@’%’;
  drop user 用户名@ localhost;
  4、修改指定用户密码
  mysql -u root -p
  update mysql.user set authentication_string=password(“新密码”) where User=”test” and Host=”localhost”;
  flush privileges;
  5、查看用户
  查询用户表
  SELECT User,Host,Password FROM mysql.user;
  显示所有用户(不重复)
  SELECT DISTINCT User FROM mysql.user;
  查看用户权限
show grants for 用户名;
  查看user表结构
desc mysql.user;
6.管理MySQL的命令
  
  USE 数据库名 :
  选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
mysql> use RUNOOB;  
Database changed
  SHOW DATABASES:
  列出 MySQL 数据库管理系统的数据库列表。
mysql> SHOW DATABASES;  SHOW TABLES:
  显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
mysql> use RUNOOB;Database changed  
mysql> SHOW TABLES;
  SHOW COLUMNS FROM 数据表:
  显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
mysql> SHOW COLUMNS FROM runoob_tbl;  SHOW INDEX FROM 数据表:
  显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
mysql> SHOW INDEX FROM runoob_tbl;  SHOW TABLE STATUS LIKE [FROM db_name] [LIKE 'pattern'] \G:
  该命令将输出Mysql数据库管理系统的性能及统计信息。
mysql> SHOW TABLE STATUS  FROM RUNOOB;   # 显示数据库 RUNOOB 中所有表的信息mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%';     # 表名以runoob开头的表的信息mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G;   # 加上 \G,查询结果按列打印  7.删除数据库
  你也可以使用 mysql mysqladmin 命令在终端来执行删除命令。
[root@host]# mysqladmin -u root -p drop RUNOOB  
Enter password:******
  8.创建数据表
  创建MySQL数据表需要以下信息:

  •   表名
  •   表字段名
  •   定义每个表字段
语法
  以下为创建MySQL数据表的SQL通用语法:
CREATE TABLE table_name (column_name column_type);  以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(  
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
  
   `runoob_title` VARCHAR(100) NOT NULL,
  
   `runoob_author` VARCHAR(40) NOT NULL,
  
   `submission_date` DATE,
  
   PRIMARY KEY ( `runoob_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;
  实例解析:

  •   如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  •   AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  •   PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  •   ENGINE 设置存储引擎,CHARSET 设置编码。
通过命令提示符创建表
  通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表。
实例
  以下为创建数据表 runoob_tbl 实例:
root@host# mysql -u root -pEnter password:*******mysql> use RUNOOB;Database changed  
mysql> CREATE TABLE runoob_tbl(
  
   -> runoob_id INT NOT NULL AUTO_INCREMENT,
  
   -> runoob_title VARCHAR(100) NOT NULL,
  
   -> runoob_author VARCHAR(40) NOT NULL,
  
   -> submission_date DATE,
  
   -> PRIMARY KEY ( runoob_id )
  
   -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected (0.16 sec)mysql>
  注意:MySQL命令终止符为分号 (;) 。
  MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。
语法
  以下为删除MySQL数据表的通用语法:
DROP TABLE table_name ;在命令提示窗口中删除数据表
  在mysql>命令提示窗口中删除数据表SQL语句为DROP TABLE
实例
  以下实例删除了数据表runoob_tbl:
root@host# mysql -u root -p  
Enter password:*******
  
mysql> use RUNOOB;
  
Database changed
  
mysql> DROP TABLE runoob_tbl
  
Query OK, 0 rows affected (0.8 sec)
  
mysql>
  9.插入数据
  MySQL 表中使用INSERT INTO SQL语句来插入数据。
  你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。
语法
  以下为向MySQL数据表插入数据通用的INSERT INTO SQL语法:
INSERT INTO table_name ( field1, field2,...fieldN )  
                       VALUES                       ( value1, value2,...valueN );
  如果数据是字符型,必须使用单引号或者双引号,如:"value"。
通过命令提示窗口插入数据
  以下我们将使用 SQL INSERT INTO 语句向 MySQL 数据表 runoob_tbl 插入数据
实例
  以下实例中我们将向 runoob_tbl 表插入三条数据:
root@host# mysql -u root -p password;Enter password:*******mysql> use RUNOOB;Database changed  
mysql> INSERT INTO runoob_tbl
  
    -> (runoob_title, runoob_author, submission_date)
  
    -> VALUES    -> ("学习 PHP", "菜鸟教程", NOW());Query OK, 1 rows affected, 1 warnings (0.01 sec)mysql> INSERT INTO runoob_tbl    -> (runoob_title, runoob_author, submission_date)
  
    -> VALUES    -> ("学习 MySQL", "菜鸟教程", NOW());Query OK, 1 rows affected, 1 warnings (0.01 sec)mysql> INSERT INTO runoob_tbl    -> (runoob_title, runoob_author, submission_date)
  
    -> VALUES    -> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');Query OK, 1 rows affected (0.00 sec)mysql>
  注意: 使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号 ;。
  在以上实例中,我们并没有提供 runoob_id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。实例中 NOW() 是一个 MySQL 函数,该函数返回日期和时间。
  接下来我们可以通过以下语句查看数据表数据:
读取数据表:
  select * from runoob_tbl;
  输出结果:
DSC0000.jpg

  10查询数据
  MySQL 数据库使用SQL SELECT语句来查询数据。
  你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。
语法
  以下为在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name  
FROM table_name[WHERE Clause][LIMIT N][ OFFSET M]

  •   查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  •   SELECT 命令可以读取一条或者多条记录。
  •   你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  •   你可以使用 WHERE 语句来包含任何条件。
  •   你可以使用 LIMIT 属性来设定返回的记录数。
  •   你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
通过命令提示符获取数据
  以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 runoob_tbl 的数据:
实例
  以下实例将返回数据表 runoob_tbl 的所有记录:
读取数据表:
  select * from runoob_tbl;
  输出结果:

  • DSC0001.jpg

  WHERE 语句的应用
  SELECT * from runoob_tbl WHERE runoob_author='菜鸟教程';
  11.update查询
  如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。.
语法
  以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:
UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]

  •   你可以同时更新一个或多个字段。
  •   你可以在 WHERE 子句中指定任何条件。
  •   你可以在一个单独表中同时更新数据。
  当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。
  通过命令提示符更新数据
  以下我们将在 SQL UPDATE 命令使用 WHERE 子句来更新 runoob_tbl 表中指定的数据:
实例
  以下实例将更新数据表中 runoob_id 为 3 的 runoob_title 字段值:
SQL UPDATE 语句:
  mysql> UPDATE runoob_tbl SET runoob_title='学习 C' WHERE runoob_id=3;
  Query OK, 1 rows affected (0.01 sec)
  mysql> SELECT * from runoob_tbl WHERE runoob_id=3;
  +-----------+--------------+---------------+-----------------+
  | runoob_id | runoob_title | runoob_author | submission_date |
  +-----------+--------------+---------------+-----------------+
  | 3         | 学习 C  | RUNOOB.COM    | 2016-05-06      |
  +-----------+--------------+---------------+-----------------+
  1 rows in set (0.01 sec)
  从结果上看,runoob_id 为 3 的 runoob_title 已被修改为学习C。
  12.DELETE语句
  你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
  你可以在 mysql> 命令提示符或 PHP 脚本中执行该命令。
语法
  以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:
DELETE FROM table_name [WHERE Clause]

  •   如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  •   你可以在 WHERE 子句中指定任何条件
  •   您可以在单个表中一次性删除记录。
  当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。
从命令行中删除数据
  这里我们将在 SQL DELETE 命令中使用 WHERE 子句来删除 MySQL 数据表 runoob_tbl 所选的数据。
实例
  以下实例将删除 runoob_tbl 表中 runoob_id 为3 的记录:
DELETE 语句:
  mysql> use RUNOOB;
  Database changed
  mysql> DELETE FROM runoob_tbl WHERE runoob_id=3;
  Query OK, 1 row affected (0.23 sec)
  
MySQL LIKE 子句
  WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 "runoob_author = 'RUNOOB.COM'"
  SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。
  如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
  语法
  以下是 SQL SELECT 语句使用 LIKE 子句从数据表中读取数据的通用语法:
SELECT field1, field2,...fieldN  
FROM table_name
  
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
实例
  以下是我们将 runoob_tbl 表中获取 runoob_author 字段中以 COM 为结尾的的所有记录:
SQL LIKE 语句:
  mysql> use RUNOOB;
  Database changed
  mysql> SELECT * from runoob_tbl  WHERE runoob_author LIKE '%COM';
  +-----------+---------------+---------------+-----------------+
  | runoob_id | runoob_title  | runoob_author | submission_date |
  +-----------+---------------+---------------+-----------------+
  | 3         | 学习 Java   | RUNOOB.COM    | 2015-05-01      |
| 4
  | 学习 Python | RUNOOB.COM    | 2016-03-06      |
  +-----------+---------------+---------------+-----------------+
  2 rows in set (0.01 sec)
  
MySQL UNION 操作符
  MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。相当于and.
  举例:
DSC0002.jpg

DSC0003.jpg

DSC0004.jpg

DSC0005.jpg DSC0006.jpg

MySQL 排序
  用ORDER BY 子句将查询数据排序后再返回数据
DSC0007.jpg

MySQL GROUP BY 语句
  GROUP BY 语句根据一个或多个列对结果集进行分组。
  在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
DSC0008.jpg DSC0009.jpg

Mysql 连接的使用
  如何使用 MySQL 的 JOIN 在两个或多个表中查询数据
  JOIN 按照功能大致分为如下三类:

  •   INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  •   LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  •   RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
DSC00010.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-611919-1-1.html 上篇帖子: Mysql 数据库用户密码管理 下篇帖子: Mysql 授权控制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表