(1)DBS:数据库系统,包括DB和DBMS
(2)DB:数据库---按照数据结构来组织、存储和管理数据的仓库
(3)DBMS:数据库管理系统---一种用于操纵和管理数据库的大型软件,用来建立】使用和维护数据库(MySql、Oracle)
参考:http://www.jb51.net/article/70867.htm
(1)索引:优化查询速度
(2)数据表之间的关联/引用关系是依赖具体的主键(primary key)和外键(foreign key)建立起来的。
(3)主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确定下来
注意:主键必须是唯一的
主键应该是紧凑的,因此整数类型比较适合
(4)外键:引用另外一个数据表的某条记录
注意:外键列类型尽可能与主键列类型保持一致
外键列应该加上NOT NULL
查询中用到的关键词主要包含六个
按照下面的顺序来执行 :
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据
1、作用:对数据库进行统一的管理和控制,以保证数据库的安全性和完整性
2、功能:
(1) 数据库操纵语言(DML)
对数据库进行操作的语言
如:SELECT 、UPDATE 、INSERT 、DELETE
(2)数据库定义语言(DDL)
定义或者改变标的结构,数据类型,表之间的连接等初始化工作
如:CREATE 、ALTER 、DROP
(3)数据库控制语言(DCL)
用来设置或者更改数据库用户或角色权限的语句
如:GRANT 、DENY 、REVOKE
1、显示所有数据库:show databases
2、创建数据库:create database easymall
3、创建数据库:判断是否有同名数据库再进进行创建:create database if not exists easymall
4、创建数据库:为数据库设置字符编码:create database easymall character set utf-8
5、删除数据库:drop database easymall
6、使用数据库:use easymall
7、创建表:
create table user(
user_id int primary ket auto_increment,
user_name varchar(20) not null,
user_password varchar(20) not null,
user_age int,
user_sex varchar(10),
)
8、显示数据库中所有的表:show tables
9、查看表中的所有信息:desc user
10、删除表: drop table user
11、删除一个表的主键:alter table user drop primary key
12、在表中添加一列:alter table user add user_address varchar(50) after user_password
13、增加一列,使其位于第一位:alter table user add user_address varchar(50) first
14、删除某一列:alter table user drop user_ age
15、修改表的字段:alter table user change user_id id int
16、使用Modify只能修改数据类型:alter table user modify user_name varchar(50)
17、数据的简单增删改查:
新增: insert into user(user_id,user_name,user_password,user_address)
values('1','Rancho','123','成都'),('2','Bob','123','上海'),('3','Kris','123','北京')
删除:delete from user where user_id=2
修改:update user set user_name='陈坤' where user_id=1
查询:select user_address from user where user_name='Kris'
1、更改数据库名称:sp_renamedb user,student
2、查询语句:
(1)查询表中所有数据:select * from user
(2)查询表中年龄大于等于2小于等于4的所有列:select * from user where user_age between 2 and 4
(3)查询时自动去重,并不删除,针对一行去重显示:select distinct user_address from user;
(4)查询姓名为Rancho且年龄为23的数据:select * from user where user_name='Rancho' and user_age=23
(5)查询姓名为Kris或者住在北京的人;select * from user where user_name=''Kris' or user_address='北京'
(6)模糊查询:
下划线_代表任意一个字符:select * from user where user_name='陈_'
百分号%代表任何字符,多个字符,为通配符:select * from user where user_name='%陈%'
1、内连接查询:是指所有查询出的结果都是能够在连接的表中有对应记录的。关键字:inner join
select
e.empName,d.deptName
from t_employee e
INNER JOIN t_dept d
ON e.dept = d.id;
2、左外连接查询:是指的以左边的表的数据为基准,去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为NULL。关键字:left outer join
SELECT e.empName,d.deptName
from t_employee e
LEFT OUTER JOIN t_dept d
on d.id = e.dept;
3、右外连接查询:同左外查询 关键字:right outer join
SELECT e.empName,d.deptName
from t_employee e
RIGHT OUTER JOIN t_dept d
on d.id = e.dept;
4、全外连接查询:把两张表的字段都查出来,没有对应的值就显示null,但是注意:mysql是没有全外连接的(mysql中没有full outer join关键字),想要达到全外连接的效果,可以使用union关键字连接左外连接和右外连接。
select e.empName,d.deptName
FROM t_employee e
left JOIN t_dept d
ON e.dept = d.id
UNION
select e.empName,d.deptName
FROM t_employee e
RIGHT JOIN t_dept d
ON e.dept = d.id;
select username,psw,gname,tel
from
(t1 left join t2
on
t1.t1_id=t2.t1_id)
left join t3
on
t1.t1_id=t3.t1_id
items:商品表,item_visit_stats:商品访问表,item_trade_stats:商品销售表
SELECT i.num_iid, i.title, i.price, SUM(iv.user_visits)
AS uv,it.buyer_num,it.item_num,it.item_num*i.price
AS turnover
FROM (items AS i RIGHT JOIN item_visit_stats AS iv ON i.num_iid=iv.num_iid)
LEFT JOIN (SELECT num_iid,SUM(buyer_num)
AS buyer_num,SUM(item_num) AS item_num FROM item_trade_stats
WHERE seller_nick="XXXX" AND business_day BETWEEN '2010-08-14' AND '2010-08-15' GROUP BY num_iid)
AS it ON it.num_iid=iv.num_iid
WHERE i.nick="XXXX" AND iv.business_day BETWEEN '2010-08-14' AND '2010-08-15'
GROUP BY i.num_iid ORDER BY uv DESC
选取最适用的字段属性:在可能的情况下,应该尽量把字段设置为NOTNULL
使用连接(JOIN)来代替子查询(Sub-Queries):如果使用连接(JOIN)..来完成这个查询工作,速度将会快很多。
使用联合(UNION)来代替手动创建的临时表
事务:当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方法来为用户提供一种安全的访问方式,这样可以保证用户的操作不被其它的用户所干扰。
锁定表
使用外键
使用索引
1、概念:索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速
详解参考:https://www.cnblogs.com/doudouxiaoye/p/5831449.html
优化的查询语句
详解参考:https://www.cnblogs.com/zhyunfe/p/6209074.html