定义:sql是结构化查询语言
作用:增删改查;创建表,存储过程,视图;查看表,视图,存储过程
分类:DDL,DML,DCL
DDL是进行数据库的创建删除和修改,一般DBA使用的多一些
创建数据库
如果已经存在
查询存在那些数据库
使用数据库(use dbname)
查看数据库中的表
删除数据库(drop database 数据库名)
创建表
查看表结构(desc 表名)
查看表的创建语句
删除表:drop table 表名
修改表类型:alter table 表名 modify [COLUMN] column_definition [FIRST | AFTER col_name];
增加表字段:ALTER TABLE 表名 ADD [COLUMN] column_definition [FIRST | AFTER col_name];
删除表字段:ALTER TABLE 表名 CHANGE [COLUMN] old_col_name column_definition [FIRST | AFTER col_name];
修改字段排列顺序:ALTER TABLE 表名 [ADD|MODIFY] col_name column_definition [FIRST | AFTER col_name]
更改表名:alter table 表名 rename [to] 新表名
DML:
插入记录:INSERT INTO tablename(field1,field2,...fieldn) VALUES(value1,value2,...,valuen);
在这里不可以指定列名,values后面的顺序应该和字段的顺序保持一致
可以含有空字段,非空但是含有默认值的字段,可以不在insert后的字段列表中出现,values后面对应字段名称的值
更新记录;update 表名 set field1=value1,field2=value2,...fieldn=valuen [WHERE CONDITION];
查询记录:select * from from 表名 where 限定条件
去重:distinct
条件查询的关键字where,>,<,=,!=,>=,<=,and,or
降序排列:desc
升序排列:asc(也可以直接省略不写)
排序以后只显示一部分:SELECT ... ... [LIMIT offset_start,row_count];
offset_start:起始偏移量
row_count:行数
limit一般和order by一起来进行记录分页显示
在其他数据库不可以使用
聚合:SELECT [field1,field2,...,fieldn] fun_name from tablename [WHERE where_contition] [GROUP BY field1,field2,...,fieldn [WITH ROLLUP]] [HAVING where_contition]
fun_name:聚合函数,有sum,count(*),avg,max,min
group by:分组
with rollup:是否在分类以后对结果进行汇总
having:分类后对结果进行过滤
having和where的区别:having是对聚合后的结果进行过滤,where是对聚合前的结果进行过滤
左连接:包含左表中的全部记录以及右表中没有和他匹配的记录,以左表为基准进行连接(left join)
右连接:包含右表中的所有记录已经左表中没有与之匹配的记录,以右表为基准进行连接(right join)
子查询:in,not in,=,!=,exists,not exists
记录联合:将两个表按照一定的条件查出结果后,进行联合(union、union all)
SELECT * FROM t1 UNION|UNION ALL SELECT * FROM t2 ......
union和union all的区别是union all是将查询出来的结果直接联合在一起,而union是在
联合完成以后进行一个去重操作
创建用户并授权:创建一个数据库用户z1,具有对sakila数据库中所有表的SELECT/INSERT权限: grant select,insert sakila.* to 'z1'@'localhost' identified by '123''; 由于权限变更,需要将z1的权限变更,收回INSERT,只能对数据进行SELECT操作: $ mysql -uroot revoke insert on sakila.* from 'z1'@'localhost'; 重新登录后执行前面的语句: $ mysql -uz1 -p123
contents显示有可供分类:
data types查看类别名称
查看int类型的使用
比较常用的视图:
SCHEMATA:该表提供了当前MySQL实例中所有数据库的信息,show databases的结果取之此表。
TABLES:该表提供了关于数据库中的表的信息(包括视图),详细表述了某个表属于哪个schema、表类型、表引擎、创建时间等信息。show tables from schemaname的结果取之此表。 COLUMNS:该表提供了表中的列信息,详细表述了某张表的所有列以及每个列的信息,show columns from schemaname.tablename的结果取之此表。
STATISTICS:该表提供了关于表索引的信息。show index from schemaname.tablename的结果取之此表。