首先呢,我们要先对数据库进行操作
我们要先对数据库进行操作:
1. 查询所有数据库
show databases;
2. 创建数据库
show database 数据库名;
3. 查看数据库
show 数据库名;
4. 选择数据库
use 数据库名;
5. 删除数据库
DROP 数据库名;
我们对数据库进行操作后,然后要对表要进行操作,我们划分了数据库的每个定义操作,有以下四种:
DDL(data definition language)数据定义语言
作用:创建 删除 修改 库表结构(重点)
DML(data manipulation language)数据操作语言
作用:增 删 改表的记录(重点)
DCL(data control language)数据控制语言
作用:用户的创建以及授权(懂)
DQL(data query language)数据查询语言
作用:查询数据(重点)
平常我们对一些数据库的操作语句划分是按照每种定义语言进行划分的,但我这里不按那种进行划分,而是将表的定义和表的数据划分开来
对表的操作:
1. 查看表
a) 查看表的结构
DESCRIBE 或 DESC 表名;
b) 查看数据库下面所有的表
show tables;
c) 查看创建表的SQL语句
show create table 表名
2. 新建表
新建表之前要选择数据库,表明该表新建在该数据库下面
create table [if not exists] 表名(
字段1 数据类型 [字段属性] [约束] [索引] [注释],
字段2 数据类型 [字段属性] [约束] [索引] [注释]
)[表类型][表字符集][注释];
3. 删除表
drop table 表名
4. 对表的字段进行操作
a)修改表名
alter table 旧表名 rename [to] 新表名;
b)添加字段
alter table 表名 add 字段名 数据类型 [属性];
c)修改字段
1. alter table 表名 change 原字段名 新字段名 数据类型[属性];
这个语法可以修改字段的名字,改完之后所有书属性和值都会被重新修改
2. alter table 表名 modify 原字段名 数据类型[属性];
可以不修改字段的名字
d) 删除字段
alter table 表名 drop 字段名;
添加主键:
alter table 表名 add constraint 主键名 promary key 表名(主键字段)
添加外键;
alter table 表名 add constraint 外键名 foreign key (外键字段) references 关联表名(关联字段);
好了,我们这里就将表的结构操作讲完了,接下来就该讲一下对表的数据进行操作;
对表的操作无非四种:增删改查
表数据操作里面查询是范围最大最重要的语句,所以放在最后面写
1. 表的数据插入
a) insert into 表名 (列1,列2,列值3......)values(列值1,列值2,列值3......)
b) insert into 表名 (列1,列2......)values(列值1,列值2.......)
这里插入的字段可选,不必全部赋值
c) insert into 表名 values(列值1,列值2,列值3.......)
插入单个字段
(列值1,列值2,列值3.....),(列值1,列值2,列值3.....);
2. 对表数据的更新
upaate 表名 set 列1=列值1,列2=列值2,列3=列值3 where 条件;
不加where 条件则会修改所有记录
3. 删除数据
a) detele from 表名 where 条件
不加where 条件会删除所有的记录
b) truncate table 表名;
truncate语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比delete语句块
接下来就是最重要的查询语句了:
4.数据的查询
a)查询语法
select <列名|表达式|函数|常量|> from <表名> [where <查询条件表达式>] [ordry by <排序的列名>[asc 或者 desc]];
b)查询全部的行和列
select *from 表名
c) 查询部分列
select 字段1,字段2,字段3 from 表名 where 查询条件
d) 数据查询-列别名
使用as 命名列
select 字段1 as 别名1, 字段2 as 别名2 ..... from 表名 where 查询条件
as也可不用写,直接用空格隔开也行
也可将字段连起来翻译器查询:
select 字段1+‘ .’+字段2 as 别名 from 表名;
下面还要介绍一个新建表的捷径,这也是数据的备份操作:
将查询结果插入新表中
语法:
create table 表1(
select 字段1,字段2 from 表2
);
这是将表2里面查询出来的数存入表1中,这里有一个约束,比如该表1存在时就会报错
还有一种插入方法:
insert into 表1(c1,c2,c3) select 表2.字段1, 表2.字段2,表2.字段3 from 表2
这是表存在的情况下
这种插入必须要表1和表2的字段的大小和类型要一致,要不然插入数据时会报错
5. 子查询:
子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询
子查询在WHERE语句中的一般用法
SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询)
注意:
将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个
6. IN子查询:
常用IN替换等于(=)的子查询
IN后面的子查询可以返回多条记录
7. ORDER BY子句
ORDER BY子句实现按一定顺序显示查询结果
列:
把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序
SELECT `studentNo` AS 学生编号,(studentResult*0.9+5 ) AS 综合成绩
FROM `result`
WHERE(`studentResult`*0.9+5) >=60
ORDER BY studentResultDESC;
8. LIMIT子句
MySQL查询语句中使用LIMIT子句限制结果集
SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY <排序的列名>[ASC 或 DESC]]
[LIMIT [位置偏移量,]行数];
9. 常用函数-聚合函数
AVG():返回某字段的平均值
count():返回某字段的行数
MAX(): 返回某字段的最大值
MIN():返回某字段的最小值
SUM():返回某字段的和
10. 常用函数-字符串函数
coucat(str1,str1...strn) :字符串连接
insert(str,pos,len,newstr) :字符串替换
lower(str):将字符串转为小写
upper(str):将字符串转换为大写
substring(str,num,len):字符串截取
11.常用函数-时间日期函数
curdate():获取当前时间
curtime():截取当前时间
now():获取当前日期和时间
week(date):返回日期date为一年中的第几周
year(date):返回日期的date的年份
hour(time)返回时间time 的小时值
minute(time):返回时间time 的分钟值
datediff(date1,date2):返回日期参数date1和date2之间相隔的天数
adddate(date,n):计算日期参数date加上n天后的日期
12.常用函数-数学函数
ceil(x):返回大于或等于数值x的最小整数
floor(x):返回小于或等于数值x的最大整数
rand():返回0-1之间的随机数