进入服务器
- 要想查看由mysql提供的选择项目表,可以用- -help选项来调用
- 连接服务器 mysql -h host -u user -p
- 断开服务器 成功地连接后,可以在mysql>提示下输入QUIT (或\q)随时退出
输入查询
要求服务器告诉它的版本号和当前日期SELECT VERSION(), CURRENT_DATE;
- · 一个命令通常由SQL语句组成,随后跟着一个分号。(有一些例外不需要分号。早先提到的QUIT是一个例子。后面我们将看到其它的例子。)
- · 当发出一个命令时,mysql将它发送给服务器并显示执行结果,然后显示另一个mysql>显示它准备好接受其它命令。
- · mysql用表格(行和列)方式显示查询输出。第一行包含列的标签,随后的行是查询结果。通常,列标签是你取自数据库表的列的名字。如果你正在检索一个表达式而非表列的值(如刚才的例子),mysql用表达式本身标记列。
- · mysql显示返回了多少行,以及查询花了多长时间,它给你提供服务器性能的一个大致概念。因为他们表示时钟时间(不是 CPU 或机器时间),并且因为他们受到诸如服务器负载和网络延时的影响,因此这些值是不精确的。(为了简洁,在本章其它例子中不再显示“集合中的行”。)
能将mysql用作一个简单的计算器:SELECT SIN(PI()/4), (4+1)*5;
显示的命令是相当短的单行语句。
可以在一行上输入多条语句,只需要以一个分号间隔开各语句
提示符 含义
- mysql >准备好接受新命令。
- ->等待多行命令的下一行。
- '>等待下一行,等待以单引号(“'”)开始的字符串的结束。
- ">等待下一行,等待以双引号(“"”)开始的字符串的结束。
- `>等待下一行,等待以反斜点(‘`’)开始的识别符的结束。
- /*>等待下一行,等待以/*开始的注释的结束。
创建并使用数据库
- 使用SHOW语句找出服务器上当前存在什么数据库:
- mysql> SHOW DATABASES;
- 如果没有SHOW DATABASES权限,则不能看见所有数据库
创建并选择数据库
- mysql> CREATE DATABASE 数据库名称;
- mysql> USE 数据库名称;
数据库只需要创建一次,但是必须在每次启动mysql会话时在使用前先选择它。你可以根据上面的例子执行一个USE语句来实现。还可以在调用mysql时,通过命令行选择数据库,只需要在提供连接参数之后指定数据库名称。
shell> mysql -h host -u user -p数据库名称;
创建表
- mysql> SHOW TABLES;
- 使用一个CREATE TABLE语句指定你的数据库表的布局:
- mysql> CREATE TABLE 表名 (列名 数据类型,多个);
- DATABASE( )函数:
- mysql> SELECT DATABASE();
- 如果你还没选择任何数据库,结果是NULL。
- mysql> SHOW TABLES;找出当前的数据库包含什么表
- mysql> DESCRIBE 表;显示表中每个列的信息:
- 创建表后,需要填入内容。通过LOAD DATA和INSERT语句可以完成该任务。
- mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
- 文本文件“pet.txt”装载到pet表中
- 请注意如果用Windows中的编辑器(使用\r\n做为行的结束符)创建文件,应使用:
- mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
- -> LINES TERMINATED BY '\r\n';
- (在运行OS X的Apple机上,应使用行结束符'\r'。)
- 如果想要一次增加一个新记录,可以使用INSERT语句。最简单的形式是,提供每一列的值,其顺序与CREATE TABLE语句中列的顺序相同。假定Diane把一只新仓鼠命名为Puffball,你可以使用下面的INSERT语句添加一条新记录:
- mysql> INSERT INTO pet
- -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
从表检索信息
SELECT语句用来从数据表中检索信息。
- 语句的一般格式是:
- SELECT what_to_select
- FROM which_table
- WHERE conditions_to_satisfy;
- SELECT最简单的形式是从一个表中检索所有记录:
- mysql> SELECT * FROM pet;
- 为了使输出减到最少,增加关键字DISTINCT检索出每个唯一的输出记录:
- mysql> SELECT DISTINCT owner FROM pet;
- 默认排序是升序,最小的值在第一。要想以降序排序,在你正在排序的列名上增加DESC(降序 )关键字:
- mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
- 日期函数,year(),month(),day(),right();
- NULL值操作 不能使用算术比较 操作符例如=、<或!=
- 使用IS NULL和IS NOT NULL操作符:
- 在MySQL中,0或 NULL意味着假而其它值意味着真。
- 布尔运算的默认真值是1。
MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。
- 正则表达式:
- like 'b%' b开头
- like '%y' y结尾
- like '%w%' w在中间
- like '_____' 正好包含5个字符的名字
扩展正则表达式的一些字符是:
- · ‘.’匹配任何单个的字符。
- · 字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
- · “ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
- 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
- 如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。
- 为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
- mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';
- 也可以使用“{n}”“重复n次”操作符重写前面的查询:
- mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';
- COUNT(*)函数计算行数
- COUNT( )和GROUP BY以各种方式分类你的数据。
使用1个以上的表
关于该查询要注意的几件事情:
- FROM子句列出两个表,因为查询需要从两个表提取信息。
- 当从多个表组合(联结)信息时,你需要指定一个表中的记录怎样能匹配其它表的记录。这很简单,因为它们都有一个name列。查询使用WHERE子句基于name值来匹配2个表中的记录。
- 因为name列出现在两个表中,当引用列时,你一定要指定哪个表。把表名附在列名前即可以实现。
- 用table.列名来避免冲突
最大值max(),最小值min();
- 可以通过AUTO_INCREMENT属性为新的行产生唯一的标识:
- id MEDIUMINT NOT NULL AUTO_INCREMENT,
- 要想以AUTO_INCREMENT值开始而不是1,你可以通过CREATE TABLE或ALTER TABLE来设置该值,如下所示:
- mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;
posted on 2012-03-12 23:33
吖鑵_sysu 阅读(209)
评论(0) 编辑 收藏