目录
一、sql语句
创建数据库?
查看、删除数据库
创建表
修改表
二、CRUD语句
Insert(添加)语句
upadate(更新)语句
delete(删除)语句
select(查找)语句
where子句中经常使用的运算符
三、合计/统计函数
count:返回行的总数
sum:返回满足where条件的行的和,一般用在数值列
avg:返回满足where条件的一列平均值
max/min:返回满足where条件的一列的最大/最小值
使用group by子句对列进行分组
使用having子句对分组后的结果进行过滤
like操作符
分页查询
四、Mysql常用数据类型(列类型)
五、字符串、数学、时间日期相关函数
六、MySQL表外连接
七、MySQL约束
7.1 primary key(主键)
7.2 not null(非空)
7.3 unique(唯一)
7.4 foreign key(外键)
7.5 check
八、自增长
九、索引
9.1 索引的类型? ? ??
9.2 索引使用
十、MySQL事务
10.1?事务和锁
十一、Mysql管理
11.1 创建用户
11.2?删除用户
11.3 用户修改密码
11.4 给用户授权
11.5 权限生效指令
一、sql语句
创建数据库?
create database 数据库名 character set utf8 collate utf8_bin
character:指定数据库采用的字符集,不指定默认utf8
collate:指定数据库字符集的校对规则(utf8_bin[区分大小写]、utf8_general_ci[不区分大小写),默认是utf8_general_ci
查看、删除数据库
显示当前数据库的所有数据库语句:show databases
显示数据库创建时定义信息语句:show create database 数据库名
删除数据库:drop database 数据库名
创建表
create table 表名(
? ? ? ? field1 datatype not null default xx,
? ? ? ? .......................)
character set 字符集 collate 校对规则 engine 存储引擎
field:指定列名
datatype:指定列类型(字段类型)
not null default:给个默认值
character set:如不指定则为所在数据库字符集
collate:如不指定则为所在数据库校对规则
修改表
使用alter table语句追加,修改或删除列的用法
二、CRUD语句
Insert(添加)语句
insert into 表名 列名(属性)?values(值);
upadate(更新)语句
update 表名 set 列名 where ......
set子句:要修改哪些列和要给予哪些值
where子句:应更新哪些行。如果没用where子句则更新所有的行
delete(删除)语句
delete from 表名 where ......
where子句:应更新哪些行。
select(查找)语句
select [distinct]?* from 表名 where name = '字段'
*:表示所有列
from:表示指定查询哪张表
distinct可选,指显示结果时,是否去掉重复数据
使用表达式对查询的列进行运算
select * 列名 from 表名
在select语句中可使用as语句
select 列名 as 表名 from 表名
where子句中经常使用的运算符
使用order by子句排序查询结果
select 列名1,列名2
????????from 表名;?
? ? ? ? order by 列名 asc/desc
orderby指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名
asc:升序[默认];desc:降序
三、合计/统计函数
count:返回行的总数
select count(*)?from 表名
? ? ? ? where .......
sum:返回满足where条件的行的和,一般用在数值列
select sum(列名) from 表名
? ? ? ? where......
avg:返回满足where条件的一列平均值
select avg(列名) from 表名
? ? ? ? where ......
max/min:返回满足where条件的一列的最大/最小值
select max(列名) from 表名
? ? ? ? where ......
使用group by子句对列进行分组
select 列名1,列名2...from 表名
? ? ? ? group by 列名
使用having子句对分组后的结果进行过滤
select 列名1,列名2 from 表名
? ? ? ? group by 列名
? ? ? ? having ......
like操作符
select * from 表名
? ? ? ? where ..... like ' XX%?'
like:%表示0到多个任意字符
? ? ? ? _表示单个任意字符
分页查询
select * from 表名
? ? ? ? order by 列名
? ? ? ? limit 每页显示记录数*(第几页-1),每页显示记录数
- union all:该操作符用于取得两个结果集的并集。当使用该操作符时,不会取消重复
- union:该操作符与union all相似,但是会自动去掉结果集中重复行
四、Mysql常用数据类型(列类型)
详细查看Mysql攻略(一)
五、字符串、数学、时间日期相关函数
详细查看Mysql攻略(二)
六、MySQL表外连接
SELECT .....
? ? ? ? FROM 表1?left / right?join 表2
? ? ? ??on?条件
【表1就是左表,表2就是右表】
?左外连接(如果左侧的表完全显示我们就说是左外连接)
?右外连接(如果右侧的表完全显示我们就说是右外连接)
七、MySQL约束
7.1 primary key(主键)
字段名? 字段类型??primary key
用于唯一的标识表行的数据,当定义主键约束后,该类不能重复
? ? ? ? 1. primary key不能重复而且不能为null
? ? ? ? 2. 一张表最多只能有一个主键,但可以是复合主键
? ? ? ? 3. 主键的指定方式有两种
? ? ? ? ? ? ①直接在字段后面指定:字段名 primary key
? ? ? ? ? ? ②在表定义最后写 primary key(列名)
? ? ? ? 4. 使用desc 表名,可以看到primary key的情况
7.2 not null(非空)
字段名 字段类型?not null
如果在列上定义了not null,那么当插入数据时,必须为列提供数据
7.3 unique(唯一)
字段名 字段类型?unique
当定义了唯一约束后,该列值是不能重复的
? ? ? ? 1. 如果没有指定not null,则unique字段可以有多个null
? ? ? ? 2. 一张表可以有多个unique字段
7.4 foreign key(外键)
用于定义主表和从表之间的关系:外键约束要定义在表上,主表则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null
foreign key(本表字段名) ?references
主表名(主键名或unique字段名)
? ? ? ? 1. 外键指向的表的字段,要求是primary key或者是unique
? ? ? ? 2. 表的类型是innodb,这样的表才支持外键
? ? ? ? 3. 外键字段的类型要和主键字段的类型一致(长度可以不同)
? ? ? ? 4. 外键字段的值,必须在主键字段中出现过,或者为null【前提是外键字段允许为null】
? ? ? ? 5. 一旦建立主外键的关系,数据不能随意删除了
7.5 check
用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000~2000之间,如果不再1000~2000之间就会提示出错
提示:oracle和sql server均支持check,但是mysql5.7目前还不支持check,只做语法校验,但不会生效
列名? 类型 check?(check条件)
user 表
八、自增长
字段名 ?整型 ?primary key auto_increment
添加 自增长的字段方式
inser into xxx(字段1,字段2.....)values(null,'值' ....);
inser into xxx(字段2.....)values('值1','值2' ....);
inser into xxx values(null,'值1',....);
1. 一般来说自增长是和primary key配合使用的
2. 自增长也可以单独使用【但是需要配合一个unique】
3. 自增长修饰的字段为整数型的(虽然小数也可以但是非常非常少这样使用)
4. 自增长默认从1开始,可以通过如下命令修改:alter table 表名 auto_increment = 新的开始值
5. 如果添加数据时,给自增长字段(列)指定的有值,则以指定的值为准,如果指定了自增长,一般来说就按照自增长的规则来添加数据 ?
九、索引
9.1 索引的类型? ? ??
????????1. 主键索引,主键自动的为主索引(类型Primary key)
? ? ? ? 2. 唯一索引(UNIQUE)
? ? ? ? 3. 普通索引(INDEX)
? ? ? ? 4. 全文索引(FULLTEXT),一般开发不适用mysql自带的全文索引,而是使用:全文搜索Solr和ElasticSearch(ES)
9.2 索引使用
create [unique] index index_name on table_name (col_name[(length)]) [ASC| DESC],..);
alter table?表名 add primary key(列名,.....);
drop index index_name on table_name;
alter table table_name drop primary key;
show index(ex) from table_name;
show keys from table_name;
desc table_name;
十、MySQL事务
10.1?事务和锁
当执行事务操作时(dml语句),mysql会在表上加锁,防止其它用户改表的数据
mysql数据库控制台事务的几个重要操作
1. 开始一个事务:start transaction
2. 设置保存点:savepoint
3. 回退事务:rollback to
4. 回退全部事务:rollback
5. 提交事务,所有的操作生效,不能回退:commit
十一、Mysql管理
11.1 创建用户
create user? '用户名'@'允许登录位置' identified by '密码'
说明:创建用户,同时指定密码
11.2?删除用户
drop user '用户名'@'允许登录位置'
11.3 用户修改密码
①修改自己的密码
set password = password('密码');
②修改他人密码(需要有修改用户密码的权限)
set password for '用户名'@'登陆位置' = password('密码');
11.4 给用户授权
grant 权限列表 on 库.对象名 to?'用户名'@'允许登录位置'【identified by '密码'】
11.5 权限生效指令
如果权限没有生效,可以执行下面命令
FLUSH PRIVILEGES;
|