商河县做网站公司,建昌县城乡规划建设局网站,永州市规划建设局网站,个人网站赏析一 DDL语句:数据定义语言
1 作用:操作表
2 常用关键字 CREATE(创建) DROP(删除(销毁)) ALTER修改
3 格式
-- 单行注释/* 多行注释 */删除表:DROP TABLE [IF EXISTS] 表名;括号内为查看该表是否存在有则删创建表:参考JavaBean中定义有参构造器 #xff08;最后一列不写逗…一 DDL语句:数据定义语言
1 作用:操作表
2 常用关键字 CREATE(创建) DROP(删除(销毁)) ALTER修改
3 格式
-- 单行注释/* 多行注释 */删除表:DROP TABLE [IF EXISTS] 表名;括号内为查看该表是否存在有则删创建表:参考JavaBean中定义有参构造器 最后一列不写逗号
CREATE TABLE 表名(
列名1 数据类型[约束] [字段约束],
列名2 数据类型[约束] [字段约束],.....
列名n 数据类型[约束] [字段约束]
);4 表约束 – 又称字段约束或列约束
作用:限定表中指定字段存储数据的规则;需要根据表中的列含义和实际情况相结合来编写表约束
分类:
① 通用约束 – 所有的关系型数据库
非空约束 -- NOT NULL(常用)唯一约束 -- UNIQUE(常用)默认值的约束 -- DEFAULT 值(没有特殊要求一般不用)外键约束 -- FOREIGN KEY(必须是多表操作目前用不上)主键约束 -- PRIMARY KEY(重点)特点1:非空且唯一,等价于NOT NULL UNIQUE同时使用 特点2: 每张表中有且仅有一个主键字段 特点3:如果表中定义主键字段,推荐使用不具备业务逻辑的列作为主键
② 方言约束只适用于MySQL数据库
AUTO_INCREMENT -- 主键自增长特点:必须配置主键字段编写默认从1开始,每次增长1,类似Java中的或1
③ 例子
# 判断表是否存在若存在则删除
DROP TABLE IF EXISTS t_employee;# 创建表
CREATE TABLE t_employee(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
eid VARCHAR(10) NOT NULL UNIQUE,
ename VARCHAR(6) NOT NULL,
job VARCHAR(10),
salary INT(10)
);二 DML语言 – 数据操作语言
1 作用:对表中数据进行增删改操作
2 关键字
INSERT INTO ... VALUES... --插入UPDATE ... SET... -- 修改DELETE FROM ... --删除3 插入数据
# 向表中所有字段插入一条数据,VALUES语句中的值与表中字段的顺序一致
# INSERT INTO 表名 VALUES(值1,值2....);
INSERT INTO t_employee
VALUES(1,tj001,大黄,医药代表,15000);# 向表中指定字段(不具有自增长和默认值的字段)插入一条数据
# INSERT INTO 表名(列1,列2....)VALUES(值1,值2....);
INSERT INTO t_employee(eid,ename,job)
VALUES(tj002,大白,机器人);# 同时向表中指定字段插入多条数据(常用)
# INSERT INTO 表名 (列1,列2...)VALUES(值1,值2....),(值1,值2....),(值1,值2....);
INSERT INTO t_employee(eid,ename,job)
VALUES(tj004,大橘,机器人),(tj003,小黑,保安);4 修改数据
# 不对修改设置条件表中所有数据都会被修改
# UPDATE 表名 SET 列1值,列2值....[WHERE 条件];# 将所有员工的职业设置为智能机器人
UPDATE t_employee
SET job智能机器人;# 将大黄的职业设置为保安
UPDATE t_employee
SET job保安
WHERE ename大黄;5 删除数据
# 不对删除设置条件表中所有数据都会被删除
# DELETE FROM 表名[WHERE 条件]# 删除员工编号为tj004的员工
DELETE FROM t_employee
where eidtj004;# 删除表中所有数据
DELETE FROM t_employee;6 DELETE语句与DROP语句区别 ① DELETE语句:DML语句,操作表中数据,删除表中数据,保留表结构 ② DROP语句:DDL语句,操作表,将表结构删除
三 DQL语言 – 数据查询语言
1 作用:查询表中的数据
2 查询操作结果分类 ① 没有结果 – 0条数据 ② 有一个结果 – 1条数据 ③ 多个结果 – 存放到List集合中
3 语法
① 查询员工表所有信息
# * 表示查询指定表中所有的字段
# 字段: 字段表示查询表中的指定字段
# 函数: 表示调用MySQL定好的方法
SELECT *|字段|函数 FROM 表名;# 查询员工表所有信息
SELECT * FROM t_employee;# 查询员工表指定字段
SELECT ename,eid FROM t_employee;② 去重查询
SELECT DISTINCT ename,eid
FROM t_employee;③ 算数运算符: - * /
# MySQL中算数运算符只针对数值型和日期类型数据
# 数值型数据可以进行 - * /操作;日期型只支持 - 操作# 员工工资翻倍
SELECT ename,salary,(salary*2)
FROM t_employee;# 员工工资翻倍再加上5000块绩效
SELECT ename,salary,(salary*25000)
FROM t_employee;④ 给指定字段定义别名
# 起别名时 as 可省略
SELECT ename,salary,(salary*25000) as 工资
FROM t_employee;⑤ 给定格式显示数据
# 使用CONCAT(列1烈2...)
SELECT ename,salary,CONCAT(ename,拿到了双倍工资,(salary*2),还有,5000,的绩效) 工资说明
FROM t_employee;⑥ 过滤查询
# SELECT *|字段|函数 FROM 表名 WHERE 条件;
# 关系判断: (不等于,等价!)# 查询工作不是智能机器人的员工
SELECT ename,job
FROM t_employee
WHERE job 智能机器人;⑦ 逻辑判断 – AND()
# 查询工资大于10000且工作不是智能机器人的员工
SELECT ename,salary
from t_employee
WHERE salary 10000 AND job 智能机器人;# BETWEEN AND 当判断条件仅有1个字段时可使用取值范围包括端点
SELECT ename,salary
from t_employee
WHERE salary BETWEEN 10000 AND 15000;⑧ 逻辑判断 – OR(||)
# 查询工资大于12000或者工作不是智能机器人的员工
SELECT ename,salary
from t_employee
WHERE salary 12000 or job 智能机器人;# IN(值1,值2,...) 判断条件仅有一个字段时使用条件的结果是确定的几个值中的任意一个
SELECT ename,salary
from t_employee
WHERE salary IN(10000,12000,15000);⑨ 逻辑判断 – NOT(!)
# 查询工资不是10000和12000的员工
SELECT ename,salary
from t_employee
WHERE salary NOT IN(10000,12000);⑩ 特殊值判断 – 判断当前字段是否为 NULL
# 为空 IS NULL 不为空 IS NOT NULL
SELECT ename,salary
from t_employee
WHERE salary IS NULL;### MySQL中运算符的优先级 (由高到低)
() 算数( - * /) 关系 NOT AND OR4 模糊查询 – 关键字搜索
① 语法
SELECT * | 字段 |函数 FROM 表名 WHERE 字段 LIKE 值;② 通配符 _:表示一个字符 %:表示任意多个字符,取值范围[0,正无穷)
# 查询名字大字共计开头两个字的员工
SELECT ename,salary
from t_employee
WHERE ename LIKE 大_;# 查询名字含黄字的员工
SELECT ename,salary
from t_employee
WHERE ename LIKE %黄%;5 排序显示
① 语法
SELECT * |字段 |函数 FROM 表名 ORDER BY 列[排序方式,列[排序方式],....];排序会增加用户等待时长;一般参与排序的字段数据类型为数值型或日期型; 使用多个字段进行排序,当且仅当前一个字段无法排序时,才会使用后一个字段的排序方式进行操作
② 分类 升序排序:默认的排序方式,关键字ASC,可以省略不写 降序排序:关键字 DESC ,必须写
# 按照工资降序排序同时按照工号升序排序
SELECT ename,salary
from t_employee
ORDER BY salary DESC,eid;6 分页显示
① 优势 提高用户观感度 一定程度上避免内存溢出的风险
② 语法
# LIMIT语句是MySQL的方言
# 第一个?:表示当前页开始显示数据的下标(从0开始)
# 第二个?:表示的是当前也显示数据的条数
# 例子:一共16条数据,每页显示3条
# 第一页下标 0 第二页下标 3SELECT * |字段 |函数
FROM 表名
LIMIT ?,?;# 将员工信息分页展示每页3条数据显示第2页
SELECT ename,salary
from t_employee
LIMIT 6,3;7 小结
① 完整的DQL 语句
SELECT *|字段|函数
FROM 表名
[WHERE 条件]
[ORDER BY 排序字段]
[LIMIT ?,?];② 执行顺序 从指定的表中(FROM语句),根据指定条件(WHERE语句),查询指定的数据(SELECT 语句),根据指定的字段进行排序(ORDER BY语句),以指定的条件进行分页显示(LIMIT 语句)
四 聚合函数 – 分组函数
1 作用:针对表中指定的某一个字段进行统计操作是由MySQL定义好的方法,直接调用即可
2 常见聚合函数 – 5个
COUNT(字段) -- 统计指定字段个数以下4个聚合函数只对数值型数据有意义SUM(字段) -- 统计指定字段的数据总和AVG(字段) -- 统计指定字段的数据平均值MAX(字段) -- 统计指定字段的数据最大值MIN(字段) --统计指定字段的数据最小值# 查询员工总数
SELECT COUNT(id) from t_employee;# 查询此次公司给员工发放的薪水总额与平均工资
# 聚合函数对NULL值会进行忽略做统计操作需配合IFNULL(字段,替换值)方法
SELECT SUM(salary) 发放金额,AVG(IFNULL(salary,0)) 员工平均工资,MAX(salary) 第一,MIN(salary) 倒数
from t_employee;聚合函数对于字段中的NULL值会进行忽略处理;因此在进行统计总数操作时,需使用具有非空约束的字段
五 导入与导出
1 导出命令 mysqldump -u用户名 -p密码 指定的数据库名 导出的地址(.sql结尾)
2 导入命令:前提是指定的数据库必须存在 mysql -u用户名 -p密码 指定的数据库名 导入的地址(.sql结尾)