『python工作』MySQL 数据库学习

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;












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值