主要功能: 查询数据 (SELECT): 从一个或多个表中检索数据。
插入数据 (INSERT): 向表中添加新记录。
更新数据 (UPDATE): 修改现有记录。
删除数据 (DELETE): 移除记录。
定义数据库结构 (CREATE, DROP): 创建、修改或删除数据库对象(如表、索引等)。
创建数据库 创建数据库是通过SQL语句来完成的,通常使用 create database 语句
常用数据类型:
整型 (int):用于存储整数。
浮点型 (double):用于存储带有小数的数值。
字符型 (varchar):用于存储文本字符串。
日期时间型 (date):用于存储日 创建表是通过SQL语句来完成的,通常使用 create table 语句。创建表时可以定义表中的各个字段及其数 据类型段及其数 据类型
主键约束 (primary key)
非空约束 (not null)
唯一约束 (unique)
默认值约束 (default)
检查约束 (check)
自增字段 (auto_increment)
检索(SELECT):从一个或多个表中检索信息 FROM指出从哪个表检索数据
检索一个列时 只需要加上一个列名 同理 检索多个列时加上多个列名即可
检索所有列时 可不输入列名 用*号代替 再FROM输出当前表名
通配符*
使用通配符可以检索出未知列
DISTINCT 特点是作用于所有的列 只返回不同值的行(具有唯一性)使用时必须放在列名的前面
TOP 可限制最多返回多少行(只检索多少行)
LIMIT (范围)OFFSET (范围)(检索从哪行到哪行)
也可简化为LIMIT(范围),(范围) 逗号之前的值对应的是OFFSET,逗号之后的值对应LIMIT
--表示注释 运用更灵活
#也是注释 但是用的不多 因为会把一整行都作为注释
/内容/这个也是注释
创建 create 删除 drop 库 database 表 table
数字 int 小数 double 字符串 varchar(200) 日期 date
--约束 主键约束primary key 主键不能重复,主键可以自增 唯一约束 unique 不能重复 非空约束 not null 必须有值 默认约束 default 没有填入值的时候自动加上了默认值 检查约束 check 设置值的范围
建表 create table stu( id int primary key auto_incre, name varchar(200) not null default '小明', age int not null default 18 );
删表 drop table sc;
建库 create database sc;
删库 drop database sc;
SQL语句 -- 增加 insert into 表名(列段1,列段2,....) values(值1,值2,...)
insert into stu(name,age,sex) values('jack',19,'男')
insert into stu(name,sex,age) values('jack','男',19)
查询 select select * from 表名
-- 表示所有列段 select * from stu;
-- 显示某些字段 名字 select name from stu;
-- 显示某些字段 名字,年龄 select name,age from stu;
-- 给查询加上条件 年龄大于23岁的 -- where 表示条件查询 select name,age from stu where age>23;
-- 查询所有的数据 只查询男生 select * from stu where sex='男'
select 查询 from 来自那个表 where 条件 set 设置
--- 更改数据 update
update 表名 set 列段1=值1,列段2=值2
-- 会修改所有数据 update stu set name='张三',age=20;
-- 加上条件 update stu set name='张三',age=20 where name='钱七';
-- 更新 student 表中所有学生的年龄, 将其年龄增加 1 岁。 update stu set age=age+1
更新 students 表中所有女性学生的年龄,使其增加2岁。
update stu set age=age+2 where sex='女'
删除 delete delete from 表名
-- 删除学生表所有的数据 delete from stu
--删除学生表年龄大于15 delete from stu where age>15
--删除学生表 性别是女 delete from stu where sex='女'
-- 删除学生表 性别是女并且年龄大于15岁 -- and并且 or或者 delete from stu where sex='女' and age>15;
增加 insert insert into 表名(列1,列2,...) values(值1,值2,...) (主键如果是自增的,可以忽略)
insert into stu(name,age) values('jack',19);
删除 delete delete from 表名 where 条件;
delete from stu where age>20;
修改 update update 表名 set 列1=值1,列2=值2 where 条件;
update stu set name='jack' where age>20;
查询 select select 列段 from 表名 where 条件; (*表示所有的列段)
select name,sex from stu where age>20;
is null 是空值 is not null 是非空
in (1,2,3,4) 在内容里面
not in (1,2,3,4)不在内容里面
between a and b 在区间之间
& 任意个字符 _单个字符
排序order by 字段 顺序
select * from room order by price desc
去重 distinct
替换 REPLACE
字段别名是通过 AS 关键字或者直接跟在列名后使用,可以给查询结果中的列名赋予新的名称,方便展示或者 处理
例如 SELECT name, phone AS 联系电话 FROM user;
条件查询是通过 WHERE 子句指定查询条件,只返回符合条件的记录。
模糊查询是通过 LIKE 操作符配合通配符 % 和 _ 实现模式匹配。
例如 SELECT * FROM plan WHERE begin LIKE '%20'。
排序查询是通过 ORDER BY 子句对查询结果进行排序,可以指定一个或多个列,并指定升序(ASC,默认)或 降序(DESC)。
升序 SELECT * FROM room ORDER BY price ASC;
降序 SELECT * FROM room ORDER BY type_id DESC;
去重查询是通过 DISTINCT 关键字去除查询结果中的重复行,常用于统计不同的值。
SELECT DISTINCT name FROM type;
字符串函数
UPPER(column) - 将字符串转换为大写。
LOWER(column) - 将字符串转换为小写。
CONCAT(column1, column2, ) - 将多个字符串连接成一个字符串。
SUBSTRING(column, start, length) - 截取字符串的一部分。
LENGTH(column) - 获取字符串的长度。
replace(column, old, new) - 将字符串转换为小写。
数学函数
1.ABS(column) 计算绝对值
2.CEIL(column) 向上取整
3.FLOOR(column) 向下取整
4.ROUND(column) 四舍五入
日期函数
NOW() - 获取当前日期和时间。
YEAR(date) - 提取日期中的年份。
MONTH(date) - 提取日期中的月份。
DAY(date) - 提取日期中的天数。
其他函数
IFNULL(column, default_value) - 如果列值为 NULL,则返回默认值。
常用的聚合函数:
COUNT(): 计算符合条件的行数。
SUM(): 计算数值列的总和。
AVG(): 计算数值列的平均值。
MAX(): 找出一列中的最大值。
MIN(): 找出一列中的最小值
内联接(INNER JOIN)
INNER JOIN 只返回两个表中匹配的行。如果某一行在其中一个表中没有匹配,则该行不会出现在结果集中。
左联接(LEFT JOIN)
LEFT JOIN 返回左表中的所有行和右表中匹配的行。如果右表中没有匹配,则使用NULL填充右表中的列。
右联接(RIGHT JOIN)
RIGHT JOIN 返回右表中的所有行和左表中匹配的行。如果左表中没有匹配,则使用NULL填充左表中的列。
GROUP BY 子句用于组合数据,通常与聚合函数一起使。
HAVING 子句用于对 GROUP BY 子句生成的结果集进行筛选。
区别总结:
物理存在
表:实际存储数据。
视图:只是保存的查询,不存储数据。
性能
表:直接查询表通常更快。
视图:需要执行其定义的查询,可能会稍慢。
更新
表:可以直接进行插入、更新和删除操作。
视图:取决于其定义的查询是否允许更新。
索引是数据库中用于提高查询速度的一种数据结构。它类似于书籍的目录,通过索引可以直接找到需要的数据 行,而不需要扫描整个表。
索引的优点 1. 提高查询速度:索引可以显著加快查询操作,特别是对于大型表。 2. 加速排序和分组:索引可以帮助数据库引擎更快地进行排序和分组操作。 3. 唯一性约束:唯一索引可以确保索引列中的所有值都是唯一的。
索引的缺点 1. 增加存储空间:索引需要额外的存储空间。 2. 影响写操作:插入、更新和删除操作会变慢,因为每次操作都需要维护索引