大概整理了一下数据库的基本指令 1、数据的记载 1、1 甲骨文 1、2 竹简 1、3 纸质记载 1、4 文件 1、5 数据库 2、基本知识 数据库–表–字段+数据 3、非关系型数据库: redis mongodb 4、关系型数据库 oracle 付费,银行,大型项目用到 mysql web项目,开源免费 ms sql server 微软项目 sqlite 轻量级数据库,移动平台 5、实时数据库 firebase 6、数据库组成
客户端----------服务端 -------数据库1----表1 (SQL语句) ------表2 -------数据库27、语句分类 DQL: 数据查询语句,select DML:数据操作语言,数据的增加,删除,修改 insert delete update TPL:事务处理 ,rollback DDL:数据定义语言,create drop CCL:指针控制语言 8、CRUD 增删改查(DQL DML DDL) 9、安装服务器端 sudo apt-get install mysql-server sudo apt-get install mysql-client 重启 sudo service mysql restart 端口:3306
链接数据库 mysql -uroot -p 密码 退出: quit/exit10、数据库的数据类型 整型:int bit 小数:decimal【浮点数decimal(5,2)111.11】 字符串:varchar char(8) [‘ab’ ‘ab ’ char的例子] (0-255) 时间: date ‘2018-09-03’ time ‘11:11:11’ datetime ‘2018-09-03 11:11:11’ timestamp 时间戳:格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 大文本存储:text (0-65535)字符数大于4000 枚举类型:
11、约束 主键:primary key 物理存储顺序 非空:not null 不允许为空 唯一:unique 不允许重复 默认值:default 默认值,如果填写,以填写的值为准 外键:foreign key 12、实现一个实例 12、1设计数据库 create database waterDB charset=utf8; 12、2使用的数据库 use 西瓜二手车; 12、3创建一张新表 create table customer( id int primary key auto_increment not null, name varchar(10) not null, password varchar(10) not null, gender enum(‘boy’,’girl’,’secret’), active int default 0 ) create table address( id int primary key auto_increment not null, add_name varchar(10) default ‘杭州’, cus_id int not null ); 12、4查看数据库里的表 show tables; 12.5查看表的结构 desc customer(表名) 12.6删库操作 drop database 西瓜二手车; 12.7增加字段 alter table customer add email varchar(20) not null; alter table customer add is_delete varchar(20) not null default 0;
12.8修改字段 alter table customer change name user_name varchar(20) not null; 12.9删除字段 alter table customer drop email; 12.10 删除表 drop table customer13、数据CRUD–初级 13.0 增加数据 insert into customer values(0,’老王’,’123456’,’boy’,0); insert into customer values(0,’王丑丑’,’123456’,’girl’,1); insert into address values(0,0,1); insert into address values(0,’杭州’,3); 13.1 查询语句 select * from customer; select name as ‘姓名’,gender from customer; 13.2 按列插入数据 insert into customer(user_name,password) values(‘老张’,’123456’); 13.3 按列插入多行数据 insert into customer(user_name,password,email) values(‘老王’,’123456’,’12@qq.com’),(‘老李’,’123456’,’23@qq.com’); 13.4 修改数据 update customer set email=’123@qq.com’ where id=3;
13.5 删除数据 delete from customer where id=1; 13.6 逻辑删除 update customer set is_delete=1 where id=5; select * from customer where is_delete=0;14、数据CRUD–中级(条件)
14.2 比较运算符的问题 select * from customer where id > 7; select * from customer where id !=7; select * from customer where id <>7;(> >= < <= != <>) 14.3逻辑运算符 select * from customer where id > 7 and user_name='老王';(and or not) 14.4 模糊查询 select * from customer where user_name like '王%'; %代表匹配任意的多个字符 select * from customer where user_name like '王%' or user_name like '_王%' or user_name like '%王'; 14.5 范围查询 不连续范围查询 select * from customer where id in(3,7,9,100); 连续范围 select * from customer where id between 3 and 9;(包括序号3和9) 14.6 null select * from customer where gender is null; 14.7 not null select * from customer where gender is not null and user_name like '%王'; 14.8 顺序的问题 括号 > not >比较运算符 > 逻辑运算符 14.9 排序的问题 desc降序 asc升序 select * from customer order by user_name desc ,id desc; 语句顺序的问题,如果第一个条件出现同值的情况,按照第二个语句来进行排序15、数据CRUD–高级(查询结果) 14.1 删除重复行 select distinct user_name from customer; 15.1聚合函数 sum() max() min() avg() count()
select avg(id) from customer where id >7 ; select sum(id)/count(id) as '均值' from customer where id >7 ; select count(id) from customer where id >7 ; 15.2 分组的问题 select gender from customer group by gender; select gender,group_concat(user_name) from customer group by gender; select gender,group_concat(user_name) from customer group by gender having id>3;(x) select gender,group_concat(user_name,id) from customer group by gender having group_concat(id)>3; having 和 where 功能是一样的 select * from customer having id>3; select gender,avg(id) from customer group by gender; 15.3 分页的问题(解决数据量大的问题) select * from customer limit 0,5;16、完整版语句 select distinct * from customer where 条件 group by 字段 having 条件 order by limit start,count
from customer > where >group by> distinct * >having >order by >limit