Mysql个人总结----01

一、我们每天说的数据库是什么呢
简单的说,数据库就是一个存放数据的仓库,这个仓库是按照一定的数据结构来组织、存储的,我们可以通过数据提供的多种方法来管理数据库里的数据。
当人们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。
二、数据库的分类
1>关系型
• 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数
学概念和方法来处理数据库中的数据。
• 标准数据查询语言 SQL 就是一种基于关系数据库的语言,这种语言执行
对关系数据库中数据的检索和操作。
• 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
• 关系型数据库是由多张能互相联接的二维行列表格组成的数据库。
2>非关系型
• NOSQL 主要是指非关系型、分布式、不提供 ACID (数据库事务处理的四
个本要素)的数据库设计模式。
• NoSql 数据库在特定的场景下可以发挥出难以想象的高效率和高性能,
它是作为对传统关系型数据库的一个有效的补充。
• NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的
挑战,尤其是大数据应用难题。
Mysql个人总结----01
https://www.jianshu.com/p/f0a1b00a6002 (事务与一致性)
三、数据库的命令
1>简单的sql命令

mysql -u__ -p__	登录数据库
	show databases; 显示每个库的名字
	use database1;   切入到某个数据库
	show tables;        显示某个数据库下面表的名字
	select version();   显示mysql的版本
	exit;						退出mysql

2>数据定义语言(DDL)

涉及到的命令有create,alter,drop。
	create database db1;创建数据库
	use day01;				
	create table student (	 建表语句
   		 id int default null,
		`name` varchar(20) default null,           varchar定义字符串,字段属于mysql关键字用单引号区分
	 salary decimal(18,2) default null		 浮点型数据
	)ENGINE = innodb default charset = utf8;
	alter table student rename best_student; 给表重命名
	alter table teacher add birthday datetime after name; 添加字段
	alter table teacher drop birthday; 删除一个字段
	alter table teacher modify salary decimal(20,2);修改字段类型
	alter table teacher change name teacher_name varchar(200);修改字段名
	drop database db1;删除数据库
	drop table tb1;删除表						(后面区分drop,truncate,delete)
实体完整性:主键

主键通常用于唯一确定表中的一条记录,设置为主键的字段是不能为NULL的。
主键可以设置在一个字段上,也可以设置在多个字段上。(但大多数场景都是设置在一 个字段上,这个字段通常是业务主键或者流水号)

	create table person(
    	id int not null default 0,
		name varchar(100),
		income decimal(18,2),
		primary key (id)
);

建表后通过修改表结构添加主键:

alter table person add primary key(id);
关联完整性:外键

3>数据操纵语言(DML)

常用命令有insert,update,delete。
	insert into student(name, id, salary)  values ('老刘',1,56.23);
	delete from student where name='老王';
	delete from student where id is null;
	update student set salary=1000.45 name='dave' where id = 1;

4>数据查询语言(DQL)

select * from table1;	查询表的所有信息	
	select * from table1 where id =1; 添加where条件
	数据查询语言一般需要很多限定条件来查询想要的数据;
	select  *  from  student  where  score  is  null;  hive没有not in 用left join 代替
	select distinct teacher_id from student;   //distinct 只返回一个目标字段,去重一般用group by
	select * from  student order by score desc;  //order by 排序
	select * from  student order by teacher_id asc, score desc; 第一个字段升序,第二个字段降序。
	select * from  student order by score desc limit 3;限制显示的条数。

5>MySQL常用系统函数

	select  substring(  '计算机科学与技术',  1,  3  );返回  计算机。第2个参数代表从1开始的第几个字符,第3个参数代表截取字符个数。
	select  trim('  abc  ');返回 abc。用于删去参数左右的所有空格。
	select  concat(  'a',  'b',  'c',  'd');返回  'abcd'。字符串拼接函数(可变元参数)。
如select  concat_ws(  '=',  'a',  'b',  'c');返回  'a=b=c'。字符串拼接函数(可变元参数,但是第一个参数必须是拼接间隔符)。但是可以指定拼接间隔符。
	select  length('中国');返回字符所占字节数。MySQL中,一个UTF8编码的汉字占3个字节。

Mysql个人总结----01