MySQL代码整理
来源:互联网 发布:淘宝店铺鞋子logo 编辑:程序博客网 时间:2024/06/01 20:25
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 > 2GROUP BY clazz HAVING count(*) > 1ORDER BY MAX(age) DESC
执行顺序
筛选整个表找那个id > 2 的数据;
把筛选出的记录按照 clazz 字段进行分组;
把分组完的结果,筛选出每组数据总数量 > 1的数据 count(*) > 1;
按照分组后的字段进行排序 MAX(age) DESC;
按照 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.name
FROM student s
INNER JOIN clazz c ON s.clazz_id = c.id
**左外连接查询**以左表为主表,左表中的数据都会被显示出来,关联的右表中,如果存在符合条件的数据,那么会被关联出并显示,如果没有,则会显示 NULL。
– 查询学员选课信息,要求显示出班级、账号、课程等基础信息
SELECT
cl.name as ‘班级名称’,
s.code
as ‘学号’,
s.name
as ‘姓名’,
a.username as ‘账号’,
a.password as ‘账号密码’,
c.name
as ‘课程名称’
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代码块整理
- MySQL代码整理
- mysql innodb master_thread伪代码整理
- php与mysql连接及操作的常用代码整理
- 【旧代码整理】一个PHP操作mysql的class类
- SQL (mysql)最常用代码整理 基础知识
- 代码整理
- 代码整理
- mysql整理
- mysql 整理
- mysql 整理
- mysql 整理
- mysql整理
- mysql 整理
- mysql整理
- UBB代码~(整理)
- 整理一些Javascript代码
- 数据结构代码整理(1)
- 详解C语言判断系统的大小端问题
- VS2010-DataGridView滚动条不可用的解决
- intellij idea 打可运行scala jar 包的两种方式
- Node 解压文件夹
- 2018秋招 今日头条1017 二阶魔方
- MySQL代码整理
- centos6.5 yum install nginx
- 数据库查询语言分类
- 彻底弄懂Activity四大启动模式
- iOS开发iOS8扩展App Extension 中文版
- bzoj 2763 飞行路线(分层图??)
- 重新学习Linux
- springBoot集成shiro+redis遇到的坑
- LoadRunner测试多个用户账号是否可用