标签:
数据库是一种对大量信息进行管理的一种方法.
数据库系统从结构上看,也是可以分为三层的:
目前关于数据库模型最主流的有两种,
一种叫做关系型数据库,这是目前应用最多的一种数据库模型.
简单来说,关系数据库,就是由一张张二维的表及表间的关系所组成的一种数据库.
关系数据库中有那么几个常见的概念:
关系型数据库最大的优点就是易于理解,并且可以通过SQL语句来进行方便的操作.
但是关系数据库也遇到的很多瓶颈:
这一段我不是很确定对不对,没有做过这方面的运维,不是很清楚.
第二个就是,非关系型数据库NoSQL
NoSQL最早在1998年被Carlo Strozzi提出(我比较孤陋寡闻,不太清楚他是谁…),他的设计初衷是一个没有sql语言的,轻量级开关的关系型数据库. 但是在发展中渐渐跑偏了. 现在的NoSQL表示,非关系型的,分布式的,一般不保证ACID原则的(Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性)数据存储系统.
现在有一种非关系型数据库,以key-Value对的形式来存储数据,结构不固定,每个元组都可以有不一样的字段. 每个元组也可以根据需要添加新的键值对. 这样可以避免多表联查,只需要根据id取出相应的value就可以了. (不是很理解这些大神的逻辑,暂时没有精力也没啥太大的兴趣深入了解…)
本段内容引用了NovaWong的<关系型数据库和非关系型数据库>,如有侵权,请联系我删除.
原文地址:http://my.oschina.net/u/1773689/blog/364548
SQL是Structured Query Language的缩写,是一种操作关系型数据库的语言.
语法: create database DBname
create database 数据库名称 character set 编码 collate 校对规则
数据登录:
mysql -p root -u
show databases;
show create database 数据库名字;
drop database 数据库名字;
alter database 数据库名称 character set 编码 collate 校对规则;
切换到某个数据库 use 数据库名字
查询当前使用的数据库 select database();
除了字符串类型之外,其他类型都有默认长度. 比如int类型默认长度11.
通过desc可以查看表结构.
mysql> desc employee;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | int(11) | YES || NULL ||
| name | varchar(20) | YES || NULL ||
| gender | varchar(10) | YES || NULL ||
| birthday | date | YES || NULL ||
| entry_date | date | YES || NULL ||
| job | varchar(100) | YES || NULL ||
| salary | double | YES || NULL ||
| resume | text | YES || NULL ||
+------------+--------------+------+-----+---------+-------+
8 rows in set (0.02 sec)
主键约束
pramary key
来声明主键唯一约束
unique
声明非空约束
not null
声明alter table 表名 add 字段 类型(长度) 约束
alter table 表名 drop 字段
alter table 表名 modify 字段 类型(长度) 约束
alter table 表名 change 旧字段 新字段 类型(长度) 约束
rename table 表名 to 新表名
alter table 表名 character set utf8
添加记录 insert into user values(1,‘美美‘,‘1990-10-10‘,‘2011-01-01‘,‘hr‘,19000,‘aaaa‘,‘aaabb‘);
insert into 表名 (字段1,字段2,字段3..) values(值1,值2,值3...); 有几列就插入多少的值。
修改记录 update 表名 set 字段=值,字段=值 [where子句]
update user set salary=1000 where id=1;
删除记录 delete from 表名 [where子句]
truncate 表名
清空表
delete 和truncate的区别.
delete是逐条删除数据,而truncate是直接删除整个表之后再创建一个空表
select * from stu;
select id,math from stu;
常用的符号
select * from user where username in (‘小泽‘,‘小红‘);
select * from user where username like ‘小%‘;
select * from stu where english between 10 and 20;
select * from stu where english>10 and english<20;
逻辑运算
and or not
排序 select name from stu order by math asc/desc;
asc 升序
desc 降序
默认使用升序
聚集函数
select count(*) from stu;
sum 求和 select sum(math) from stu;
注意,如果有空值的时候,如果进行null+某个值,则得到的值为null. 而sum函数会忽略空值
mysql> select * from stu;
+----+------+------+---------+---------+
| id | name | math | english | chinese |
+----+------+------+---------+---------+
| 1 | 班长 | NULL | 19 | 20 |
| 2 | 小仓 | 18 | 19 | 20 |
| 3 | 小泽 | 18 | 19 | 20 |
| 4 | 小川 | 18 | 19 | 20 |
| 5 | 小波 | 18 | 19 | 20 |
| 6 | 小波 | 18 | 19 | 20 |
+----+------+------+---------+---------+
6 rows in set (0.00 sec)针对这个表来说,sum(math+english+chinese)和sum(math)+sum(english)+sum(chinese)是不一样的.
但是有个函数ifnull(xxx,默认值)这个可以处理空值.mysql> select sum(math+english+chinese) from stu;
+---------------------------+
| sum(math+english+chinese) |
+---------------------------+
| 285 |
+---------------------------+
1 row in set (0.00 sec)
mysql> select sum(math)+sum(english)+sum(chinese) from stu;
+-------------------------------------+
| sum(math)+sum(english)+sum(chinese) |
+-------------------------------------+
| 324 |
+-------------------------------------+
1 row in set (0.00 sec)
mysql> select sum(ifnull(math,0)+english+chinese) from stu;
+-------------------------------------+
| sum(ifnull(math,0)+english+chinese) |
+-------------------------------------+
| 324 |
+-------------------------------------+
avg 平均数
同样有空值的问题,空值不会算入计算. 比如上面这个表,实际在计算的记录只有5条.
group by子句
select product,sum(price) from orders group by product having sum(price)>100;
select product,count(product),sum(price) from orders group by product;
最后说一句,select 语句是有顺序的,S-F-W-G-H-O
标签:
原文地址:http://www.cnblogs.com/thecatcher/p/5778426.html