MySQL学习
命令由SQL+;组成,有一些不需要分号,不区分大小写,以表格呈现
一行输入多语句,以一个分号间隔:SELECT VERSION(); SELECT NOW();
查询版本、日期:SELECT VERSION(),CURRENT_DATE;
计算:SELECT SIN(PI()/4), (4+1)*5;
较长命令可以输入到多个行中
mysql> SELECT
-> USER()
-> ,
-> CURRENT_DATE;
如果你决定不想执行正在输入过程中的一个命令,输入\c取消它:
查看当前存在数据库:SHOW DATABASES;
进入:mysql> USE name
创建:mysql> CREATE DATABASE menagerie;
表:
显示表:mysql> SHOW TABLES;
创建表:必须指明列名
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
显示表列名、类型:mysql> DESCRIBE pet;
从本地数据导入到表:
先建立一个数据文本,如a/txt; 数据若是空null,在文本中用\n
导入:mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
-> LINES TERMINATED BY '\r\n';
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
若是插入:mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
这里字符串和日期值均为引号扩起来的字符串
检索:
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
eg:
SELECT * FROM pet where a and b;
修正:
UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';
选择:
SELECT * FROM pet WHERE name = 'Bowser'; 有where部分确定范围,还可以 用 AND / OR 来约束
选择特殊列:
SELECT name, birth FROM pet;
增加关键字DISTINCT检索出每个唯一的输出记录:
mysql> SELECT DISTINCT owner FROM pet;
特定排序:
mysql> SELECT name, birth FROM pet ORDER BY birth;
某一列,可以使用BINARY强制执行区分大小写的分类功能,如:ORDER BY BINARY col_name.
默认排序是升序,降序 :
mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
对多个列进行排序
SELECT name, species, birth FROM pet
-> ORDER BY species, birth DESC;
日期计算:
YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。YEAR(CURDATE()) RIGHT(birth,5))
SELECT name, birth, CURDATE(),
-> (YEAR(CURDATE())-YEAR(birth))
-> - (RIGHT(CURDATE(),5)<RIGHT(birth,5))
-> AS age 作为年龄
-> FROM pet ORDER BY name;
MONTH( )
DAYOFMONTH( )。
取模函数(MOD)
判断null:IS NULL IS NOT NULL ---0/1
正则:
“_”匹配任何单个字符
“%”匹配任意数目字符(包括零字符)。
不能使用=或!=;
SELECT * FROM pet WHERE name LIKE 'b%'; %gg% b开头
匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,
‘.’匹配任何单个的字符。
· 字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
· “ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
eg:SELECT * FROM pet WHERE name REGEXP '^b'; b开头
行:
COUNT(*)函数计算行数:SELECT COUNT(*) FROM pet;
GROUP:分组
SELECT owner, COUNT(*) FROM pet GROUP BY owner;
未完待续。。。