数据库基本类型

CHAR 固定长度字符串 char(10) 存两位 占10位 查询有优势
VARCHAR 可变长度字符串 varchar(10) 存两位 占两位 存储有优势

枚举类型 只能取一个
set类型 能取多个

二进制类型 常用BLOB

一、避免创建数据库及表出现中文乱码和查看编码方法

#vim /etc/mysql/my.cnf 。(5.5以后系统)如下修改:
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci

1、创建数据库的时候:
CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';

2、建表的时候 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

代码练习数据:

create table `t_student` (
`id` double ,
`stuName` varchar (60),
`age` double ,
`sex` varchar (30),
`gradeName` varchar (60)
);
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('1','张三','23','男','一年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('2','张三丰','25','男','二年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('3','李四','23','男','一年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('4','王五','22','男','三年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('5','珍妮','21','女','一年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('6','李娜','26','女','二年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('7','王峰','20','男','三年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('8','梦娜','21','女','二年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('9','小黑','22','男','一年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('10','追风','25','男','二年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('11','小小张三','21',NULL,'二年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('12','小张三','23','男','二年级');
insert into `t_student` (`id`, `stuName`, `age`, `sex`, `gradeName`) values('13','张三锋小','24',NULL,'二年级');

查询

单表查询
 in 语句
  SELECT * FROM t_student WHERE age in (21,23);

 not in 语句
  SELECT * FROM t_student WHERE age not in (21,23);

between and
  SELECT * FROM t_student WHERE age BETWEEN 21 and 24;

not between and
  SELECT * FROM t_student WHERE age not BETWEEN 21 and 24;

like 模糊查询
  % 代表任意字符
  _ 代表单个字符
  SELECT * FROM t_student WHERE stuName LIKE '张%';
  SELECT * FROM t_student WHERE stuName LIKE '张_';
  SELECT * FROM t_student WHERE stuName LIKE '张__';(两个下划线代表两个字符)

空值查询
  SELECT * FROM t_student WHERE sex IS NULL;
  SELECT * FROM t_student WHERE sex IS NOT NULL;

带And的条件查询
  SELECT * FROM t_student WHERE gradeName='一年级' AND age=23;

带or的条件查询
  SELECT * FROM t_student WHERE age=21 or age=23;

distinct 去重复查询
  SELECT DISTINCT gradeName FROM t_student;

对查询结果排序
  SELECT * from t_student ORDER BY age DESC;(降序)
  SELECT * from t_student ORDER BY age ASC;(升序)

group by 分组查询
  group by 属性 [HAVING 条件表达式][WITH ROLLUP]
    1.单独使用没有意义
    SELECT * from t_student GROUP BY gradeName;
    1 张三 23 男 一年级
    4 王五 22 男 三年级
    2 张三丰 25 男 二年级

   2.与 GROUP_CONCAT()函数一起使用
    GROUP_CONCAT()会计算哪些行属于同一组,将属于同一组的列显示出来。
    要返回哪些列,由函数参数(就是字段名)决定。
    分组必须有个标准,就是根据group by指定的列进行分组。

    SELECT gradeName,GROUP_CONCAT(stuName) from t_student GROUP BY gradeName;
    1 一年级 张三,小黑,李四,珍妮
    7 三年级 王峰,王五
    6 二年级 李娜,梦娜,张三丰,追风,小小张三,小张三,张三锋小

   3.与聚合函数一起使用
    1 一年级 4
    4 三年级 2
    2 二年级 7

  4.与HAVING一起使用(限制输出的结果)
  SELECT
  id,
  gradeName,
  COUNT(stuName)
  FROM
  t_student
  GROUP BY
  gradeName
  HAVING
  COUNT(stuName) > 3;

  1 一年级 4
  2 二年级 7

  5.与 with rollup 一起使用(最后加入一个总和行)
  SELECT gradeName,COUNT(stuName) FROM t_student GROUP BY gradeName with ROLLUP

  1 一年级 4
  7 三年级 2
  6 二年级 7
  6 13

  SELECT id,gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName with ROLLUP

  1 一年级 张三,小黑,李四,珍妮
  7 三年级 王峰,王五
  6 二年级 李娜,梦娜,张三丰,追风,小小张三,小张三,张三锋小
  6 张三,小黑,李四,珍妮,王峰,王五,李娜,梦娜,张三丰,追风,小小张三,小张三,张三锋小

  6. LIMIT 分页查询
  select 字段1,字段2 from 表名 limit 初始位置,每页大小;
  SELECT * from t_student LIMIT 0,5;
  SELECT * from t_student LIMIT 5,5;
  SELECT * from t_student LIMIT 10,5;
  1 张三 23 男 一年级
  2 张三丰 25 男 二年级
  3 李四 23 男 一年级
  4 王五 22 男 三年级
  5 珍妮 21 女 一年级

  6 李娜 26 女 二年级
  7 王峰 20 男 三年级
  8 梦娜 21 女 二年级
  9 小黑 22 男 一年级
  10 追风 25 男 二年级

  11 小小张三 21 二年级
  12 小张三 23 男 二年级
  13 张三锋小 24 二年级

  使用聚合函数查询

  create table `t_grade` (
  `id` int ,
  `stuName` varchar (60),
  `course` varchar (60),
  `score` int
  )ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('1','张三','语文','91');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('2','张三','数学','90');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('3','张三','英语','87');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('4','李四','语文','79');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('5','李四','数学','95');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('6','李四','英语','80');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('7','王五','语文','77');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('8','王五','数学','81');
insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('9','王五','英语','89');

1、count()函数
1)统计记录的条数
SELECT COUNT(*) AS total FROM t_grade;
2)与group by 函数一起使用。
SELECT stuName,COUNT(*) FROM t_grade GROUP BY stuName;
张三 3
李四 3
王五 3

2、sum() 函数
1)求和
SELECT stuName,SUM(score) FROM t_grade WHERE stuName="张三";
2)与group by 函数一起使用
SELECT stuName,SUM(score) FROM t_grade GROUP BY stuName;
张三 268
李四 254
王五 247

3、avg() 函数
1)求平均值
SELECT stuName,AVG(score) FROM t_grade WHERE stuName="张三";
2)与group by 函数一起使用
SELECT stuName,AVG(score) FROM t_grade GROUP BY stuName;

