MySQL
1、数据库
MySQL连接
通过命令行连接MySQL
exit命令退出mysql
创建数据库
该数据库不存在则创建并设定编码集为utf8,否则不创建
显示数据库
显然有我刚刚创建的新数据库zl
删除数据库
使用数据库
2、数据表
创建数据表
表的主键为int类型且是自增长的,其他字段均为非空
当然也可以使用UUID做主键,类型为varchar(36),不设置自动增长
显示数据表
当前数据库中的表,t_user创建成功
显示数据表结构
删除数据表
3、表中数据操作(增删改查)
插入数据
主键设置为UUID类型
查询数据
查询是数据库中极为复杂的操作了,下面是一些通用的select语法:
select column_name,column_name
from table_name
[where Clause]
[offset m][limit n]
查询语句中可以使用一个或多个表,表之间使用逗号分隔
column_name,column_name可以使用*来代替,select语句会返回表的所有字段数据
where语句添加查询条件
通过offset指定select语句开始查询的数据偏移量,默认为0
通过limit属性来设定返回的记录数
where子句
语法
select field1,field2,...fieldN from table1,table2...[where condition1 [and [or]] condition2]
使用and或or指定一个或多个条件,where子句也可以应用在SQL的delete或update命令,where子句类似于程序语言中的if条件
where子句的字符串比较是不区分大小写的,但可以使用binary关键字设定where子句区分大小写
更新数据
语法
update table_name set field1=new-value1, field2=new-value2 [where Clause]
修改密码
当需要将字段中特定字符串批量修改为其他字符串时,可以使用如下操作
update table_name set field=replace(field, 'old-string','new-string')[where Clause]
删除数据
语法
delete from table_name [where Clause]
当没有指定where子句时,当前表中所有记录将被删除
4、常用属性
like
使用like来获取,字段中含有查询条件的所有记录,like子句中使用%字符表示任意字符,类似正则表达式中的*,如果没有使用%,like子句与=的效果是一样的
union
union操作符用于连接两个以上的select语句的结果组合到一个结果集中,过个select语句会删除重复的数据
语法
select expression1, expression2, ... expression_n
from tables
[where conditions]
union [all | distinct]
select expression1, expression2, ... expression_n
from tables
[where conditions];
distinct:可选,删除结果集中的重复的数据,默认情况下union操作符已经删除了重复的数据,所以distinct修饰符对结果没影响
all:可选,返回所有结果集,包含重复数据
建两个新表
删除重复数据查
查询所有数据(包括重复)
添加条件查询
order by(排序)
order by 子句将查询数据排序后再返回数据
语法
select field1,field2,…
table_name1,table_name2...
order by
field1,[field2...][asc [desc]]
使用asc或desc关键字设置查询结果按升序或降序显示,默认是升序
降序
group by(分组)
group by 语句根据一个或多个列来对结果进行分组,分组的列上我们可以使用count,sum,avg等函数
语法
select column_name,
function(column_name)
from table_name
where column_name operator value
group by column_name;
普通的分组查询
使用with rollup
with rollup 可以实现在分组统计数据的基础上在进行相同的统计(sum,avg,count)
使用coalesce来设置一个可以取代null的名称
join(MySQL连接的使用)
inner join(内联):获取两个表中条件匹配的记录
left join(左联):获取左表中所有的记录和右表中条件匹配的记录
right join(右联):获取右表中所有的记录和左表中条件匹配的记录
新建两张表
内联查询
右联查询
左联查询
null
MySQL提供三大运算符:
is null、is not null、<=>(当两个值都为null时返回true)
在MySQL中null值与任何其他值(包括null)比较都为false
regexp(正则表达式)
查找name字符串中包含a的记录
^ : 字符串以什么开始
$ : 字符串以什么结束
. : 匹配除”\n”以外任何单个字符
[…] : 匹配字符集合所包含的任意一个字符
[^…] : 匹配字符集中不包含的任意一个字符
p1|p2|p3 :匹配一个或一个以上
*:匹配前面的表达式零次及以上
+:匹配前面的表达式一次或多次
{n}:n为非负数,匹配n次
{n,m}:n,m为非负数,匹配最少n次,最多m次