表:table是数据库的基本组成单元,所有的数据都以表格的形式组织,目的可读性强;一个表包括行和列:行被称为数据/记录;列被称为字段
每一个字段应该包括哪些属性?
字段名,数据类型,相关的约束
DQL(数据查询语言):查询语句,凡是select语句都是DQL
DML(数据操作语言):insert,delete,update对表中的数据进行增删改
DDL(数据定义语言):create,drop,alter对表结构的增删改
TCL(事务控制语言):commit提交事务,rollback回滚事务
DCL(数据控制语言):grant授权,revoke撤销权限等
CRUD操作:Create(增) Retrieve (检索) Update(修改) Delete(删除)
导入数据:dos命令窗口
第一步:登录mysql数据库管理系统
mysql -uroot -p
第二步:查看有哪些数据库
show databases; (这个不是SQL语句,属于MySQL的命令)
第三步:创建属于自己的数据库
create database 数据库名(bms); (这个不是SQL语句,属于MySQL的命令)
第四步:使用(bms)数据
use 数据库名(bms); (这个不是SQL语句,属于MySQL的命令)
第五步:查看当前使用的数据库中有哪些表?
show tables; (这个不是SQL语句,属于MySQL的命令)
show tables from 数据库名;查看某个数据库中的表
第六步:初始化数据
source 文件路径
当一个文件的扩展名是.sql,并且该文件中编写了大量的sql语句,这种文件被称为sql脚本;直接使用source命令可以执行sql脚本,sql脚本中的数据量太大的时候无法打开,使用source命令完成初始化
删除数据库:drop database 数据库名
查看表结构:desc 表结构名;
查看表:select * from 表结构名
常用命令:select database(); 查看当前使用的是哪个数据库
select version(); 查看mysql的版本号
\c 结束一条语句
exit 退出mysql
查看创建表的语句:show create table 表结构名;
简单的查询语句(DQL)
语法格式:select 字段名1,字段名2,… from 表名;
任何一条sql语句都以";"结尾
sql语句不区分大小写
字段可以进行数学运算
sql语句的字符串用单引号括起来
给查询结果的列表重命名?
select ename,sal*12 as yearsal from 表名
查询所有字段?
select * from 表名;
条件查询:select 字段,字段… from 表名 where 条件;
执行顺序:先from,再where,再select,最后order by
排序:select 字段… from 表名 order by 字段 (asc/desc),字段 (asc/desc); 只有前面的字段相等时(即无法完成排序时),才能用得上后面的字段
默认是升序排序,如何指定升序或降序?
asc表示升序,desc表示降序
单行处理函数:输入一行输出一行
ifnull() 空处理函数:ifnull(可能为null数据,被当做什么处理)
所有数据库都规定:在数学表达式中,有NULL进行运算,结果都为NULL
分组函数/多行处理函数?
count计数 sum求和 avg 取平均 max 最大值 min最小值
所有的分组函数(只有5个)都是对“某一组”数据进行操作的;多行处理函数:输入多行,输出一行
分组函数自动忽略NULL
SQL语句规定分组函数不能直接用在where子句中,因为group by 是在where之后才能执行
count(*)和count(具体的某个字段)的区别:前者不是统计某个字段中数据的个数,而是统计总记录条数;后者表示统计某字段中不为NULL的数据总数量
分组函数也可组合使用
group by:按照某个字段或某些字段进行分组
having:对分组之后的数据进行再次过滤
例如:select max(sal) from 表名 group by job;