数据库相关名词释义:
数据库(database)保存有组织的数据的容器(通常是一个文件或是一组文件) 数据库软件应称为DBMS;
表(table)某种特定类型数据的结构化清单;
模式(schema) 关于数据库和表的布局及特性信息;
列(column) 表中的一个字段,所有表都是由一列或多个列组成的;
数据类型(datetype)所容许的数据类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据;
行(row)表中的一个记录;
主键(primary key)一列(或者一组列),其值能够唯一区分表中每个行;
关键字(key word)作为MySQL语言组成部分的一个保留字,绝不要用关键字命名一个表或者列。
操作符(operator)用来联结或改变where子句中的子句的关键字,也称为逻辑操作符(logical operator);
通配符(wildcard)用来匹配值的一部分的特殊字符; %通配 任意 , _ 通配总是匹配一个字符;
搜索模式(search pattern)由字面值、通配符或两者组合构成的搜索条件;
字段(field)基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上;
拼接(concatenate)将值联结到一起构成单个值;
MYSQL 命令行实用程序
>命令输入在mysql>之后;
>命令用;或者\g结束,换句话说仅按Enter不执行命令;
>输入help或\h 获得帮助,也可以输入更多的文本获得特定命令的帮助(如,help select 获得SELECT语句的帮助);
>输入quite或exit退出命令行实用程序;
>cmd 在bin目录下连接数据库mysql -hlocalhost -uroot -p
MySQL常用命令
> use crashcourse; //使用crashcourse数据库
> show databases; //展示数据库列表
> show tables; //获得数据库内可用表的列表
> show columns from customers; // 返回customers表中的字段的信息
> describe customers; //同上 为show columns from customers; 的快捷方式
> show status; //用于显示广泛的服务器状态信息
> show create database 库名 和 show create table 表名,分别用来显示创建特定数据库或表的MySQL语句
> show grants ; //用来显示授权用户(所有用户或特定用户)的安全限制
> show errors 和 show warnings,用来显示服务器错误或警告消息
SQL中的基本正则表达式
> REGEXP 检索文本
检索列prod_name 包含文本1000的所有行
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;
. 匹配任意一个字符
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;
| 进行or匹配 匹配其中之一
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;
[] 进行和匹配 (匹配单一字符) 匹配1 Ton 或 2 Ton 或 3 Ton
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;
匹配除了123以外的东西
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '[^123] Ton' ORDER BY prod_name;
匹配范围 [0123456789] [0-9] [a-z]
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '[1-9] Ton' ORDER BY prod_name;
匹配特殊字符 ,必须要用\\为前导 \\- \\. \\\
元字符 \\f 换页 \\n 换行 \\r 回车 \\t 制表 \\v 纵向制表
e.g. SELECT vend_name from vendros where vend_name REGEXP '\\.' ORDER BY vend_name;
匹配字符类
匹配多个实例
[0-9] 匹配数字 sticks? 匹配sticks和stick (s后的?使s可选,?匹配它前面的任何字符的0次或1次出现)
e.g SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ;
[[:digit:]]{4} 匹配连在一起的任意4位数字
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}';
定位符
^ 匹配串的开始。 ^[0-9\\.]只在.或者任意数字为串的第一个字符才会匹配到他们
e.g. SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]';
SQL中的常用函数
Concat() 拼接串,各个串之间用逗号分隔;
e.g. SELECT Concat(vend_name,'(',vend_country,')') from vendors;
RTrim() 去掉串右边所有的空格。LTrim() 去掉串左边的空格 Trim()去掉串两边的空格
e.g. SELECT Concat(RTrim(vend_name),'(',RTrim(vend_country),')') from vendors;
文本处理函数
Soundex()函数 匹配发音类似的值
e.g.
日期函数
触发器
创建触发器 CREATE TRIGGER (每个表最多支持六个触发器)
e.g. CREATE TRIGGER newproduct AFTER INSTER ON products FOR EACH ROW
SELECT 'Product added'; (创建触发器失败 not allowed to return a result set from a trigger)
删除触发器 DROP TRIGGER (触发器不能更新或覆盖,如果需要修改必须先删除他);
e.g. DROP TRIGGER newproduct;
事务处理
标识事物 START TRANSACTION
回滚 ROLLBACK
提交 COMMIT
保留点 SAVEPOINT deletel;
返回保留点 ROLLBACK TO deletel;;
账户相关
查询用户 USE mysql;SELECT user FROM user;创建用户 CREATE USER gordon IDENTIFIED BY ‘gordon’;
删除账号 DROP USER gordon;
查看访问权限 SHOW GRANTS FOR gordon;
USAGE ON *.* 表示没有任何权限;
授予权限 GRANT SELECT ON crashcourse.* TO gordon;
撤销权限 REVOKE SELECT ON crashcourse.* FROM gordon;
更改口令 SET PASSWORD FOR gordon = Password(‘gordon’);
SET PASSWORD = Password(‘gordon’); (更改当前用户密码)
(口令必须传到Password()函数中加密)
备份数据
检查表键是否正确 ANALYZE TABLE orders ;检查表 CHECK TABLE orders,orderitems;
Tips 1 通配符使用技巧【通配符搜索的处理一般比其他的搜索花时间更长】
> 不要过度使用通配符,如果其他操作符可以达到相同目的,应该使用其他操作符;
> 在确实需要通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处,把通配符至于搜索模式的开始处,搜索起来是最慢的;
> 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据;