My SQL 使用小记
2012-07-27 08:29 音乐让我说 阅读(636) 评论(0) 编辑 收藏 举报以下是我自己整理的 MySQL 小记,方便下次温习。
MySQL 学习 Pdf 文档(Fish li):点击下载
阿里巴巴 Java 开发手册(里面有 MySQL 规范):点击下载
1. My SQL 连接字符串,如果是连接本地的话:Server=localhost;Database=HelloWorld;Uid=root;Pwd=root;
或者:Data Source=localhost;Initial Catalog=HelloWorld;User ID=root;Password=root;Pooling=True;charset=utf8;MAX Pool Size=2000;Min Pool Size=1;Connection Lifetime=30;
2. My SQL 中 建立一个自动增长的主键,和插入一条记录,
select last_insert_id(); 用来得到 插入完数据以后,自动增长的数据的SQL语句
例子如下:
注意:AUTO_INCREMENT 表示自动增长,AUTO_INCREMENT=1000 表示种子数。插入记录时,insert into 表名(/* 这里必须填完整 */) values(/* 这里的值和上面的列名一一对应 */)
create table Topic
(
ID int AUTO_INCREMENT NOT NULL primary key,
'Name' varchar(50) NOT NULL,
CategoryId int NOT NULL,
CoverImageFilePath varchar(250) NULL,
Description varchar(200) NULL,
IsShow bit NOT NULL,
CreateOn datetime NOT NULL,
CreateBy varchar(50) NULL
);
alter table Topic AUTO_INCREMENT=1;
select * from Topic;
insert into 'Test'('Name')
values('bruce')
ALTER TABLE `HelloWorld_hd`.`topic` ADD CONSTRAINT `FK_Topic_CategoryId_Category_ID` FOREIGN KEY (`ID` ) REFERENCES `HelloWorld_hd`.`category` (`ID` ) ON DELETE NO ACTION ON UPDATE NO ACTION, ADD INDEX `FK_Topic_CategoryId_Category_ID` (`ID` ASC) ;
3. SQL Server 中用 getDate() 表示当前时间,My SQL 中用 now()
4. MySql 使用参数化查询,关键符号为 ?
MySqlConnection conn = new MySqlConnection(connstr);
conn.Open();
MySqlCommand cmd = new MySqlCommand("select count(1) from qyexam_notice where title=?title",conn);
cmd.Parameters.Add(new MySqlParameter("?title", "《测试》2011/12/14 10:47:00开始"));
object obj = cmd.ExecuteScalar();
conn.Close();
5. 如果 Product 表的 CategoryId 引用了 Category 表的 ID,那么删除 Category 表的某条记录,假设这条记录已经被 Product 表的某条记录关联了,那么执行 ExecuteNonQuery 时,将抛出异常,在删除多条时,也会抛出异常。而在 SQL Server 中不会,只不过受影响的行数为零。
异常信息:Cannot delete or update a parent row: a foreign key constraint fails (`HelloWorld_hd`.`topic`, CONSTRAINT `FK_Topic_CategoryId_Category_ID` FOREIGN KEY (`CategoryId`) REFERENCES `category` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION)
6. MySql 中字符串拼接用 concat ,而在 sql server 中直接用 +
本文通过实例介绍了MySQL中的concat函数的使用方法,比如select concat('11','22','33')。
MySQL中concat函数
使用方法:
CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
7> MySQL 数据库文件一般存储在,如果是 Windows 7,那么在 C:\ProgramData\MySQL\MySQL Server 5.5\data 里面。如果是 XP,一般在 C:\Documents and Settings\All Users\Application Data\MySQL
8> MySQL 备份数据库,用 mysqldump 命令。
9> MySQL 中 and 的优先级大于 or 。比如 select * from product where categoryId = 1001 or categoryId=1002 and Id=8899 ,那么上面的 SQL 语句等于 select * from product where categoryId = 1001 or (categoryId=1002 and Id=8899 )
10> MySQL 中不支持 nvarchar 、guid 类型
11> select if(1>2,'true','false') 结果为 false, 相当于 C# 中的三元运算符。
12> SQL Server 中的 IsNull(exp, result) 大致相当于 MySQL 中的 IfNull。但有不同。SQL Server 中 如果 exp 成立,则结果为 result,而 MySQL 中的 IfNull(exp, result) 表示如果 exp 不为 null,则返回 exp,否则返回 result。
13> MySQL 中的 NULLIF(expr1,expr2) : 如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END 相同。
14> select ascii('a'); 结果为 97。 意思:返回参数字符串最左边的一个字符的数值,结果从 0 到 255。如果参数为空字符串,将返回 0。
15> 手动设置某个表的 编码,比如下面。但最好建库的时候,就设置默认的编码:ALTER SCHEMA `HelloWorld_newsmanagement` DEFAULT CHARACTER SET utf8 ;
-- 设置全局的默认编码
create database DBHelloWorld;
use DBHelloWorld;
ALTER SCHEMA DBHelloWorld DEFAULT CHARACTER SET utf8;
-- 设置某个表的默认编码
DROP TABLE IF EXISTS NewsFrom;
CREATE TABLE NewsFrom (
`Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键Id',
`Name` varchar(32) NOT NULL COMMENT '名称',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='文章来源表,表示让用户快速给某篇文章选择来源。';
16> 注意:MySql 中建库、建表、建存储过程时最好是小写,以免因为大小写而导致调用失败。 比如:刚刚我建立了一个 proc_newsCategory_hier 存储过程,创建成功后,其实 MySql 就自动把它转换为小写了,导致调用的时候,MySql 老是报错: Procedure or function '`proc_newscategory_hier`' cannot be found in database '`newsmanagement`'. 所以:经验是 数据库的名称、连接字符串中 Initial Catalog=newsmanagement 一定要全部小写。
17> ADO.NET 中 new MySqlParameter("?categoryId", id) 参数的符号 "?" 可以加,也可以不加。
18> 推荐一款数据库管理的客户端工具:Navicat Premium,它支持 MSSQLServier、Oracle、MySql 等数据库,大小才 30 几 MB。
19> MySQL 解析 XML 字符串
SELECT ExtractValue('<root><row>1</row><row>2</row></root>', '//row');
20> 在mysql中查询一个数据库中的所有表
查所有数据库:show databases use (填数据库名字)databasename 查所有表:show tables;
21>
以后会时常更新....
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步