4、max()/min() 函数
1)求最大值
SELECT stuName,course,MAX(score) FROM t_grade WHERE stuName="张三";
2)与group by 函数一起使用,此处不能加course 因为有stuName
SELECT stuName,MAX(score) FROM t_grade GROUP BY stuName;

连接查询:将两个或两个以上的表,按照某个条件连接起来,从中选择需要的数据。
笛卡尔乘积
SELECT * FROM t_book,t_booktype;

1、内连接查询
内连接查询是一种最常用的连接查询。内连接查询可以查询两个或两个以上的表。
SELECT * from t_book,t_booktype WHERE t_book.bookTypeId=t_booktype.id;
别名:
SELECT tb.bookName,tb.author,tby.bookTypeName from t_book tb,t_booktype tby WHERE tb.bookTypeId=tby.id;
2、外链接查询
外链接可以查出某一张表的所有信息
SELECT 属性名列表 from 表名1 left/right join 表名2 on 表名1.属性名1=表名2.属性名2
2.1左连接查询
可以查询出“表名1”的所有记录,而“表名2”中,只能查询出匹配的记录。不匹配的用null
SELECT * FROM t_book LEFT JOIN t_booktype ON t_book.bookTypeId=t_booktype.id;
别名:
SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb LEFT JOIN t_booktype tby ON tb.bookTypeId=tby.id;
2.2右连接查询
可以查询出“表名2”的所有记录,而“表名1”中,只能查询出匹配的记录。
SELECT * FROM t_book right JOIN t_booktype ON t_book.bookTypeId=t_booktype.id;
SELECT tb.bookName,tb.author,tby.bookTypeName FROM t_book tb right JOIN t_booktype tby ON tb.bookTypeId=tby.id;
3、多条件连接查询
SELECT tb.bookName,tb.author,tby.bookTypeName from t_book tb,t_booktype tby WHERE tb.bookTypeId=tby.id and tb.price>70;

子查询

create table `t_pricelevel` (
`id` int ,
`priceLevel` int ,
`price` float ,
`description` varchar (300)
);
insert into `t_pricelevel` (`id`, `priceLevel`, `price`, `description`) values('1','1','80.00','价格贵的书');
insert into `t_pricelevel` (`id`, `priceLevel`, `price`, `description`) values('2','2','60.00','价格适中的书');
insert into `t_pricelevel` (`id`, `priceLevel`, `price`, `description`) values('3','3','40.00','价格便宜的书');

1、带in关键字的查询
一个查询语句的条件可能落在另一个SELECT 语句的查询结果中。
select * from t_book where bookTypeId in (select id from t_booktype);
select * from t_book where bookTypeId not in (select id from t_booktype);

2、带比较运算符的查询(单一)
子查询可以使用比较运算符,查询出来的结果要是能够进行比较判断的,不能是集合
select * from t_book where price>=(select price from t_pricelevel where priceLevel=1);

