MySQL代码整理
2017-10-20 16:28
99 查看
MySQL代码整理
创建表表单元素:表名,表的字段
表字段的元素:字段名、数据类型、字段长度、约束
语法
CREATE TABLE table_name( 字段名称 字段数据类型 [字段约束], 字段名称 字段数据类型 [字段约束] )
示例
CREATE TABLE student( id INT AUTO_INCREMENT PRIMARY KEY, age INT NOT NULL, code INT NOT NULL, name VARCHAR(50) NOT NULL )
SQL注释
用 – 表示
MySQL字段类型
数值:
- INT :整型
- DECIMAL:浮点类型
- 其他数值类型:SMALLINT NUMBERIC
日期:
- DATE:值表示日期
- DATETIME:日期和时间
字符串:
- VARCHAR:可变长度
- TEXT:长文本类型
- CHAR:定长
表的约束
1. 主键约束(PRIMARY KEY)
2. 非空约束(NOT NULL)
3. 默认值(DEFAULT)
4. 唯一约束(UNIQUE KEY)
5. 外键约束(FOREIGN KEY)
6. 自动增长:(AUTO_INCREMENT)
删除表
DROP TABLE table_name;
修改表名
ALTER TABLE table_name RENAME table_name1;
增加字段
ALTER TABLE table_name ADD age VARCHAR(200) NOT NULL;
修 改字段类型
ALTER TABLE table_name CHANGE name name1 VARCHAR
**
修改数据语句
新增数据指定字段插入语法:
INSERT INTO table_name(filed1,filed2) VALUES(value1, value2)
批量插入查询结果:
ALTER TABLE table_name (filed1,filed2) SELECT filed1,filed2... FROM name;
修改数据
语法:UPDATE table_name SET field1=value1, field2=value2, ... WHERE condition
示例:
UPDATE s SET code='ss6',birthday='1990-10-10' WHERE name='zhangsan'
删除数据
语法:DELETE FROM table_name WHERE condition
示例:
DELETE FROM s WHERE name='zhangsan'
**
数据检索操作
**简单的数据检索
指定字段的数据记录查询
SELECT field1, field2,... FROM table_name [WHERE condition] [ORDER BY field1 ASC/DESC, field2 ASC/DESC,...]
查询所有数据
使用通配符*查询
语法:
SELECT * FROM table_name [WHERE condition]
避免重复数据的查询
使用关键字:DISTINCT
条件查询
带关系运算符和逻辑运算符的表达式;
带 BETWEEN AND 关键字的条件查询;
带 IS NULL 关键字的条件查询;
带 IN 关键字的条件查询;
带 LIKE 关键字的条件查询。
关系运算符和逻辑运算符
关系运算符:>、 >=、 <、 <=、 !=(<>)、 =;
逻辑运算符:AND(&&)、OR(||)、NOT(!)、XOR。
BETWEEN ADN
一般用在对数值或者日期的区间判断条件中,而且是可以被替代的。
IS NULL
判断数据结果集中非空元素,要注意的是:NULL 和 空字符串是两个概念,使用的查询条件不尽相同
IN
条件在某些离散的数据范围内
LIKE
模糊查询:用的较多,一般用到的是全匹配 %搜索字%,尾部匹配 搜索字%
其他还有单个字匹配 _ 和首部匹配 %搜索字
数据排序
数据的排序方式:顺序 ASC、逆序 DESC。
在排序中是可以多字段排序的,即会有第一排序条件和第二、三…次排序条件
限制数据记录数量
使用 LIMIT 关键字,后面跟两个参数,第一个参数是从第几条开始,第二个是一共显示多少条记录
统计函数和分组查询
例如要查询:
每个班级有多少学生;
每个班级中年龄最大的学生是谁;
SELECT clazz,MAX(age) AS '最大年龄', COUNT(*) AS '多少人' FROM stu_info WHERE id > 2 GROUP BY clazz HAVING count(*) > 1 ORDER BY MAX(age) DESC
执行顺序
筛选整个表找那个id > 2 的数据;
把筛选出的记录按照 clazz 字段进行分组;
把分组完的结果,筛选出每组数据总数量 > 1的数据 count(*) > 1;
按照分组后的字段进行排序 MAX(age) DESC;
a74a
按照 SELECT 中要求显示的字段输出结果集。
分组查询语法:
SELECT 分组完的字段1, 分组完的字段2, ... FROM 表名 [WHERE 全局表的过滤条件] [GROUP BY 表字段1, 表字段2 HAVING 分组完成后的过滤条件(可以加聚合) ] [ORDER BY 分组完的字段1 ASC/DESC, 分组完的字段2 ASC/DESC,...] 表之间的关系 一对多(多对一) 在多的一方加入一的一方的外键。+ 多对多 通过一个中间表将两个表之间建立关系。 一对一 在所谓的子表中加入所谓主表的外键,并加上唯一性约束。 **自然连接查询** 使用 WHERE 条件将两个表之间进行关联查询
– 查询学员的学号、姓名、所在班级名称
SELECT s.clazz_id,s.code,s.
name,c.id,c.
name
FROM student as s, clazz as c
WHERE S.clazz_id = C.id
**内连接查询** 内连接查询是可以使用自然连接查询替代的,但是效率方面,内连接会高
SELECT s.
code, s.
name, c.
nameFROM student s
INNER JOIN clazz c ON s.clazz_id = c.id
**左外连接查询** 以左表为主表,左表中的数据都会被显示出来,关联的右表中,如果存在符合条件的数据,那么会被关联出并显示,如果没有,则会显示 NULL。
– 查询学员选课信息,要求显示出班级、账号、课程等基础信息
SELECT
cl.name as ‘班级名称’,
s.
codeas ‘学号’,
s.
nameas ‘姓名’,
a.username as ‘账号’,
a.password as ‘账号密码’,
c.
nameas ‘课程名称’
FROM student_course sc
LEFT JOIN student s ON sc.student_id = s.id
LEFT JOIN course c on sc.course_id = c.id
LEFT JOIN clazz cl on s.clazz_id = cl.id
LEFT JOIN account a on a.student_id = s.id
“`
相关文章推荐
- MySQL 学习教程(十七)【整理】- 代码执行结果
- SQL (mysql)最常用代码整理 基础知识
- mysql innodb master_thread伪代码整理
- 整理部分java代码和oracle,mysql,sql server对比数据类型
- 【旧代码整理】一个PHP操作mysql的class类
- asp textbox获取显示mysql数据示例代码
- Java之MySQL 存储过程【整理】
- 正好整理了一下,自己做了个连接数据库的组件,支持SQLSERVER,ACCESS,ORACLE,FoxPro,MySql,IBM DB2,DBF等数据库,并且支持事务处理
- 整理笔记,发现判断是否联网的C#代码 --..--
- mysql所有出错和错误的代码的列表
- 二分图匹配实例代码及整理
- Java代码注释规范_动力节点Java学院整理
- Mysql 中间件整理
- 【整理】Apache、PHP、MySQL默认安装目录
- linux下mysql命令大全 整理
- mysql学习整理(一)
- TCPL第一章部分代码整理
- 【整理】【代码的坏味道】重复代码(Duplicated Code)
- 【整理】MySQL引擎问题总结
- springboot - 集成mysql实现方式之一,DruidDataSource 完整代码实现