数据对象
数据对象是数据库的组成部分,通俗的来说就是数据库中能叫上名来的都是数据对象,常见的数据对象有以下几种:
表:由行和列组成,每个列成为一个字段,每列的标题为字段名;一行为一条数据;一个数据库表由一条或者多条记录组成,没有记录的表称为空表
用户:有权访问数据库的人,一般分为两种,为管理员和普通用户
索引:根据数据库表建立起来的顺序,目的是为了快速访问数据
触发器:用户定义SQL事务的集合,一般用来定时任务、批处理
视图:视图看上去是一个表,实际是一个虚表,一般是将几个表联系合并成一个新表,方便查看
数据库用户及权限
//创建用户
CREATE user glq@'bj-cynosdbmysql-grp-iv373juc.sql.tencentcdb.com' IDENTIFIED by 'glq'
//用户授权
GRANT all on book.t_book to 'glq'@'bj-cynosdbmysql-grp-iv373juc.sql.tencentcdb.com'
//修改密码
ALTER user 'glq'@'localhost' IDENTIFIED by 'glq123'
//删除用户
drop user 'glq'@'localhost'
数据库的权限有三种,分别是CONNECT(可连接查看)、resource(可以操作资源)、DBA(管理员)
六种数据对象权限:ALL ON 、SELECT ON、UPDATE ON、ALTER ON(改变表结构)、INSERT ON、DELETE ON
赋予权限:GRANT Insert ON your database
.* TO user
@host
;
收回权限:REVOKE Delete ON your database
.* FROM user
@host
;
查询语句
多表查询
多表查询允许在查询的from后面跟多个表,然后把表之间的关系在where条件后进行拼接
SELECT u.uname,ur.rid FROM t_user u,t_user_role ur
where u.id = ur.uid
外连接
列出多个表查询中其中一个表的全部记录
分为左外连接、右外连接
左外连接将两个表的顺序调换一下即可实现右外连接的功能
//左外连接
SELECT u.uname,ur.rid FROM
t_user u
LEFT JOIN
t_user_role ur
on u.id = ur.uid
//右外连接
SELECT u.uname,ur.rid FROM
t_user u
RIGHT JOIN
t_user_role ur
on u.id = ur.uid
嵌套查询和子查询
select语句中嵌套select即为嵌套查询,当子查询或in或exists成为where条件的一部分,这样的查询成为子查询
SELECT t_user.uname from t_user where t_user.id in
(SELECT t_user_role.uid from t_user_role )
查询排序
order by用来排序
ASC升序,DESC降序 默认为升序
select * FROM t_user
ORDER BY id desc
查询分组
group by进行分组,一般与汇总函数结合在一起
SELECT count(rid) from t_user_role
GROUP BY t_user_role.rid
where与having
where是对分组之前的数据进行筛选
having是对分组之后的数据进行筛选
优化查询
选择记录数少的作为基表(原理类似于for循环把少的放在外层减少跳出消耗)
选择交叉表作为基础表
增删改
增加数据:
INSERT INTO `bank_statement` VALUES ('1', '转账', '收', '2020111101', 'glq', '林宪宇', '0001', 'APP', '10000', '西安', '给你转账了', '成功', '0');
insert into A(id,name) SELECT id,name from B
修改:
UPDATE A set age = 28 where id = 1
删除:
DELETE from A where id =1
数据定义语句
创建表:
CREATE TABLE table_name (column_name column_type);
修改表:
添加一个字段:
alert table A add address varchar(200)
更多:
https://www.cnblogs.com/wwthuanyu/p/10069869.html
删除表:
drop table A
索引
索引分为三种,分别是:
主键索引:唯一的,不允许空值
唯一索引:唯一的,允许空值
普通索引:没有限制
索引使用原则:
1.出现在where子句的列以及连接字句中指定的列适合建索引
2.基数较小的列适合建索引(基数:不重复的)
3.尽量使用短索引,因为索引也会占用空间
4.不要过度使用索引,过度使用索引会占用额外的空间、降低操作的性能。