3、带Exists关键字的查询
假如子查询查询到记录,则执行外层查询,否则,不执行外层查询。
select * from t_book where exists(select * from t_booktype);
select * from t_book where not exists(select * from t_booktype);

4、带ANY关键字的子查询(集合)
ANY关键字表示满足其中任一条件
select * from t_book where price >=ANY(select price from t_pricelevel);

5、带ALL关键字的查询
ALL关键字表示满足所有条件
select * from t_book where price >=ALL(select price from t_pricelevel);

合并查询
1、UNION
数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录。
select id from t_book union select id from t_booktype;
2、UNION ALL
数据库系统会将所有的查询结果合并到一起,不会除掉相同的记录。
select id from t_book union all select id from t_booktyp;

为表和字段取别名:
1、为表取别名
格式:表名 表的别名
select * from t_book tb where tb.id=1;
2、为字段取别名
格式:属性名 [AS] 别名
select tb.bookName bName from t_book tb where tb.id=1;
select tb.bookName as bName from t_book tb where tb.id=1;

插入、更新、删除数据

1、插入数据
给表的所有字段插入数据
格式:INSERT INTO 表名 VALUES (V1,V2,V3,...,Vn);
INSERT into t_book values (null,'数据库',23,风诺依曼,1);
INSERT into t_book (id,bookName,price,author,bookTypeId) values (null,'数据库',23,风诺依曼,1);

给表指定字段插入数据
格式:INSERT INTO 表名(属性1,属性2,...,属性n) VALUES (V1,V2,...,Vn);
INSERT into t_book (bookName,author)values ('数据库',风诺依曼);

同时插入多条记录
INSERT into t_book (id,bookName,price,author,bookTypeId)
values (null,'数据库',23,风诺依曼,1),
    (null,'数据库2',23,风诺依曼,1)
    (null,'数据库3',23,风诺依曼,1);

在SQL中如何向指定的某一行的某一列插入值:insert 不支持 where 用 update

更新数据
update t_book set bookName='JAVA编程思想',price=120 where id =1;
update t_book set bookName='数据原来' where bookName like '%我爱我家%';

删除数据
delete from t_book where id = 5;

索引

索引的引入
索引定义:索引由数据库表中一列或者多列组合而成,其作用是
提高对表中数据的查询速度;类似于图书的目录,方便快速定位,寻
找指定的内容。

索引的优缺点
优点:提高查询数据速度
缺点:创建和维护索引的时间增加

// 2016/1/6 复习至此处
索引分类
1.普通索引
可以创建在任何数据类型中
2.唯一性索引
使用UNIQUE参数可以设置,在创建唯一性索引时,限制该索引的值必须
是唯一的,主键默认是UNIQUE索引
3.全文索引
使用FULLTEXT参数设置,只能创建在CHAR,VARCHAR,TEXT类型
的字段上。主要作用就是提高查询较大字符串类型的速度,Mysql
默认引擎不支持全文索引
4.单列索引
在表中可以给单个字段创建索引
5.多列索引
表在多个字段上创建的索引
6.空间索引
使用SPATIAL参数可以设置空间索引,空间索引只能建立在空间
数据类型上,这样可以提高系统获取空间数据的效率。MYSQL默认引擎不支持

创建索引

1.创建表的时候创建索引
CREATE TABLE 表名(
属性名数据类型[完整性约束条件],
属性名数据类型[完整性约束条件],
....
属性名数据类型
[UNIQUE | FULLTEXT | SPATIAL ] INDEX| KEY
[别名] (属性名1 [(长度)] [ASC | DESC])
);
CREATE TABLE t_user1 (
id INT (11),
userName VARCHAR (20),
PASSWORD VARCHAR (20),
INDEX (userName)
);
唯一性索引
CREATE TABLE t_user2 (
id INT (11),
userName VARCHAR (20),
PASSWORD VARCHAR (20),
UNIQUE INDEX (userName)
);
取别名
CREATE TABLE t_user2 (
id INT,
userName VARCHAR (20),
PASSWORD VARCHAR (20),
INDEX index_userName (userName)
);
多列索引
CREATE TABLE t_user3 (
id INT,
userName VARCHAR (20),
PASSWORD VARCHAR (20),
INDEX index_userName_password (userName, PASSWORD)
);

2.在已存在的表上创建索引
在t_user3上的userName创建索引
create index index_userName on t_user3(userName); // 要有索引名
在t_user3上的userName创建唯一索引
create unique index index_userName on t_user3(userName);
在t_user3创建多列索引
create index index_userName_password on t_user3(userName,password);

