yulianggo

常用的数据类型

int:整型

varchar(n):可变长度的char

datetime:时间

float(m,d): 共有m位数,少数点后有d位

test:最多可以存65535个数

 

数据库操作(CRUD)

  C:create,R:read,U:update,D:delete

具体操作:

  INSERT INTO table_name(列1,列2) VALUES(值1,值2)

  SELECT */列名称 FROM 表名称

  UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

  DELET FROM 表名称 WHERE 列名称 = 值(实际上公司的开发中,数据库从来不删除DELETE数据,而是用状态字段表示用户采取的措施)。

不区分大小写

  在windows中所有指令不区分大小写

     如图所示:

  

  

  create==CREate且aa==AA

 

不建议用*查询所有字段

  在workbench中用指令操作数据库:

1 insert into first_db.user(name, password) values(\'yulang\', \'123456\');
2 SELECT * FROM first_db.user;

  在实际工作中不要用*,因为数据库有很多列,读取所有列需要占用很大一部分网速。

  结果显示:

  

 

select语句进阶

  如下:

1 //选出某几列
2 SELECT {COLA, COLB, *} FROM {TABLE}
3 //只有满足CONDITION条件才显示
4 WHERE {CONDITION}
5 //每一行按照某列的大小升序,或降序(desc)排列
6 ORDER BY {COL} DESC
7 //取出一定数目的行,OFF表示偏移量,COUNT表示取出的行数
8 LIMIT {OFF},{COUNT}

 扩展

  condition表达式可以包含一些运算符,例如:

  1.>, <, ==等比较运算符。

  2.in。例子:id in (1, 5, 6) 表示id为1或者5或者6。

  3. and等逻辑运算符。

  4.between。例子:id between 2 and 5;表示在id在[2,5]中。 

  代码:

 1 #insert into first_db.user(id,name, password) values(1,\'a1\', \'b1\');
 2 #insert into first_db.user(id,name, password) values(2,\'a2\', \'b2\');
 3 #insert into first_db.user(id,name, password) values(3,\'a3\', \'b3\');
 4 #insert into first_db.user(id,name, password) values(4,\'a4\', \'b4\');
 5 #insert into first_db.user(id,name, password) values(5,\'a5\', \'b5\');
 6 #insert into first_db.user(id,name, password) values(6,\'a6\', \'b6\');
 7 #SELECT * FROM first_db.user;
 8 SELECT * FROM first_db.user where id > 2;
 9 SELECT * FROM first_db.user where id in (3, 4, 5, 6);
10 SELECT * FROM first_db.user where id > 2 and id <= 6;
11 SELECT * FROM first_db.user where id between 3 and 6;

  它们的结果都一样:

  

  还可以使用函数:

  例如:count()等函数。

SELECT count(id) FROM first_db.user where id > 2;

  结果显示:

  

  

  大综合:

SELECT * FROM first_db.user where id between 1 and 6 order by id desc limit 2, 3;

  按id降序查询[1,6]的记录,并且偏移量为2,取3条记录。

  显示结果:

  

Mysql中遇到的坑

1.把反引号` `误认为时单引号\' \'

  例如:

  

  而我写成了:

 1 DROP TABLE IF EXISTS \'user\';
 2 CREATE TABLE \'user\' (
 3     \'id\' int(11) unsigned NOT NULL AUTO_INCREMENT,
 4     \'name\' varchar(64) NOT NULL DEFAULT \' \',
 5     \'password\' varchar(128) NOT NULL DEFAULT \' \',
 6     \'salt\' varchar(32) NOT NULL DEFAULT \' \',
 7     \'head_url\' varchar(256) NOT NULL DEFAULT \' \',
 8     PRIMARY KEY (\'id\'),
 9     UNIQUE KEY \'name\' (\'name\')
10 )    ENGINE=InnoDB DEFAULT CHARSET=utf8;

  报错:16:30:06 DROP TABLE IF EXISTS \'user\' Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'\'user\'\' at line 1 0.000 sec各种查资料,结果都不能解释,最后才知道原来这是反引号!!!

  反引号的作用:当有些字段的名字跟关键字的名字相同,用反引号可以避免发生错误。

   修改后:

 1 DROP TABLE IF EXISTS `user`;
 2 CREATE TABLE `user` (
 3     `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 4     `name` varchar(64) NOT NULL DEFAULT \' \',
 5     `password` varchar(128) NOT NULL DEFAULT \' \',
 6     `salt` varchar(32) NOT NULL DEFAULT \' \',
 7     `head_url` varchar(256) NOT NULL DEFAULT \' \',
 8     PRIMARY KEY (`id`),
 9     UNIQUE KEY `name` (`name`)
10 )    ENGINE=InnoDB DEFAULT CHARSET=utf8;

  使用脚本后,可以使用右键数据库Refresh All,参看数据库的修改。

分类:

技术点:

相关文章: