sql经常使用语句使用方法

1、root用户密码丢失或从新设置mysql


方法1: 用SET PASSWORD命令 sql

首先登陆MySQL。 数据库

格式:mysql> set password for 用户名@localhost = password('新密码'); ide

例子:mysql> set password for root@localhost = password('123'); 函数


方法2:用mysqladmin 工具

格式:mysqladmin -u用户名 -p旧密码 password 新密码 性能

例子:mysqladmin -uroot -p123456 password 123 ui


方法3:用UPDATE直接编辑user表 spa

首先登陆MySQL。 命令行

mysql> use mysql; 

mysql> update user set password=password('123') where user='root' and host='localhost'; 

mysql> flush privileges; 


方法4:在忘记root密码的时候,能够这样 

 

1. 关闭正在运行的MySQL服务。 

3. 输入mysqld_safe --skip-grant-tables 回车。--skip-grant-tables 

的意思是启动MySQL服务的时候跳过权限表认证。 


5. 输入mysql回车,若是成功,将出现MySQL提示符 >。 

6. 链接权限数据库: use mysql; 。 

6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。 

7. 刷新权限(必须步骤):flush privileges; 。 

8. 退出 quit。 

9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登陆。

2、检索数据:

1.检索单个列:

SELECT prod_name FROM Products;

2.检索多个列:

SELECT prod_id, prod_name, prod_price FROM Products;

3.检索全部列:

SELECT * FROM Products;

4.检索不一样的值

SELECT DISTINCT vend_id FROM Products;

5.限制显示结果:

SELECT prod_name FROM Products  LIMIT 5; --显示前五行

select name from usertb where age > 20 limit 0, 1; //限制从第一条开始,显示1条 


select name from usertb where age > 20 limit 1; //同上面的一个效果 


select name from usertb where age > 20 limit 4, 1; //显示从第五条开始,显示1条 

6.注释:

1)在mysql脚本中,--后面的字段是注释信息,

2)或者使用#进行注释,

在命令行中执行的时候,注释的后面要加上;,表示注释结束。


3)注释从/*开始,到*/结束,/*和*/之间的任何内容都是注释。这种方式经常使用于给代码加注释,就如这个例子演示的,这里定义了两个SELECT语

句,可是第一个不会执行,由于它已经被注释掉了。


3、排序检索数据

1.按单个列进行排序

SELECT prod_name FROM Products  ORDER BY prod_name;

除了指示DBMS软件对prod_name列以字母顺序排序数据的ORDER BY子句外,这条语句与SELECT prod_name FROM Products;是同样的。

注意:一般,ORDER BY子句中使用的列将是为显示而选择的列。可是,实际上并不必定要这样,用非检索的列排序数据是彻底合法的

2.按多个列进行排序

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod_name;

重要的是理解在按多个列排序时,排序的顺序彻底按规定进行。换句话说,对于上述例子中的输出,仅在多个行具备相同的prod_price值时才

对产品按prod_name进行排序。若是prod_price列中全部的值都是惟一的,则不会按prod_name排序。

3.按列位置进行排序:

SELECT prod_id,prod_price,prod_name FROM Products ORDER BY 2,3;

SELECT清单中指定的是选择列的相对位置而不是列名。ORDER BY 3表

示按SELECT清单中的第二个列prod_name进行排序。ORDER BY 2,3表示先按prod_price,再按prod_name进行排序。

这一技术的主要好处在于不用从新输入列名。但它也有缺点。首先,不明确给出列名有可能形成错用列名排序。其次,在对SELECT清单进行更

改时容易错误地对数据进行排序(忘记对ORDER BY子句作相应的改动)。最后,若是进行排序的列不在SELECT清单中,显然不能使用这项技

术。

按非选择列排序

显然,当根据不出如今SELECT清单中的列进行排序时,不能采用这项技术。可是,若是有必要,能够混合匹配使用实际列名和相对列位置。

4.指定排序方向

数据排序不限于升序排序(从A到Z),这只是默认的排序顺序。还可使用ORDER BY子句进行降序(从Z到A)排序。为了进行降序排序,必须指定DESC关键字。

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price DESC;

多列排序:

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price DESC, prod_name;

DESC关键字只应用到直接位于其前面的列名。在上例中,只对prod_price列指定DESC,对prod_name列不指定。所以,prod_price列以降序排

序,而prod_name列(在每一个价格内)仍然按标准的升序排序。

若是想在多个列上进行降序排序,必须对每一列指定DESC关键字。

与DESC相对的是ASC(或ASCENDING),在升序排序时能够指定它。但实际

上,ASC没有多大用处,由于升序是默认的(若是既不指定ASC也不指定DESC,则假定为ASC)。


4、使用WHERE过滤数据

1.SELECT prod_name, prod_price FROM Products WHERE prod_price = 3.49;--使用等于,不等于则使用!= 

注意:在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE以后,不然将会产生错误

2.WHERE的操做符:

=:等于;<>或!=:不等于;<;<=;>;>=;BETWEEN指定的两个值之间;IS NULL:为空;

示例:检索单个值:

SELECT prod_name, prod_price FROM Products WHERE prod_price < 10;