3.用 ALTER TABLE 语句创建索引
alter table t_user3 add index index_userName(userName);
alter table t_user3 add unique index index_userName(userName);
alter table t_user3 add index index_userName_password(userName,password);

删除索引
drop index index_userName on t_user3;

视图
1,视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。
2,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。
3,使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。

视图的作用
1,使操作简便化;
2,增加数据的安全性;
3,提高表的逻辑独立性;

1.创建视图
CREATE [ ALGORITHM ={ UNDEFIEND | MERGE | TEMPTABLE }]
VIEW 视图名[ ( 属性清单) ]
AS SELECT 语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

2.单表创建视图
CREATE VIEW v1 AS SELECT * from t_book;

CREATE VIEW v2 AS SELECT bookName,price from t_book;
SELECT * FROM v1;//只能查视图中的数据,其他的查不到,保证了安全性

CREATE VIEW v2(b,p) AS SELECT bookName,price from t_book; // 换掉视图栏位上的名字

3.多表创建视图
create view v4 as select tb.bookName,tby.bookTypeName from t_book tb ,t_booktype tby where tb.bookTypeId=tby.id;

4.查看视图
desc v2; // 查看视图的基本信息
show TABLE STATUS like 'v2'; // 查看视图基本信息,与上面的不同
show TABLE STATUS like 't_book';

show CREATE VIEW v2; // 查看视图详细信息

5.修改视图
create or replace view 语句修改视图
CREATE OR REPLACE [ ALGORITHM ={ UNDEFINED | MERGE | TEMPTABLE }]
VIEW 视图名[( 属性清单)]
AS SELECT 语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

CREATE
OR REPLACE VIEW v1 (bookName, price) AS SELECT
bookName,
price
FROM
t_book;

ALTER 语句修改视图
ALTER [ ALGORITHM ={ UNDEFINED | MERGE | TEMPTABLE }]
VIEW 视图名[( 属性清单)]
AS SELECT 语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ];

ALTER VIEW v1 as SELECT * FROM t_book;

6.更新视图
更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚
拟的表,其中没有数据。通过视图更新时,都是转换基本表来更新。更新视图时,只能更新权限范围内的数据。
超出了范围,就不能更新。
插入数据
insert into v1 values(null,'java good',120,'fei',1);
更新数据
update v1 set bookName='java very good',price=200 where id=5;
删除数据
delete from v1 where id=5;

7.删除视图
删除视图是指删除数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据;
DROP VIEW [ IF EXISTS ] 视图名列表[ RESTRICT | CASCADE ]
drop view if exists v2;

触发器
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT 语句、UPDATE 语句和DELETE 语句。
当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
例子:在A表插入数据,触发B表插入数据

1.创建与使用触发器

创建只有一个执行语句的触发器
CREATE TRIGGER trig_book AFTER INSERT
ON t_book FOR EACH ROW

CREATE TRIGGER trig_book AFTER INSERT
ON t_book FOR EACH ROW
UPDATE t_booktype SET bookNum=bookNum+1 WHERE new.bookTypeId=t_booktype.id;
new 为过渡变量,代表插入后的新表

创建有多个执行语句的触发器
CREATE TRIGGER 触发器名BEFORE | AFTER 触发事件
ON 表名FOR EACH ROW
BEGIN
执行语句列表
END

CREATE TRIGGER trig_book2 AFTER DELETE
on t_book FOR EACH ROW
BEGIN
UPDATE t_booktype SET bookNum=bookNum-1 WHERE new.bookTypeId=t_booktype.id;
INSERT INTO t_log VALUES (null,'在t_book表中删除了一条数据');
DELETE FROM t_test WHERE old.bookTypeId=t_test.id;
END

// 下述语句在数据库中执行错误,且没有修改正确
delimiter |
CREATE TRIGGER trig_book2 AFTER DELETE
on t_book FOR EACH ROW
BEGIN
UPDATE t_booktype SET bookNum=bookNum-1 WHERE old.bookTypeId=t_booktype.id;
INSERT INTO t_log VALUES (null,NOW(),'在t_book表中删除了一条数据');
DELETE FROM t_test WHERE old.bookTypeId=t_test.id;
END
|
delimiter;

3.查看触发器
SHOW TRIGGERS 语句查看触发器信息 ==>所有触发器

4.删除触发器
DROP TRIGGER 触发器名;

