数 据 库
存储数据
概念: 有组织,可共享
语句:mysql -h 服务器主机地址 -u 用户名 - p 密码;
开始指令;net start mysql; 结束指令: net stop mysql;
创建数据库; create database 数据库名;
删除数据库:drop database数据库名;
查看数据库;show databases;
{以分号(;)作为一条命令的结束符}
>用 create table语句在数据库里 创建一个表;步骤:
- 格式设置; CREATE DATABASE 库名 CHARSET utf8 (字体格式);
- 语句;CREATE TABLE 表名(
字段 1 数据类型 [字段属性 |约束][索引][注释],
字段 2 数据类型 [字段属性 |约束][索引][注释],
......
)[表类型][表字符集][注释];
** :在Cmd任务管理中查看数据库用语句已建好的表:
Cmd------> mysql -u root -p ----->回车
输入密码------>show databases;查看列表-------->use 数据库名; use 表名;-------->删除数据库:DROP DATABASE 数据库名;
show tables;---------->查看表的定义: describe /DESC 表名;
SQL:
- , DML (Data Manipulation Language 数据操作语言):
用来: 插入(INSERT) 修改(UPDATE) 删除(DELETE)数据库的数据。
2), DDL ( Data Definition Language数据定义语言):
用来;建立数据库(CREATE TABLE),数据库对象,定义数据表结构等:
3), DQL (Data Query Language, 数据查询语言):用来对数据库中的数据进行查询 ,如SELCET,
4), DCL (Data Control Language , 数据控制语言): 用来控制数据库组件得到存取许可,存取权限等。
***数据库基本操作***:
- 建库;——》 语句:CREATE DATABASE 数据库名:
××:AUTO—INCREMENT 自增语句
- 查看数据库列表:——》 语句:SHOW DATABASES;
- 选择数据库:——》语句:USE 数据库名;
- 删除数据库:——》语句:DROP DATABASE 数据库名:
×查看表× :SHOW tables:
》查看数据库中的表《:USE 数据库名; DESCRIBE 表名;
》删除表《 :USE 数据库名; DROP TABLE表名;
》修改表《
**——〉修改表名: ALTER TABLE 旧表名 RENAME 新表名;
**——〉添加字段:ALTER TABLE 表名 ADD 字段名 数据类[属性];
**——〉修改字段:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
**——〉删除字段:ALTER TABLE 表名DROP 字段名;
——插入数据——
1; 插入单行数据:INSERT INTO 表名(字段名列表)VALUES(值列表);
2;插入多行数据:INSERT INTO新表 (字段名列表)VALUES(值列表1),(值列表2).... ;
3:查询结果插入到新表中: CREATE TABLE 新表(SELECT 字段1,字段2,...... FROM 原表)
———更新数据———
语句: UPDATE 表名 SET列名 = 要更新值 WHERE 列名=原值 【/*内容*/】
注“:多个条件运行可用 AND 也可用 OR 或NOT
———删除数据———
- 用 DELETE 删除数据:
语句: DELETE FROM 表名 WHERE 删除条件
- 用TRUNCATE TABLE 删除数据:(删除表中的所有行)
语句:TRUNCATE TABLE 表名
———数据查询语句———
- 用SELECT 语句查询
*1. 查询所有的数据行和列 : SELETE * FROM 表名
*2.查询部分行和列 :
SELETE 字段列表名 FROM表名 WHERE 限制条件
{(字段列表名)符号 :“= 只”“<>不是” 比较运算符...}
*3. 分组查询 :
SELECTE 字段名1,字段名...,聚合函数 FROM 表名 GROUP BY 字段名1,字段名...
( 字段名 聚合函数 只能是分组后的字段名)
*4,查询某个,并按顺序排列显示:
语句: SELECT字段名1. ....,聚合函数(字段名) FROM 表名 GROUP BY 字段名1,..., ORDER BY 聚合函数(字段名) ASC (升序)或 DESC (降序)
**5. 多列分组查询
SELECT COUNT(*) 字段名,... FROM 表名 GROUP BY 字段名,... ORDER BY 字段名
注: 在使用GROUP BY关键字时,在SELECT后面可以指定的列是有限制的,仅:1),GROUP BY子句后的列。
2), 聚合函数计算出的列。 被分组的列为每个分组返回一个值的表达式。如聚合函数计算出的列。
**6, 用HAVING 进行分组筛选
- :SELECT COUNT(*) 字段名.... FROM 表名 GROUP BY 字段名(要查询的字段名)
- :SELECT COUNT(*) 字段名.... FROM 表名 GROUP BY 字段名(要查询的字段名)HAVING 聚合函数(COUNT(*)限制条件)
/*住:HAVING是用来对分组后的数据进行筛选,将“组”看作“列”来限定条件。
- SELECT 字段名1....,聚合函数(字段名2) FROM 表名 GROUP BY 字段名1 HAVING 聚合函数(字段名2)限制条件
HAVING 和 WHERE 可以在同一个 SELECT语句中使用,顺序:
WHERE——》 GROUP BY——》 HAVING
- SELECT COUNT(*)字段名1, 聚合函数(字段名2),字段名.. FROM 表名 WHERE 字段名2 限制条件 GROUP BY 字段名
HAVING 聚合函数(字段名2)限制条件
*7, 多表连接查询(分页):
- 内连接查询;使用比较运算符来判断两列数据是否相等,
- 在 WHERE 字句中指定连接条件。
语句: SELECT 表名1 . 列表名,表名2. 列表名,...
FROM 表名1,表名2
WHERE 表名1 . 列表名 = 表名2. 列表名
- 在 FROM 子句中使用 INNER JOIN ...ON
语句:SELECT 表名1 . 列表名,表名2. 列表名,...
FROM 表名1
INNER JOIN 表名2 ON(两表相同的表名 相等)
eg : SELECT houseinfo.houseId, houseinfo.houseDesc,housetype.`typeId`,housetype.`typeName`,houseinfo.monthlyRent,houseinfo.publishDate
FROM houseinfo INNER JOIN housetype ON houseinfo.`typeId`=housetype.`typeId` ORDER BY houseinfo.publishDate DESC ;
SS:INNER(可省略) JOIN 是连接两个表。ON; 设置条件
- 外连接查询:
- 左外连接查询:左表为主表(被连接的)
语句: :SELECT 表名1 . 列表名,表名2. 列表名
FROM 表名1
LEFT OUTER JOIN 表名2 ON 两表相同的表名 比较运算符
- 右外连接查询:
语句: SELECT 表名1.列名, 表名1.列名, 表名2.列名
FROM 表名1
RIGHT OUTER JOIN 表名2 ON 表名1.列名= 表名2. 列名(列名相同)
SHOW VARIABLES LIKE '%max_connections%' /*最大连接数 */
SET GLOBAL max_connections=100000; /* 修改连接数*/
SQL 编程:
局部变量:自己设置的变量,
全局变量:系统定的变量
SELECT * FROM 表名 WHERE 字段名1 比较运算符(
SELECT 字段名1 FROM 表名 WHERE 字段名2 字段内容
)
范式
1。原子性, 2, 一致性, 3, 直接依赖型
视图: 是一种查看数据库中一个或多个表中的方法,它是一种虚拟表,没有数据,只是语句
索引:
事务:
存储过程: 安全, 服务器上运行效率高,提高,
触发器: 相当于一个约束,保证数据安全。 相当于存储过程
游标: 数据库的值可以逐行读取进行操作
函数:
提高查询效率:
储存过程, 索引 , 缓存
sql语句: 根据需求查询相应的字段, 注意条件部分的顺序, 尽量不要在条件部分使用函数,尽量少用子查询和连接
高并发: