mysql

mysql 全称 数据管理系统,存储数据的文件才叫数据库

基本结构
数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。
以内模式为框架所组成的数据库叫做物理数据库;以概念模式为框架所组成的数据叫概念数据库;
以外模式为框架所组成的数据库叫用户数据库。
⑴ 物理数据层。
它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,
由内部模式描述的指令操作处理的位串、字符和字组成。
⑵ 概念数据层。
它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。
它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。
⑶ 用户数据层。
它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。
数据库不同层次之间的联系是通过映射进行转换的。

主要特点
⑴ 实现数据共享
数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
⑵ 减少数据的冗余度
同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,
减少了数据冗余,维护了数据的一致性。
⑶ 数据的独立性
数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性
(数据物理结构的变化不影响数据的逻辑结构)。
⑷ 数据实现集中控制
文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。
利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
⑸数据一致性和可维护性,以确保数据的安全性和可靠性
主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;
③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。
⑹ 故障恢复
由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。
数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。



六.啥是SQL?
  上面咱们介绍过数据库的组成部分,其中数据库管理系统可以接收一些命令,对数据文件进行添加、删除、修改、查询等操作。那么这些命令就是 SQL .

  SQL:(Structured Query Language)是结构化查询语言缩写。是一门专门与数据库管理系统打交道的语言。

  SQL语言:是关系型数据库的标准语言, 其主要用于存取数据,查询数据,更新数据和管理数据库系统等操作。

  具体可以把SQL分为4个部分:

    数据控制语言 ( DCL): 主要用于控制用户的访问权限。其中GRANT语句用于给用户增加权限,
REVOKE语句用于收回用户的权限

    数据定义语言(DDL):DROP、CREATE、ALTER等语句;数据库定义语言。主要用于定义数据库,
表,视图,索引和触发器等。CREATE语句主要用于创建数据库,创建表,创建视图。ALTER语句主要用于修改表的定义,
修改视图的定义。DROP语句主要用于删除数据库,删除表和删除视图等。

    数据操作语言(DML):INSERT、UPDATE、DELETE语句;数据库操作语言。主要用于插入数据,更新数据,
删除数据。INSERT语句用于插入数据,UPDATE语句用于更新数据,DELETE语句用于删除数据.

   三.命名规范  
复制代码
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如: CREATE SELECT
不能单独使用数字
最长128位

1.数据库
1.创建
create database 库名;
命令 关键字
2.使用数据库
use库名;

3.查询当前库下所有的表
show tables;
show database;-- 显示所有数据库
*4.删除
drop database库名;

2.表操作
*1.创建
create table 表名(
name varchar(50) not null primary key 主见 ,不会重复
字段 类型 宽度
age int null, 不写默认为 null
salary double(5,2) 总共五位,小数占三位
字段1 数据类型 约束条件,
字段1 数据类型 约束条件,
)

*2.删除
drop table t1;
3.修改表

ALTER TABLE t1 add id int not null PRIMARY key ; -- 添加字段

ALTER TABLE t1 MODIFY salary double(10,3) not null DEFAULT 10; -- 修改字段类型与约束条件

ALTER TABLE t1 CHANGE salary sal double(10,3) not null DEFAULT 10; --修改字段名称和类型与约束条件

ALTER TABLE t1 DROP COLUMN sal; -- 删除指定字段

RENAME table t1 to t5;-- 改变表名称
4.查看
* select * from t1; -- 查询表中数据

desc t1; -- 查看表结构

show create table t1; -- 显示表的创建信息

5.复制表
create table t2 select * from t1; -- 复制表结构和表数据
* create table t3 LIKE t1; -- 只复制表结构

3.数据操作

1.增
INSERT into t2(name,age) VALUES('小三',11); -- 指定字段插入

INSERT into t2 VALUES('凤',13,2.5); -- 整表字段插入

INSERT into t2 VALUES('凤',13,2.5),('凤',13,2.5),('凤',13,2.5),('凤',13,2.5),('凤',13,2.5);
--插入多条
insert into t1 SELECT id,name from t2; -- 复制表数据
2.删
delete from t2 where age = 1113;
3.改
update t2 set name ='祝小凤' , salary = 100 where age =13;
4.查
select * from T1;

1.简单查询
-- 查询所有
select * from person;
--查询指定字段
select name,age FROM person;
-- 别名+字段运算
select p.name,p.salary,p.salary+p.salary*0.1 as 'sum' from person as p
-- 去重复查询
select DISTINCT salary,name from person;

2.条件查询
-- 逻辑运算符 < > <= >= != <> =
-- is null ,is not null
-- and OR ()

SELECT * from person where salary >5000 or ( age <=30 AND NAME ='');

3.区间查询
SELECT * FROM person where salary >=5000 and salary<=10000;
-- 推荐使用 :
--ps:前后包含
SELECT * FROM person where salary between 5000 and 10000;

4.集合查询 in not in

SELECT * FROM person where age = 20 or age = 23 or age =30 ;

SELECT * FROM person where age not in(20,23,30);


5.模糊查询 like
SELECT * FROM person where name LIKE '%月'; -- 以什么结尾

SELECT * FROM person where name LIKE '月%'; -- 以什么开头

SELECT * FROM person where name LIKE '%月%'; -- 包含


SELECT * FROM person where name LIKE '_l%'; -- "_"表示占位符

6.排序
select * from person ORDER BY salary ASC,age desc;

-- 强制中文[排序
select * FROM person ORDER BY CONVERT(name USING GBK) ;

7.聚合函数
select MAX(salary) from person;
select MIN(salary) from person;
select AVG(salary) from person;
select SUM(salary) from person;
select COUNT(*) from person;

8.分组查询 GROUP BY HAVING
select count(id),dept_id,avg(salary) from person GROUP BY dept_id HAVING avg(salary) >=5000 ;
where 与 having区别:
#执行优先级从高到低:where > group by > having
#1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。
#2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数

9.分页查询 LIMIT
SELECT * FROM person LIMIT 2,2

10.正则表达式
SELECT * FROM person where name REGEXP '^a';

SELECT * FROM person where name REGEXP 'n$';

SELECT * FROM person where name REGEXP '.a';

SELECT * FROM person where name REGEXP '[a,e,n]';

SELECT * FROM person where name REGEXP '[^alex]';

SELECT * FROM person where name REGEXP 'a|e';

SELECT * FROM person where name REGEXP '^w.*i$';


11. SQL 语句关键字的执行顺序

执行顺序: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY ->limit  


4.权限
create user 'alex'@'127.0.0.1' IDENTIFIED by '123'; -- 创建用户

grant SELECT,UPDATE,DELETE ON db1.* to 'alex'@'127.0.0.1';

GRANT all PRIVILEGES ON db1.* to 'alex'@'127.0.0.1'; -- 所有权限

FLUSH PRIVILEGES; -- 刷新权限

update mysql.user set password=password('123456') where user='root';

ps:
auto_increment 自增
enum(1,2,3) 必须选一个 枚举
decimal 精准
select * from t1; 开发不要写 * 不要写多余字段
select 1 from person; 1是常量 ,有多少数据 就有多少个1
posted @ 2018-04-03 22:56  xuerh  阅读(319)  评论(0编辑  收藏  举报