SQL:结构化查询语言分6个部分。
- DDL: Data Definition Language 数据定义语言
- DML: Data Manipulation Language 数据操作语言
- DQL: Data Query Language 数据查询语言
- DCL: Data Control Language 数据处理语言(授权之类的)
- CCL: Cursor Control Language 指针控制语言(用于存储过程的,等Oracle讲)
- TPL: Transaction Processing Language 事务处理语言
一、DDL数据定义语言,定义数据库对象,创建、修改、删除库/表的结构
1、查询数据库:show databases
2、切换数据库:use 数据库名称
3、创建数据库:create database 名字 (character set utf8)
4、删除数据库:drop database 名字
5、删除数据库编码:alter database 名字 character set utf8
6.、数据类型
- int 整形
- double 浮点型 double(5.2)
- decimal 浮点型
- char 固定长度的字符串,最长255
- varchar 可变长度的字符串.最长65535
- text 字符串类型,分为:很小,小,中,大(mysql独有)
- blob 字节类型,分为:很小,小,中,大
- date 日期类型,格式是yyyy-MM-dd
- time 时间类型,格式是hh:mm:ss
- timerstamp 时间戳类型
7、表的操作:
创建表:create table 表名(列名 列类型...)
查询表:show tables
查看表结构:desc 表名
删除表:drop table 表名
修改表内容:alter table 表名+
添加列:add
修改列类型:modify 列名 列类型
修改列名:change 原列名 新列明 列类型
删除列:drop 列名
修改表明称:rename to 新表名
二、DML数据操作语言,定义数据库记录,增删改:表的记录
(判断语句有=、!=、<>、>、<、>=、<=、between...and、in(...)、is null,not,and,or)
1、插入数据:insert into 表名 \(列名...)可以省略,但是必须全部match\ values(列值...)
2、修改内容:update 表名 set 列名=新的列值where \修改的地方\or
3、删除数据:delete from 表名 where \修改的地方\
三.DCL数据控制语言,定义访问权限和安全级别
1、创建用户:create 新用户名@localhost identified by '密码'
2、登录用户:mysql -u用户名 -p密码 (-localhost)
3、授权:grant 权限... on 数据库.表名 to 用户名@ip地址
grant all on 数据库. to 用户名@ip地址
4、撤销权限:revoke 权限... on 数据库.表名 to 用户名@ip地址
5、查看权限:show grants from 用户名@ip地址
6、删除用户:drop user 用户名@ip地址
四、DQL数据查询语言,查询不会修改数据库表记录
1、字段控制,查询表的内容:select (distinct去除重复的列)列名... from 表名
select from 表名
2、查询指定列:selcet 列名 from 表名
3、查询列(去除重复列名,相同列名只会显示一列):select distinct 列名 from 表名
4、列运算:select 列名 1、5\列名+列名 from 表名
select ,列名+ifnull(列名,0) from 表名\列名中如果有null更换为0
5、字符串做连接:select concat(列名,列名) from 表名\两个字符串的列连接在一起
6、给运算后的列起名字:select 列名 1、5 (as) 新列名 from 表名
7、可以使用条件控制语句:select 列名 from 表名 where 列名>1000 or\and 列名<50000
列名 between 2000 and 3000
列名 in('某个值','某个值')
8、模糊查询:select from 表名 where 列名 like '张__'(某一列中了名字像张..的,几个_下划线就是后面几个字符)
'%张%'(%匹配多个字符,包括0,前后都字符,只有中间有张)
9、排序:select from 表名 order by 列名 asc\desc(指定某一列按照asc升序排列,或desc降序排列)
select from 表名 order by 列名 asc\desc,再一列 desc,再一列 desc(如果存在相同时引入第n列参加排序)
10、select count(列名) from 表名 计算表中某个列中不为null的列数
select count( \或任意数字) from 表名 所有列中不为null的列数(只要某一项中有一个数值不为null就参加运算)
11、select sum\max\min\avg(平均)(某一数字列) from 表名
12、分组:select 列名,count( ) from 表名 group by 列名 这是以某一列的不同列名来分组,展示出不同组的人数,在列名后面只能放函数
select address,count( ) from mydb1 where age>15 group by address having count( )>=2
查找年龄大于15 并且分组后组内的人数大于2人的
13、select from 表名 limit n,m 从第n行开始查询m行