### Mysql 数据库学习心得(3)

三.Mysql常识

(一)字段类型

1.INT[(M)]

正常大小整数类型

2.DOUBLE[(M,D)] [ZEROFILL]

正常大小(双精密)浮点数字类型

3.DATE

日期类型。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值，但是允许你使用字符串或数字把值赋给　　DATE列

4.CHAR(M)

定长字符串类型，当存储时，总是是用空格填满右边到指定的长度

5.BLOB TEXT

BLOB或TEXT类型，最大长度为65535(2^16-1)个字符。

6.VARCHAR

变长字符串类型，最常用的类型。

(二)基本操作

1:显示数据库

mysql>SHOW DATABASES;

2：当前选择的数据库，

mysql> SELECT DATABASE();

+------------+

| DATABASE() |

+------------+

| test |

+------------+

3.当前数据库包含的表信息：

mysql> SHOW TABLES;

+---------------------+

| Tables in test |

+---------------------+

| mytable1 |

| mytable2 |

+---------------------+

4.获取表结构

mysql> desc mytable1;

+---------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+-------------+------+-----+---------+-------+

| s1 | varchar(20) | YES | | NULL | |

+---------+-------------+------+-----+---------+-------+

5.创建表

表是数据库的最基本元素之一，表与表之间可以相互独立，也可以相互关联。创建表的基本语法如下：

create table table_name

(column_name datatype {identity |null|not null},

…)

其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求，参数datatype是一个标准的SQL类型或由用户数　　据库提供的类型。用户要使用non-null从句为各字段输入数据。

create table还有一些其他选项，如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有，在创建表是可用PRIMARY 　　KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。书写上要注意：在一对圆括号里的列出完整的字段清单。字段名间用逗号隔开　　。字段名间的逗号后要加一个空格。最后一个字段名后不用逗号。所有的SQL陈述都以分号";"结束。

例：

mysql>CREATE TABLE guest (name varchar(10),sex varchar(2),age int(3),career varchar(10));

6.创建索引

索引用于对数据库的查询。一般数据库建有多种索引方案，每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建　　索引的基本语法如下：

create index index_name

on table_name (col_name[(length)],... )

例：

mysql> CREATE INDEX number ON guest (number(10));

7.执行查询

查询是使用最多的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检查左边是否为空值

在这里，可以用通配符_代表任何一个字符，%代表任何字符串。使用关键字、和可以生成复杂的词，它们运行检查时使用　　布尔表达式的多重标准集。

例：

mysql> select t1.name, t2.salary from employee AS t1, info AS t2swherest1.name = t2.name;

mysql> select college, region, seed from tournament

ORDER BY region, seed;

mysql> select col_name from tbl_nameswherescol_name > 0;

8.改变表结构

在数据库的使用过程中，有时需要改变它的表结构，包括改变字段名，甚至改变不同数据库字段间的关系。可以实现上述改变的命令是alter，其基本语法如下：

alter table table_name alter_spec [, alter_spec ...]

例：

mysql> alter table dbname add column userid int(11) not null primary key auto_increment;

这样，就在表dbname中添加了一个字段userid，类型为int(11)。

9.修改表中数据

在使用数据库过程中，往往要修改其表中的数据，比如往表中添加新数据，删除表中原有数据，或对表中原有数据进行更改。它们的基本　　语法如下：

数据添加：

insert [into] table_name [(column(s))]

values (expression(s))

例：

mysql>insertsintosmydatabase values('php','mysql','asp','sqlserver','jsp','oracle');