MYSQL基础操作

目录

对数据库的操作

表操作

列操作

约束

​事务控制命令

SQL:

简单查询:

高级查询:

增删改

MySQL的函数

mysql数学函数:

MySQL聚合函数:

MySQL字符串函数

MySQL日期时间函数

MySQL流程函数


对数据库的操作

创建数据库:create database (数据库名);

显示数据库:show database;

删除数据库:drop database (数据库名);

连接数据库:use (数据库名);

查看当前使用的数据库:select database();

当前数据库的表信息:show tables;

在MySQL的bin目录下进入命令行测试:

表操作

创建表:

create table (表名)(

列名 数据类型(数据大小),

列名 数据类型(数据大小),

……

列名 数据类型(数据大小)

)

删除表:drop table (表名);

截断表:truncate table (表名);

运行后:

修改表名:

rename table 原表 to 新表;

列操作

增加列:

alter table 表名 add 列名 列表类型;

向test表中添加varchar类型名为”qq“的列:

alter table test add column qq varchar(10) not null;

修改列类型:

alter table 表名 modify 列名 新列类型 新参数;

在test表中修改列名为”qq“的类型,改为varchar:

alter table test modify qq varchar(10) not null;

修改列名及列类型:

alter table 表名 change 老列名 新列名 新列类型 新列参数;

在test表中修改列名为”qq“的列,改名为”email“:

alter table test change qq email varchar(20) not null;

删除列:

alter table 表名 drop 列名;

在test表中删除列名为”email“的列:

alter table test drop column email;

约束

1、主键约束:primary key

2、外键约束:foreign key

3、非空约束:not null

4、唯一约束:unique (防止数据插入时重复)

5、默认约束:default

事务控制命令

开启一个事务:begin;

禁止自动提交:set autocommit=0;

提交事务:commit;

回滚事务:rollback;

SQL:

简单查询:

查询:select 列名 from 表名;

去重查询:select distinct 列名 from 表名;

升序(降序)排列:select 列名 from 表名 order by 列名 (desc);

条件查询:select 列名 from 表名 where 条件;

比较常见的where子句操作符:

高级查询:

打印前五个学生的名字:select name from student limit 5;

打印4-6名学生的名字:select name from student limit 3,3;(从0开始,这里第一个数代表开始的位置,第二个代表搜索的数量)

在where组合查询中and优先级比or高

in操作符:select name from student where name in('zhangsan','lisi');

not操作符:和其他操作符一起用,比如not in。

like模糊查询:select name from student like 'zhang%';%为通配符,可以是任意字符,不限出现次数。

字段拼接:select concat(id,name) from test.test order by id;

聚合函数:

别名as:一般跟在函数后面,命名。

分组:group by 

分组过滤:having 

having和where的区别:where是在分组前进行过滤,而having是在分组后进行过滤,一般搭配group by使用。

子查询:

一般在要查询的数据分散在两张表的情况下使用:

先在表A中查到姓名为“张三”的人的id,再根据id在表B中查找到校时间:

select time from B where id in (select id from A where time='张三');

内联:

两组对照:

查找A,B两表中id相同的name:

select A_name,B_name from A,B where A.id=B.id;

select A_name,B_name from A inner join B on A.id=B.id;

左外联:left join (输出坐标的所有行,右表没有的补null)

右外联:right join

全外联:full join (包括两表中不关联的行,没有的补null,mysql不支持)

笛卡尔积:没有联结关系的结果为笛卡尔积,检索出的行的数目将是第一个表中行数乘以第二个表中的行数。

union组合查询:

select语句 union select语句

union all不会取消重复的行,而union会取消重复的行。

增删改

插入:

不指定列:insert into A values('0010','赵六');

指定列:insert into A(id,name) values('0010','赵六');

多行:insert into A values('0009','王五'),('0010','赵六');

复制信息表:

insert into A select * from B;(把B的值赋给A)

修改:

update 表 set 列名='值' where 列名='值';

省略where语句会更新全表。、

删除:

delete from 表;清空表数据,保留表结构,是dml操作,可以回滚。

drop table 表;删除表,ddl操作,无法回滚。

truncate table 表;截断表,删除数据,保留表结构,ddl操作,无法回滚。

视图:

create view 视图名 as select语句(一般是多表查询);

触发器:

create trigger <触发器名称>

{before|after}

{insert|update|delete}

on <表名称>

for each row

begin

        <触发执行的SQL语句>

end;

MySQL的函数

mysql数学函数:

abs(x):返回x的绝对值

ceil(x):返回不小于x的最小整数

floor(x):返回不大于X的最大整数

mod(x,y):返回x/y的摸

rand():返回0~1内的随机值

round(x,y):返回参数X的四舍五入的有Y位小数的值。

truncate(x,y):返回数字X截断y位小数的结果。

MySQL聚合函数:

avg():返回某列的平均值

count():返回某列的行数

max():返回某列的最大值

min():返回某列的最小值

sun():返回某列值之和

MySQL字符串函数

cuncat(s1,s2):字符串拼接

insert(str,x,y,instr):将字符串str从x位置开始, y个字符长的子串替换为指定的字符。

lower(str):转小写

upper(str):转大写

left(str,x):返回str最左边的x个字符

right(str,x):返回str最右边的x个字符

lpad(str,n,pad):在str最左边填充n个pad

rpad(str,n,pad):在str最右边填充n个pad

ltrim(str):去掉str左侧的空格

rtrim(str):去掉str右侧的空格

trim(str):去掉行尾和行头的空格

repeat(str,x):返回str重复x次的效果

strcmp(s1,s2):比较字符串s1和s2

replace(str,s1,s2):用s2替换str中所有出现的字符串s1

substring(str,x,y):返回字符串str x位置起y个字符长度的字串



MySQL日期时间函数

curdate():返回当前日期

curtime();返回当前日期

now():返回当前日期和时间

unix_timestamp(date):返回日期date的UNIX时间戳

from_unixtime:返回unix时间戳的日期值

week(date):返回日期date为一年中的第几周

year(date):返回日期date的年份

hour(time):返回time的小时值

minute(time):返回time的分钟值

monthname(date):返回date的月份名

date_format(date,fmt):返回按字符串fmt格式日期date值

date_add(date,interval expr type):返回一个日期或时间值加上一个时间间隔的时间值

datediff(expr,expr2):返回起始时间expr和结束时间expr2之间的天数。

date_format:

MySQL流程函数

if(value,t,f)  如果value是真,返回t;否则返回f。

ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2.

case when [value1] then [result1]……else [default] end 如果value1为真,返回result1,否则返回result。

case[expr] when [value1] then [result1]……else [default] end 如果expr等于value1,返回result1,否则返回default.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值