1、MySQL 数据类型
http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
以下内容主要来自:
http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#c1
2、
mysql -h 主机名 -u 用户名 -p
-h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
-u : 所要登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项
3、例如我们需要创建一个名为 samp_db 的数据库, 在命令行下执行以下命令:
create database samp_db character set gbk;
为了便于在命令提示符下显示中文, 在创建时通过 character set gbk 将数据库字符编码指定为 gbk
4、两种方式对数据库进行使用的选择:
一: 在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p
例如登录时选择刚刚创建的数据库: mysql -D samp_db -u root -p
二: 在登录后使用 use 语句指定, 命令: use 数据库名;
use 语句可以不加分号, 执行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed
4.5、创建表
CREATE TABLE test(a INT, b INT, c INT);
在 INT 后添加 NOT NULL 可以设置不能为空
在 INT 后添加 DEFAULT 1 可以设置默认值为 1
在 INT 后添加 AUTO_INCREMENT 可以设置自动增加 1,并且是从 1 开始的,一般可以用来做主键
在 INT 后添加 PRIMARY KEY (columns_name) 可以设定该字段为主键
注: PRIMARY KEY (columns_name) 不一定要放在 INT 后面,也可以放在 c 前面
CREATE TABLE test1 (a INT NOT NULL, b INT DEFAULT 1, c INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (c) )
5、insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:
insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
①可以省略列名,但插入的数据的个数必须要跟列名个数相等
②也可以同时插入多行数据,只是需要使用逗号隔开,并且要用括号将每行数据括起来
6、select 语句常用来根据一定的查询规则到数据库中获取数据, 其基本的用法为:
select 列名称 from 表名称 [查询条件];
7、update 语句可用来修改表中的数据, 基本的使用形式为:
update 表名称 set 列名称=新值 where 更新条件;
8、delete 语句用于删除表中的数据, 基本用法为:
delete from 表名称 where 删除条件;
9、添加列
基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
10、修改列
基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
11、删除列
基本形式: alter table 表名 drop 列名称;
12、重命名表
基本形式: alter table 表名 rename 新表名;
13、删除整张表
基本形式: drop table 表名;
14、删除整个数据库
基本形式: drop database 数据库名;
MySQL 进阶篇
http://blog.csdn.net/kaituozhe345/article/details/7241074
MySQL数据库进阶操作
http://www.cnblogs.com/allan-king/p/5800801.html
以下内容主要来自以上两个来源
15、MySql中delimiter的作用是什么?
http://www.cnblogs.com/rootq/archive/2009/05/27/1490523.html
默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
因为mysql一遇到分号,它就要自动执行。
即,在语句RETURN '';时,mysql解释器就要执行了。
这种情况下,就需要事先把delimiter换成其它符号,如//或$$
16、http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html
而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
存储过程通常有以下优点:
(1).存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
(2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
(3).存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
(4).存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。
(5).存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
17、存储过程
存储过程是一个SQL语句集合,当主动去调用存储过程时,其中内部的SQL语句会按照逻辑执行
1、创建存储过程
无参数存储过程:
-- 创建存储过程
delimiter // # 该句的命令作用是:让 分隔符 ; 变为 // ,这样只有当//出现之后,mysql解释器才会执行这段语句
create procedure p1() # 创建存储过程 p1
BEGIN
SELECT * from t1;
END //
delimiter ;
-- 执行存储过程
CALL p1()
18、http://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html
mysql中变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。
第一种用法:set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量
第二种用法:select @num:=1; 或 select @num:=字段名 from 表名 where ……
注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”
19、对于存储过程,可以接收参数,其参数有三类:
in 仅用于传入参数用
out 仅用于返回值用
inout 既可以传入又可以当作返回值
有参数存储过程:
-- 创建存储过程
delimiter \\
CREATE procedure p3(
in i1 int,
in i2 int,
inout i3 int,
out r1 int
)
BEGIN
DECLARE temp1 int default 3;
DECLARE temp2 int default 0;
set temp1 = 1;
set r1 = i1 + i2 + temp1 + temp2;
set i3 = i3 + 100;
END \\
delimiter ;
-- 执行存储过程
set @tt1 = 3;
set @tt2 = 0;
CALL p3(1, 2, @tt1, @tt2);
SELECT @tt1, @tt2;
20、删除存储过程
DROP procedure p3;
21、执行存储过程,在 17、19 中有示例
CALL p1()
CALL p3(1, 2, @tt1, @tt2);
22、视图
视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。
临时表搜索:
SELECT
*
FROM ( SELECT nid, NAME
FROM tb1
WHERE nid > 2
) AS A
WHERE A.NAME > "alex"; # 此处只比较首字母
23、describe table_name 可以显示表相关的描述
24、MySQL 算术运算符
MySQL 的算术运算符跟一般常见的都一样: +、- 、 * 、/ 、%
另外 MySQL 弱类型语言
在使用算术运算符做运算的时候,还要在前面添加 SELECT :SELECT 1 + 2;结果为 3
25、MySQL 比较运算符
MySQL 的比较运算符跟一般常见的都一样之外(但 = 是表示等于的,而不是 == ),还有 between 表示在两者之间,in 在集合之中,is null 是否为空,regexp 为正则表达式,like
注: 当使用 in 时,当 SELECT null in (1, 2, 3,null),依然返回的是 null
26、MySQL 没有 True 和 False,而是用 1 和 0 来代替
27、比较时,忽略空格,即即使两个字符串除空格外都相同,则它们被判定为 相等
28、异或运算符
# 异或
SELECT (4 > 3) XOR (6 > 5); # 结果为 0,(4>3) 为真,返回 1, (6>5)同理,故 1 和 1 的异或结果为 0
SELECT 9 ^ 5; # 结果为 12 ,先将他们转变为二进制,然后再进行异或运算,两个数的同一位相同,则为 1
-- 9:1001
-- 5:0101
-- 12:1100
SELECT 9 | 5; # 结果为 13 , 先转变为二进制,然后再进行异或运算,只要其中一个的某一位为 1, 则为 1
-- 9:1001
-- 5:0101
-- 13:1101
# 验证
SELECT 1 ^ 1;
SELECT 1 | 1;