常用的数据类型
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,参看数据库的修改。