MySQL数据库基本指令(全)的更多相关文章

  1. MySQL数据库基本指令

    对MySQL的指令不太熟悉,在此特别整理了一下一些常用的指令: 约定:大写字母写SQL关键字和函数名,小写字母写数据库.数据表和数据列的名字.(下述代码更新不同步,部分代码未依据此约定) 1 数据库的 ...

  2. mysql数据库操作指令汇总

    1.mysql -u root -p 登录数据库 2.表结构相同两表数据对拷 insert into A select * from B(插入全部字段数据)   insert into A(字段1.字 ...

  3. Mysql数据库基础知识(全)

    前言:本博文为个人笔记,记录了Mysql的一些基本操作,一般掌握本博文就可以了解数据库.表.数据项的增删改查,希望对大家的学习有所帮助. 首先下载PHPSTUDY,将Mysql配置为系统变量. 具体操 ...

  4. mysql数据库操作指令

    数据库相关 查询所有数据库 show databases; 创建数据库 create database 数据库名: 创建数据库指定字符集 create database 数据库名 character ...

  5. 从零开始的全栈工程师——MySQL数据库( Dos命令 ) ( phpstudy )

    MySQL是一个关系型数据库,存在表的概念.结构,数据库可以存放多张表,每个表里可以存放多个字段,每个字段可以存放多个记录. phpstudy使用终端打开数据库的命令行 密码: root 数据库 查看 ...

  6. mysql数据库指令导入导出

    mysql数据库导出使用  /mysql/bin/mysqldump指令 数据库导出 导出指令: [mysql安装目录]/bin/mysqldump -u[username] -p[password] ...

  7. Xtrabackup全量备份与恢复mysql数据库

    一.Xtrabackup简单概述: Percona  Xtrabackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同 ...

  8. mysql数据库,什么是数据库的全备份?

    需求描述: 今天要做mysql数据库的全备份,那么就要弄清楚一个概念,到底什么是数据库的全备份呢. 概念解释: 数据库的全备份,就是在一个给定的时间点,对于mysql服务器管理的所有的数据进行备份. ...

  9. 超全面的JavaWeb笔记day15<mysql数据库>

    1.数据库的概述 2.SQL 3.DDL 4.DML 5.DCL 6.DQL MySQL 数据库 1 数据库概念(了解) 1.1 什么是数据库 数据库就是用来存储和管理数据的仓库! 数据库存储数据的优 ...

随机推荐

  1. WPF中的依赖项属性

    Form cnblogs 桂素伟 随着WPF的推广,不得不重新拾起WPF来,因为这块的产品越来越多. 只能跟着MSDN来学了,所以想是在这里记录下学习的过程和对知识的理解. 先从最基本的吧,依赖项属性 ...

  2. BurpSuite抓App数据包的方法

    软件准备: 1.猎豹wifi 2.BurpSuite或者fillder都可以 查看电脑IP地址: 网卡ip: 确保无线网卡的IP和手机的代理IP保持一致即可

  3. Angular JS学习之指令

    1.Angular JS通过称为指令的新属性来扩展HTML:通过内置的指令来为应用添加功能: 2.AngularJS指令:AngularJS指令是扩展的HTML属性,带有前缀ng-: **ng-app ...

  4. npm 模块常用命令

    mocha mocha --compilers js:babel/register : 在babel模式下测试,默认查找test文件夹,注意此时全局不要安装babel; ./node_modules/ ...

  5. BZOJ 3542 [Poi2014]Couriers ——可持久化线段树

    [题目分析] 查找区间内出现次数大于一半的数字. 直接用主席树,线段树上维护区间大小,由于要求出现次数大于一半,每到一个节点可以分治下去. 时间复杂度(N+Q)logN [代码] #include & ...

  6. http://m.blog.csdn.net/article/details?id=8237698

    http://m.blog.csdn.net/article/details?id=8237698

  7. 树状数组 + 位运算 LA 4013 A Sequence of Numbers

    题目传送门 题意:n个数,两种操作,一是每个数字加x,二是查询& (1 << T) == 1 的个数 分析:因为累加是永远的,所以可以离线处理.树状数组点是c[16][M] 表示数 ...

  8. xampp的Apache无法启动解决方法

    XAMPP Apache 无法启动原因1(缺少VC运行库): 这个就是我遇到的问题原因,下载安装的XAMPP版本是xampp-win32-1.7.7-VC9,而现有的Windows XP系统又没有安装 ...

  9. Map.Entry用法示例

    一般在HashMap中可以通过key值得到value值,以key作为检索项.Map.Entry<K,V>可以作为条目的检索项.HashMap中有entrySet()方法,返回值是Set&l ...

  10. EF框架step by step(7)—Code First DataAnnotations(1)

    Data annotation特性是在.NET 3.5中引进的,给ASP.NET web应用中的类提供了一种添加验证的方式.Code First允许你使用代码来建立实体框架模型,同时允许用Data a ...