ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL基础

2019-08-31 19:36:12  阅读:264  来源: 互联网

标签:runoob author 基础 tbl MySQL WHERE SELECT priv


进入MYSQL过程
1.cd C:\web\mysql-8.0.14\bin
2.mysqld --initialize --console
3.mysql -u root -p
4.123456

MySQL Ctrl+C:停止,但不会退出Mysql
Ctrl+Z:退出MySQL
Empty set:空集

sqlmapproject-sqlmap-9f75fd4
sqlmap.py -u http://www.baidu.com/sql1/Less-1/?id=1&uid=3

环境变量:在dos下打开一个程序,系统不光要到当前目录查找,还要到path中查找
两个python情况,请在环境变量里面把两个python的位置都输进去,然后把你想要的python移到最上
在cmd上切换python只需py -2或 py -3
cd c:\Python27\sqlmapproject-sqlmap-9f75fd4

按照上述过程
use RUNOOB
然后select * from runoob_tbl;

GIT的URL
C:\Program Files (x86)\Git

重置密码:alter user user() identified by "123456";

向MySQL数据表插入数据通用的 INSERT INTO SQL语法:
INSERT INTO table_name ( field1, field2,...fieldN )
                           	         VALUES
                       	           ( value1, value2,...valueN );
如果数据是字符型,必须使用单引号或者双引号,如:"value"。

select * from 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;
//你还可以这样写
DROP TABLE IF EXISTS `employee_tbl`;
CREATE TABLE `employee_tbl` (
  `id` int(11) NOT NULL,
  `name` char(10) NOT NULL DEFAULT '',
  `date` datetime NOT NULL,
  `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
//还可以这样写
create table runoob_test_tbl
    -> (
    -> runoob_author varchar(40) NOT NULL,
    -> runoob_count  INT
    -> );
1.如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
2.AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
3.PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
4.ENGINE 设置存储引擎,CHARSET 设置编码。

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)
//你如果觉得上面麻烦可以这样做
INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2');

//创建数据库:create DATABASE RUNOOB;
//创建数据库后,后面的操作都在该数据库里
//切换数据库:Database changed
//输出表,一定要先确定它的数据库
也就是use RUNOOB;//
//删除数据表:DROP TABLE runoob_tbl
//删除数据库:drop database RUNOOB;

//一般过程:
1.创建数据库
2.use这个数据库
3.创建表

//打开MySQL服务器:mysqld --console
net start mysql
//关闭MySQL服务器:mysqladmin -uroot shutdown

//添加新的用户
root@host# mysql -u root -p
Enter password:*******
mysql> use mysql;
Database changed

mysql> INSERT INTO user 			/*添加用户的语法*/
          (host, user, password, 			/*户主 用户 密码*/
           select_priv, insert_priv, update_priv) 	/*三个权限,后面Y表示打开这个权限*/
           VALUES ('localhost', 'guest', 		/*赋值*/
           PASSWORD('guest123'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.20 sec)

mysql> FLUSH PRIVILEGES;			/*在注意需要执行 FLUSH PRIVILEGES 语句。 
					/*这个命令执行后会重新载入授权表。
					/*如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器
Query OK, 1 row affected (0.01 sec)

mysql> SELECT host, user, password FROM user WHERE user = 'guest';/*输出用户的信息*/
+-----------+---------+------------------+
| host      | user    | password         |
+-----------+---------+------------------+
| localhost | guest | 6f8c114b58f2ce9e |
+-----------+---------+------------------+
1 row in set (0.00 sec)

//权限
Select_priv
Insert_priv
Update_priv
Delete_priv
Create_priv
Drop_priv
Reload_priv
Shutdown_priv
Process_priv
File_priv
Grant_priv
References_priv
Index_priv
Alter_priv

//输出所有数据库的名字
SHOW DATABASES;

//输出对应数据库的数据表
SHOW TABLES;
这个必须和use连用

WHERE语句
SELECT * from runoob_tbl WHERE runoob_author='菜鸟教程';//读取作者是菜鸟教程那两行的内容
SELECT * from runoob_tbl WHERE BINARY runoob_author='runoob.com';//BINARY区分大小写,所以无输出
SELECT * from runoob_tbl WHERE BINARY runoob_author='RUNOOB.COM';//有输出
SELECT * from runoob_tbl WHERE runoob_author='runoob.com';//不写BINARY不区分大小写,一样会输出
//这是WHERE语法,WHERE 语句类似于程序语言中的 if 条
SELECT field1, field2,...fieldN FROM table_name1, table_name2...[WHERE condition1 [AND [OR]] condition2.....
SELECT * from runoob_tbl WHERE BINARY runoob_author='菜鸟教程' and runoob_id < 3;

UPDATE语句:修改和更新数据
UPDATE runoob_tbl SET runoob_title='学习C++' WHERE runoob_id = 3;
DELETE语句:删除数据
DELETE from runoob_tbl WHERE runoob_id = 4;
LIKE语句:
SELECT * from runoob_tbl WHERE runoob_author like '%com';
//LIKE通常与%一同使用
//LIKE可以与之前讲的所有联系在一起
//我们还可以在后面继续加and或者or语句

UNION语句:
UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中
SELECT 列的名字 from 表名
UNION [ALL] //ALL可选
SELECT 列的名字 from 表名
ORDER by 列的名字
UNION是针对两个表即以上而言,不加ALL,他会把两个表中你指定的那个列的相同数据删除,输出不重复的
加了ALL,输出你指定那两个列包含的所有数据
你也可以加上WHERE
WHERE 列的名字=列里面你可以指定一个数据得名字
WHERE语句加在SELECT和UNION之间

ORDER BY语句:
SELECT * from 表名 ORDER by 列的名字 [ASC] [DESC]
//ASC:按照升序排列,DESC:按照降序排列
//你要记住,where语句只要是讲过的都可以互相运用,下面不再说明
//排序只是暂时的

GROUP BY语句:
GROUP BY 语句根据一个或多个列对结果集进行分组。
在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
SELECT runoob_title, COUNT(*) FROM runoob_tbl GROUP BY runoob_title;
select 列,函数 from 表名 group by 列;
//WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
把什么进行运算,第一个会在后面出现NULL,这不是我们想要的,所以第二个进行了改进
select coalesce(a,b,c);
参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null

//在真正的应用中经常需要从多个数据表中读取数据,使用 MySQL 的 JOIN 在两个或多个表中查询数据。
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。SELECT a.runoob_id, a.runoob_author, b.id FROM runoob_tbl a INNER JOIN employee_tbl b ON a.runoob_id = b.id;
//上面这句话等效为下面这个where语句
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;
//我们只需把第一句的INNER JOIN 换成LEFT JOIN或者RIGHT JOIN就可以了

标签:runoob,author,基础,tbl,MySQL,WHERE,SELECT,priv
来源: https://blog.csdn.net/qq_43776408/article/details/100176246

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有