`
Hillen.chan
  • 浏览: 63287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL语法语句使用

阅读更多
MYSQL使用
一、连接MySQL。
格式: mysql -h主机地址 -u用户名 -p用户密码
例:连接到本机上的MYSQL。
  首先在打开 DOS 窗口,然后进入目录 %mysqlpath%\bin>,%mysqlpath%是mysql安装的主目录,再键入命令:mysql -uroot -p,回车后提示你输密码,如果刚安装好 MySQL,超级用户 root 是没有密码的,故直接回车即可进入到MySQL中了,MySQL的提示符是:mysql>.
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -p
Enter password:
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 5.0.7-beta-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>


例2:连接到远程主机上的 MySQL。
  假设远程主机的IP为:192.168.9.168,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 如图:
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -h 192.168.9.168 -u root -p
Enter password:
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.7-beta-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>


二、增加新用户。
(注意:下面的因为是 MySQL 环境中的命令,所以命令后面都带一个分号作为结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码";
例1、增加一个用户 test1 密码为 abc123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:
grant select, insert, update, delete on *.* to [email=test1@]test1@"%[/email]" Identified by "abc123";
例:
mysql> grant select, insert, update, delete on *.* to 
    -> test1@"%"Identified by "abc123"; 

但例增加的用户是十分危险的,如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据为所欲为了,解决办法见下例。
例2、增加一个用户test2密码为abc123,让他只可以在localhost上登录,并只可以对数据库 mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通MYSQL主机上来访问了。 命令如下:
grant select, insert, update,delete on mydb.* to test2@localhost identified by "abc123";

mysql> grant select, insert, update, delete on mydb.* to 
    -> [email=test2@localhost]test2@localhost[/email]Identified by "abc123"; 

如果你不想test2有密码,可以再打一个命令将密码消掉。 命令如下:
grant select, insert, update, delete on mydb.* to test2@localhost identified by "";

三、修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例1:给root加个密码ab123。首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
例2:再将root的密码改为abc345。
mysqladmin -uroot -pab123 password abc345


MySQL语法语句
一、SQL速成 
结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表、索引、字段等)的建立和操纵。 
以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。 

1.创建表 
表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联。创建表的基本语法如下: 
create table table_name 
(column_name dataType {identity |null|not null}, 
…) 
其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数data无效是一个标准的SQL类型或由用户数据库提供的类型。用户要使用non-null从句为各字段输入数据。 
create table还有一些其他选项,如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有,在创建表是可用PRIMARY KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。 
书写上要注意: 
在一对圆括号里的列出完整的字段清单。 
字段名间用逗号隔开。 
字段名间的逗号后要加一个空格。 
最后一个字段名后不用逗号。 
所有的SQL陈述都以分号";"结束。 
例: 
mysql> CREATE TABLE test(test_col int(10),test_num );
查询表结构
mysql> show columns from test;

2.创建索引 
索引用于对数据库的查询。一般数据库建有多种索引方案,每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建索引的基本语法如下: 
create index index_name 
on table_name (col_name[(length)],... ) 
例: 
mysql> CREATE INDEX index_num ON test(test_num);

3.改变表结构 
在数据库的使用过程中,有时需要改变它的表结构,包括改变字段名,甚至改变不同数据库字段间的关系。可以实现上述改变的命令是alter,其基本语法如下: 
alter table table_name alter_spec [, alter_spec ...] 
例: 
mysql> alter table test change test_col test_colu int(20) not null;(单独修改某字段)

自增主键
drop table if exists `state`;
create table state
(
  sid int not null primary key auto_increment,
  sname varchar(20) not null
)engine=innodb;
添加主键
alter table test add primary key(test_id);
删除主键
alter table test drop primary key;
增加
alter table test add column test_age int(2),add column test_sex varchar(2);
  (每个新增字段前需 add column)
删除
alter table test drop column test_ager;
重命名
alter table test change test_col test_id int(6);
修改原字段名和类型
alter table test change test_num test_str int(6);

4.删除表 
Drop table table_name
例:
mysql> drop table t_test;

5.执行查询 
查询是使用最多的SQL命令。查询数据库需要凭借结构、索引和字段类型等因素。大多数数据库含有一个优化器(optimizer),把用户的查询语句转换成可选的形式,以提高查询效率。 
值得注意的是MySQL不支持SQL92标准的嵌套的where子句,即它只支持一个where子句。其基本语法如下: 
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] 
[DISTINCT | DISTINCTROW | ALL] 
select_expression,... 
[INTO {OUTFILE | DUMPFILE} ’file_name’ export_options] 
[FROM table_references 
][WHERE where_definition] 
[GROUP BY col_name,...] 
[HAVING where_definition] 
[ORDER BY {unsigned_integer | col_name | formula} ][ASC | DESC] ,...] 
[LIMIT ][offset,] rows] 
[PROCEDURE procedure_name] ] 
其中where从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式: 
字段名操作表达式 
字段名操作字段名 
在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,search_condition中的操作可能选以下几种: 
= 检查是否相等 
!= 检查是否不等
> (或>=) 检查左边值是否大于(或大于等于)右边值 
< (或<=) 检查左边值是否小于(或小于等于)右边值 
[not] between 检查左边值是否在某个范围内 
[not] in 检查左边是否某个特定集的成员 
[not] like 检查左边是否为右边的子串 
is [not] null 检查左边是否为空值 
在这里,可以用通配符_代表任何一个字符,%代表任何字符串。使用关键字<AND>、<OR>和<NOT>可以生成复杂的词,它们运行检查时使用布尔表达式的多重标准集。 
例: 
mysql> select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name; 
mysql> select college, region, seed from tournament 
ORDER BY region, seed; 
mysql> select col_name from tbl_name WHERE col_name > 0;

6.修改表中数据 
在使用数据库过程中,往往要修改其表中的数据,比如往表中添加新数据,删除表中原有数据,或对表中原有数据进行更改。它们的基本语法如下: 
数据添加: 
insert [into] table_name [(column(s))] 
values (expression(s)) 
例: 
mysql> insert into test (test_col,test_num) values (2,'stra');
数据删除: 
delete from test where test_col=2;
数据更改: 
update test set test_col=15,test_num='star';

7.数据库切换 
当存在多个数据库时,可以用下面的命令定义用户想使用的数据库: 
use database_name

8.统计函数 
SQL有一些统计函数,它们对于生成数据表格很有帮助。下面介绍几个常用的统计函数: 
sum (exepression) 计算表达式的和 
avg (exepression) 计算表达式的平均值 
count (exepression) 对表达式进行简单的计数 
count (*) 统计记录数 
max (exepression) 求最大值 
min (exepression) 求最小值 
其中exepression为任何有效的SQL表达式,它可以是一个或多个记录,也可以是别的SQL函数的组合。
例:
select sum(test_col) from test;

9.多行命令输入 
MySQL命令行界面允许把陈述作为一行输入,也可以把它展开为多行输入。这两者之间并没有语法上的区别。使用多行输入,你可以将SQL陈述一步步分解,从而使你更容易理解。 
在多行方式下,注释器把每一行都添加到前面的行后,直到你用分号";"来结束这个SQL陈述。一旦键入分号并按回车键,这个陈述即被执行。 
标准日期格式是"yyyy-mm-dd"。 
标准时间格式是"hh:mm:ss"。 
引号内要求所给的是上述的标准日期和时间格式。 
日期也可以"yyyymmdd"形式,时间也可以"hhmmss"形式输入,但其值不需要再加引号。 
数字值不需要加引号。这种保存与数据类型无关,这些数据类型都有格式化的专栏来包含(例如:文本,日期,时间,整数等)。 



三 应用查询
1. SELECT语句的子查询:
语法:     SELECT ... FROM (subquery) AS name ...

先创建一个表:
CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);
INSERT INTO t1 valueS (1,'1',1.0);
INSERT INTO t1 valueS (2,'2',2.0);

我们就可以进行以下的嵌套查询了:
SELECT sb1,sb2,sb3
       FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb
       WHERE sb1 > 1;

结果是: 2, '2', 4.0.

我们知道下面语句是不会得到正确结果的,因为对经过Group by排序的集合进行求均值是不能得到正确答案的:
SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1

所以我们可以通过下面的嵌套查询实现同样的效果:
SELECT AVG(sum_column1)
       FROM (SELECT SUM(column1) AS sum_column1
             FROM t1 GROUP BY column1) AS t1;

2.行的子查询(Row Subquery):
看下面的例子:
SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);
这个查询是返回column1等于column2的结果行。Row函数中的1和2相当于构造参数。想必Blogjava上的同志对这些应该比较清楚,也不去详细介绍了。

3.使用Exist和Not Exist参数
这里的Exist和Not Exist用途及用法和在其他没有什么大的区别,我就简单举几个范例好了:

范例一:      SELECT DISTINCT store_type FROM Stores
                    WHERE EXISTS (SELECT * FROM Cities_Stores
                                  WHERE Cities_Stores.store_type = Stores.store_type);
范例二:   SELECT DISTINCT store_type FROM Stores
                       WHERE NOT EXISTS (SELECT * FROM Cities_Stores
                                   WHERE Cities_Stores.store_type = Stores.store_type);
范例三:  这个例子中嵌套使用了Not Exist语法,稍微注意一下:
               SELECT DISTINCT store_type FROM Stores S1
                    WHERE NOT EXISTS (
                               SELECT * FROM Cities WHERE NOT EXISTS (
                                       SELECT * FROM Cities_Stores
                                                 WHERE Cities_Stores.city = Cities.city
                                                         AND Cities_Stores.store_type = Stores.store_type));

4.条件关联关系查询:
解释起来麻烦,直接看例子吧:
SELECT column1 FROM t1 AS x
     WHERE x.column1 = (SELECT column1 FROM t2 AS x
          WHERE x.column1 = (SELECT column1 FROM t3
               WHERE x.column2 = t3.column1));
跟其他数据库做法是一样的。

5.其他使用方法和注意:
除了上面这些还有很多很多,不过就不去细讲了,因为这些跟别的数据库差不多,只是为了给大家一个参考,提提就够了。

         SELECT (SELECT s1 FROM t2) FROM t1;
         SELECT (SELECT s2 FROM t1);

支持子查询的语法有:SELECT,INSERT,UPDATE,DELETE,SET和DO。

子查询可以使用任何普通查询中使用的关键词:如DINSTINCT,GROUP BY,LIMIT,ORDER BY,UNION,ALL,UNION ALL等。可以使用<,>, <=, >=, =, <>运算符进行比较,也可以使用ANY ,IN和SOME进行集合的匹配。
分享到:
评论

相关推荐

    MySQL语法语句大全MySQL语法语句大全

    以下是一份全面的MySQL语法语句概述: 一、数据定义(DDL - Data Definition Language) 1. 创建数据库:`CREATE DATABASE 数据库名;` 2. 删除数据库:`DROP DATABASE 数据库名;` 3. 创建表:`CREATE TABLE 表名 ...

    MySQL语法语句大全[归类].pdf

    MySQL语法语句大全 MySQL语法语句大全是一份详细的MySQL语法手册,涵盖了创建表、创建索引、改变表结构、删除数据对象、执行查询等MySQL语法语句的大量知识点。本手册旨在帮助开发者快速掌握MySQL语法,提高开发...

    Oracle Sql语句转换成Mysql Sql语句

    在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...

    mysql语法手册-mysql语法手册-mysql语法手册-mysql语法手册

    SQL是用于管理关系数据库的语言,MySQL语法手册首先会介绍SQL的基础概念,包括数据类型(如整数、浮点数、字符串、日期/时间)、创建和删除数据库以及数据表的语句(CREATE DATABASE, DROP DATABASE, CREATE TABLE, ...

    MySQL语法语句汇编.doc

    MySQL是世界上最广泛使用的开源关系型数据库管理系统之一,其语法语句是进行数据库操作的基础。本篇文章将详细解析MySQL的一些核心语法,包括创建表、创建索引、改变表结构、删除数据对象以及执行查询。 首先,我们...

    oracle到mysql建表语句迁移

    oracle向mysql建表语句的迁移。 直接表结构的生成sql脚本

    MySQL 数据库基本的使用语法语句

    ### MySQL 数据库基本的使用语法语句 #### 登录MySQL数据库 登录MySQL数据库可以通过命令行完成,这包括连接远程服务器和本地服务器。 1. **登录远程服务器端数据库** - 命令格式:`mysql -h 服务器名称 –u ...

    mysql语句转postgres的工具

    1. **DDL转换**:该工具能够解析MySQL的CREATE TABLE、ALTER TABLE等DDL语句,并将其转换为PostgreSQL可以理解的语法。这涉及到字段类型、约束、索引等的映射,例如,MySQL的`ENUM`类型在PostgreSQL中可能需要转换为...

    oracle与mysql语法不同点总结

    本猿最近做数据库迁移,修改了大量sql语句,对oracle和MySQL语法之间的一些不同之处总结了一些。

    Excel生成MYSQL建表语句

    用户需根据实际需求填充这些信息,确保它们符合MySQL的语法规范。 JAVA作为编程语言,其强大的IO流库使得能够方便地读取Excel文件。Apache POI是一个常用的JAVA库,用于处理Microsoft Office格式的文件,包括Excel...

    MySQL常用语法与操作语句实例

    MySQL+PHP常用语法与操作语句实例MySQL+PHP常用语法与操作语句实例MySQL+PHP常用语法与操作语句实例MySQL+PHP常用语法与操作语句实例MySQL+PHP常用语法与操作语句实例MySQL+PHP常用语法与操作语句实例MySQL+PHP常用...

    MySQL prepare语句的SQL语法

    MySQL prepare语法: PREPARE statement_name FROM preparable_SQL_statement; /*定义*/ EXECUTE statement_name [USING @var_name [, @var_name] …]; /*执行预处理语句*/ {DEALLOCATE | DROP} PREPARE statement_...

    java实体转mysql建表语句

    在Java开发中,将Java实体类转换为MySQL数据库的建表语句是一项常见的任务,它有助于快速构建数据库模型,尤其在使用ORM(对象关系映射)框架如Hibernate、MyBatis时更为便捷。本篇文章将深入探讨这个过程,并提供...

    mysql语法.pdf

    本知识点将对给定文件中出现的MySQL语法进行详细解读。 首先,从文件内容中可以看到,创建表(CREATE TABLE)是数据库操作中的一个基础任务。MySQL中创建表的语法可以包括表名、列名以及列的数据类型,并且可以指定...

    MySQL语法大全(新)

    MySQL语法大全(新)这篇文章涉及了MySQL的基础知识和常用操作,适合于数据库开发人员和系统管理员作为日常工作的参考文档。文章中涉及的内容包括了从命令行连接MySQL数据库,到用户管理、数据库操作以及表的操作等...

Global site tag (gtag.js) - Google Analytics