SELECT prod_name, prod_price FROM Products WHERE prod_price < 10;


不匹配检查:

SELECT vend_id, prod_name FROM Products WHERE vend_id <> 'DLL01';

范围值检查

SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price BETWEEN 5.99 AND 9.49;

空值检查:

SELECT prod_name FROM Products WHERE prod_price IS NULL;

提示:什么时候使用引号

若是仔细观察上述WHERE的条件,会看到有的值括在单引号内,而有的值未括起来。单引号用来限定字符串。若是将值与字符串类型的列进行比较,就须要限定引号。用来与数值列进行比较的值不用引号。


5、高级数据过滤:多个WHERE子句用AND或者OR链接

1.AND操做符

SELECT prod_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4;

SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4  ORDER BY prod_id DESC ;

2.OR

WHERE子句中使用的关键字,用来表示检索匹配任一给定条件的行。

SELECT vend_id,prod_id,prod_price,prod_name FROM Products WHERE vend_id = 'DLL01' OR prod_price <= 4  ORDER BY prod_id DESC ;

3.求值顺序:

假如须要列出价格为10美圆及以上,且由DLL01或BRS01制造的全部产品。

SELECT vend_id,prod_id,prod_name,prod_price FROM Products WHERE prod_price > 10 AND (vend_id = 'DLL01' OR vend_id = 'BRS01');

提示:在WHERE子句中使用圆括号任什么时候候使用具备AND和OR操做符的WHERE子句,都应该使用圆括号明确地分组操做符。不要过度依赖默认求值顺序,即便它确实如你但愿的那样。使用圆括号没有什么坏处,它能消除歧义。

4.IN操做:

IN操做符用来指定条件范围,范围中的每一个条件均可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。完成了OR相同的效果

SELECT vend_id,prod_name, prod_price FROM Products WHERE vend_id IN ( 'DLL01', 'BRS01' ) ORDER BY prod_name;等价于下面的语句

SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' ORDER BY prod_name;

为何要使用IN操做符?其优势为:

在有不少合法选项时,IN操做符的语法更清楚,更直观。

在与其余AND和OR操做符组合使用IN时,求值顺序更容易管理。

IN操做符通常比一组OR操做符执行得更快(在上面这个合法选项不多的例子中,你看不出性能差别)。

IN的最大优势是能够包含其余SELECT语句,可以更动态地创建WHERE子句。

5.NOT操做符

WHERE子句中的NOT操做符有且只有一个功能,那就是否认其后所跟的任何条件。

SELECT prod_name,prod_price FROM Products WHERE prod_price NOT IN (3.49,5.99) ORDER BY prod_id DESC ;


6、用通配符进行过滤

1.谓词(predicate)

操做符什么时候不是操做符?答案是,它做为谓词时。从技术上说,LIKE是谓词而不是操做符。虽然最终的结果是相同的,但应该对此术语有所了解,以避免在SQL文献或手册中遇到此术语时不知所云。

2.通配符搜索只能用于文本字段(串),非文本数据类型字段不能使用通配符搜索。

3.百分号(%)通配符

最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意次数。例如,为了找出全部以词Fish起头的产品,可发布如下SELECT语句:

SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%';

通配符可在搜索模式中的任意位置使用,而且可使用多个通配符。下面的例子使用两个通配符,它们位于模式的两端:

SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '%bean bag%';


通配符也能够出如今搜索模式的中间,虽然这样作不太有用。下面的例子找出以F起头、以y结尾的全部产品:

SELECT prod_name FROM Products WHERE prod_name LIKE 'F%y';

说明:请注意后面所跟的空格

包括Access在内的许多DBMS都用空格来填补字段的内容。例如,若是某列有50个字符,而存储的文本为Fish bean bag toy(17个字符),则为填满该列须要在文本后附加33个空格。这样作通常对数据及其使用没有影响,可是可能对上述SQL语句有负面影响。子句WHEREprod_name LIKE 'F%y'只匹配以F开头、以y结尾的prod_name。若是值后面跟空格,则不是以y结尾,因此Fish bean bag toy就不会检索出来。简单的解决办法是给搜索模式再增长一个%号:'F%y%'还匹配y以后的字符(或空格)。更好的解决办法是用函数去掉空格。

警告:请注意NULL

通配符%看起来像是能够匹配任何东西,但有个例外,这就是NULL。子句WHERE prod_name LIKE '%'不会匹配产品名称为NULL的行。

4.下划线(_)通配符

另外一个有用的通配符是下划线(_)。下划线的用途与%同样,但它只匹配单个字符,而不是多个字符。

SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '__ inch teddy bear';

5.通配符使用技巧:

正如所见,SQL的通配符颇有用。但这种功能是有代价的,即通配符搜索通常比前面讨论的其余搜索要耗费更长的处理时间。

使用技巧

不要过分使用通配符。若是其余操做符能达到相同的目的,应该使用其余操做符。

在确实须要使用通配符时,也尽可能不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。

仔细注意通配符的位置。若是放错地方,可能不会返回想要的数据。

总之,通配符是一种极其重要和有用的搜索工具,之后咱们常常会用到它。

相关文章
相关标签/搜索