http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/index.html
mysql 学习笔记:
基本语法:
1、连接
cmd->mysql -uroot -p
初始密码为空
2、select:
select语句不区分大小写;
select语句可以当行,也可以多行,需要以分号告之已输入完毕
select语句中,若出现'or",则会出现相应的提示符:'>、">
提示符 含义
mysql> 准备好接受新命令。
-> 等待多行命令的下一行。
'> 等待下一行,等待以单引号(“'”)开始的字符串的结束。
"> 等待下一行,等待以双引号(“"”)开始的字符串的结束。
`> 等待下一行,等待以反斜点(‘`’)开始的识别符的结束。
/*> 等待下一行,等待以/*开始的注释的结束。
3、取消输入:
\c:通过该命令,告知取消已经输入的内容 需要取消
4、创建数据库
mysql>use :告知使用哪个数据库
create database :建立一数据库,其中数据库名是区分大小写的
创建完数据库之后,需要通过use命令显式地指定使用它
还可以在调用mysql时,通过命令行选择数据库:
shell> mysql -h host -u user -p
Enter password: ********
先输入命令,再输入密码,如果想在命令行上输入密码,可加在-p后面,如-ppassword,不是-p password。不建议这样,会被窥探
5、创建表
刚创建的数据库是空的,可通过show tables命令查看:
mysql> SHOW TABLES;
Empty set (0.00 sec)
建立table的语法与Oracle是一样的:
mysql> create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);
Query OK, 0 rows affected (0.03 sec)
字段的长度,可以通过alter table语句修改。oracle有varchar2,mysql没有。这个要注意
describe:可通过describe命令产看table的结构:
mysql> describe pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
6、将数据装入表中:
可使用load data 及insert 两个方式。insert和oracle的用法一致。
load data不错,比oracle方便多了
创建一个文本文件,pet.txt,列的顺序与table一致,列之间使用tab 键分开。在windows中的编辑器,使用\r\n作为行的结束符;列为空的部分,可使用\n表示
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';
insert的方式:
mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
7、从表中检索数据
select、update、delete与oracle同。支持distinct用法,支持order by
在oracle中,取当前的日期为:select sysdate from dual;mysql则不需要加后面的from,为select now(); 或select curdate();
在oracle中,select中不能实现判断,但mysql可以,例如:
select 1>0;得到的结果为1:
mysql> select 0>1;
+-----+
| 0>1 |
+-----+
| 0 |
+-----+
1 row in set (0.00 sec)
mysql> select 0<1;
+-----+
| 0<1 |
+-----+
| 1 |
+-----+
1 row in set (0.00 sec)
支持like ,not like,支持“%”,“_”->代表一个字符
mysql提供的模式匹配得其他类型是使用扩展正则表达式的:
扩展正则表达式的一些字符是:
1)、‘.’匹配任何单个的字符。
2)、 字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
3)“ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
为了找出以“b”开头的名字,使用“^”匹配名字的开始:
mysql> SELECT * FROM pet WHERE name REGEXP '^b';
如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。
mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';
为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:
mysql> SELECT * FROM pet WHERE name REGEXP 'fy$';
为了找出包含一个“w”的名字,使用以下查询:
mysql> SELECT * FROM pet WHERE name REGEXP 'w';
为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';
你也可以使用“{n}”“重复n次”操作符重写前面的查询:
mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';
count()+group by:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
8、日期计算
curdate()当前的年月日;
year(日期),取日期的年份;
month(日期),取日期的月份;
dayofmonth(日期),取这个月的第几天;
9、获取数据库和表的信息:
show databases;查询所有的存在数据库名字
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| johnson |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
使用select database() 查看当前的databse:
mysql> select database();
+------------+
| database() |
+------------+
| johnson |
+------------+
1 row in set (0.00 sec)
当前数据库有什么表:show tables;
查看表的结构:describe ;
查看表的索引:show index from ;
限制返回的行数,可以使用limit:
select *from tablename limit 2;->限制返回2笔
10、用户变量:
例如,要找出价格最高或最低的物品的,其方法是:
mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
初级的部分,先到这边吧
mysql 学习笔记:
基本语法:
1、连接
cmd->mysql -uroot -p
初始密码为空
2、select:
select语句不区分大小写;
select语句可以当行,也可以多行,需要以分号告之已输入完毕
select语句中,若出现'or",则会出现相应的提示符:'>、">
提示符 含义
mysql> 准备好接受新命令。
-> 等待多行命令的下一行。
'> 等待下一行,等待以单引号(“'”)开始的字符串的结束。
"> 等待下一行,等待以双引号(“"”)开始的字符串的结束。
`> 等待下一行,等待以反斜点(‘`’)开始的识别符的结束。
/*> 等待下一行,等待以/*开始的注释的结束。
3、取消输入:
\c:通过该命令,告知取消已经输入的内容 需要取消
4、创建数据库
mysql>use :告知使用哪个数据库
create database :建立一数据库,其中数据库名是区分大小写的
创建完数据库之后,需要通过use命令显式地指定使用它
还可以在调用mysql时,通过命令行选择数据库:
shell> mysql -h host -u user -p
Enter password: ********
先输入命令,再输入密码,如果想在命令行上输入密码,可加在-p后面,如-ppassword,不是-p password。不建议这样,会被窥探
5、创建表
刚创建的数据库是空的,可通过show tables命令查看:
mysql> SHOW TABLES;
Empty set (0.00 sec)
建立table的语法与Oracle是一样的:
mysql> create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);
Query OK, 0 rows affected (0.03 sec)
字段的长度,可以通过alter table语句修改。oracle有varchar2,mysql没有。这个要注意
describe:可通过describe命令产看table的结构:
mysql> describe pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
6、将数据装入表中:
可使用load data 及insert 两个方式。insert和oracle的用法一致。
load data不错,比oracle方便多了
创建一个文本文件,pet.txt,列的顺序与table一致,列之间使用tab 键分开。在windows中的编辑器,使用\r\n作为行的结束符;列为空的部分,可使用\n表示
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';
insert的方式:
mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
7、从表中检索数据
select、update、delete与oracle同。支持distinct用法,支持order by
在oracle中,取当前的日期为:select sysdate from dual;mysql则不需要加后面的from,为select now(); 或select curdate();
在oracle中,select中不能实现判断,但mysql可以,例如:
select 1>0;得到的结果为1:
mysql> select 0>1;
+-----+
| 0>1 |
+-----+
| 0 |
+-----+
1 row in set (0.00 sec)
mysql> select 0<1;
+-----+
| 0<1 |
+-----+
| 1 |
+-----+
1 row in set (0.00 sec)
支持like ,not like,支持“%”,“_”->代表一个字符
mysql提供的模式匹配得其他类型是使用扩展正则表达式的:
扩展正则表达式的一些字符是:
1)、‘.’匹配任何单个的字符。
2)、 字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
3)“ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
为了找出以“b”开头的名字,使用“^”匹配名字的开始:
mysql> SELECT * FROM pet WHERE name REGEXP '^b';
如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。
mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';
为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:
mysql> SELECT * FROM pet WHERE name REGEXP 'fy$';
为了找出包含一个“w”的名字,使用以下查询:
mysql> SELECT * FROM pet WHERE name REGEXP 'w';
为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';
你也可以使用“{n}”“重复n次”操作符重写前面的查询:
mysql> SELECT * FROM pet WHERE name REGEXP '^.{5}$';
count()+group by:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
8、日期计算
curdate()当前的年月日;
year(日期),取日期的年份;
month(日期),取日期的月份;
dayofmonth(日期),取这个月的第几天;
9、获取数据库和表的信息:
show databases;查询所有的存在数据库名字
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| johnson |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
使用select database() 查看当前的databse:
mysql> select database();
+------------+
| database() |
+------------+
| johnson |
+------------+
1 row in set (0.00 sec)
当前数据库有什么表:show tables;
查看表的结构:describe ;
查看表的索引:show index from ;
限制返回的行数,可以使用limit:
select *from tablename limit 2;->限制返回2笔
10、用户变量:
例如,要找出价格最高或最低的物品的,其方法是:
mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;
初级的部分,先到这边吧
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/385592/viewspace-675226/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/385592/viewspace-675226/