数据库命令大全

时间:2021-11-12 03:25:46

八、数据的操作

show databases;//显示所有数据库

use testdb//使用testdb数据库

show tables;//显示所有表

create table users(id int auto_increment,username varchar(20),address varchar(200),age int,key(id));//创建表,id自增长

insert into users values(1,'petter','beijing');//表中插入数据

另外insert可以插入多行,多个括号跟在后面就行。

九、表单数据记录查询

select * from users;//查看users表中全部数据

select * from users limit 2;//查看前两行数据

select * from users limit 1,2;//查看从第一行之后的两行数据

select id,username from users;//查看表的id,username两列

desc users;//查看表的属性

select address,count(address) from users group by address;//通过统计address来进行分组

数据库命令大全

select host,User from mysql.user;//显示数据库的使用者

select address,count(address) from users group by address having count(address)>1;//只把count(address)大于一的显示出来

select * from users order by age;//按照age进行排序

select * from users order by age asc;//按照age升序排列

select * from users order by age desc;//按照age降序排列

create table users_new like users;//根据users的属性新建users_new但不复制数据

insert into users_new select * from users;//把users的全部数据插入users_new

drop table users_new;//删除表

update users set age=28,address='xian' where id=4;//修改id为4的age为28,address为xian

delete from users where id=4;//删除id为4的行

source C:\Users\yckj\Downloads\census-income.sql//将本地文件导入

select distinct(address) from users;//查看所有的address的种类

select 1+1;//select可以实现四则运算、求余

select concat('hello','world');//连接两个字符串

select * from users where age>29;//条件查询

select * from users where (id>2 and age>29) or address='shanghai';//条件查询

select * from users where age between 30 and 32;//between条件查询

select * from users where age in (32,29);//in条件选择

select * from users where age not in (32,29);//not in 条件选择

show variables like '%max%';//把包含max的变量都会显示出来

show variables like '%max';//把以max结尾的变量显示出来

show variables like 'max%';//把以max开头的变量显示出来

select * from users where address like 'be%';//把users中address以be开头的显示行找出来;

select count(id) from users;//统计id的个数

select count(*) from users; //把表中所有的记录统计出来

select avg(age) from users;//计算age的平均值

select sum(age) from users;//计算所有age的和

select max(age) from users;//age的最大值

select min(age) from users;//age的最小值

select age,count(1) from users group by age;//根据age分组并统计数目

select age,id,count(1) from users group by age,id;// 根据age和id分组并统计数目;

select age,id,group_concat(username) from users group by age,id;//显示按照age,id分组之后的username;

select age,id,group_concat(username) as uname from users group by age,id having id>1;//把group_concat(username)重命名为uname,并且用having id>1过滤id为1的行;

十、多表数据记录查询

select * from users2 union select * from users;//合并查询两个表的内容

select * from users where (address,age)=(select address,age from users where username='lixin');//查询和lixin地址,age一样的user;

select * from users where age in (29,30);//查询age是29和30的

select * from users where age<any(select age from users where address="shanghai");//>any查询比any中最小的大的数据记录,<any表示查询比any中最大的要小的记录。

select * from users where age<all(select age from users where address="shanghai");//>all查询比all中最大的大的数据记录,<all表示查询比all中最小的要小的记录。

delete from users where id=4;//删除表中id=4的数据;

select bin(5);//显示5的二进制

十一、mysql运算符

select a,a+5,a*2 from t1;//加减乘除

select a,a/3,a div 3,a%5,mod(a,5) from t1;//除、取余

select a,a=24,a<12,a>40,a>=24,a<=24,a!=24,a<>24,a<=>24 from t1;//数值比较

select a,a='24','ha'<>'ha','xa'='xa','b'!='b' from t1;//字符串比较

select a,a is null, a is not null from t1;//is null not is null

select a,a in(1,2,23),a in(24,12,22) from t1;//in

select s,s like 'beijing',s like 'b%g',s like 'bei____',s like '%jing' from t2;//like

select a,a between 15 and 30,a not between 15 and 30 from t1;//between

select 2&&2,2&&null,2 and 3,2 and 2;//与

select 2||2,2||null,2 or 3,2 or 0;//或

select !1,!2,!null;//非

十二、使用字符串常用函数

select concat('M','y','SQL'," 5.5");//字符串连接

select concat_ws('-',curdate(),12.34);//把指定的分割符插入到字符串中

select strcmp("abc",'ab');//字符串比较函数

select length('sdfsgdfg');//返回字符串长度

select upper('sdfsgdfg124');//大写字符串

select ucase('sdfsgdfg124'); //大写字符串

select lower('sDFGSDGgdfg124');//小写字符串

select find_in_set('mysql','a,b,csdf,mysql,sky');//查找位置

SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');//查找位置

select left('2015-03-23 23:23:32',10);//从字符串左边开始截取10个字符

select right('2015-03-23 23:23:32',10);//从字符串右边开始截取10个字符

select mid('this is the test',4,6);//把字符串从4开始截取6位

select substring('this is the test',4,6);//把字符串从4开始截取6位

select trim(' sdfd sd ');//去除字符串首尾空格

select ltrim(' sdfd sd ');//去除字符串首空格

select rtrim(' sdfd sd ');//去除字符串尾空格

select replace('this is test','is','is not');//将字符串is替换为is not

select rand(1);//随机数

select ceil(4.5);//向上取整5

select round(123.4567,3);//四舍五入保留3位小数123.457

select floor(4.5);//向下取整4

select truncate(213.234435,2);//保留两位小数

select now();//获取当前时间:日期,时分秒

select curdate();//获取当前日期;

select sysdate();//系统时间,日期,时分秒

select year(now());//返回现在的年

十三、存储过程和函数操作

delimiter $$//以$$为结束符

mysql> create procedure pro_test()//创建存储过程

-> begin

-> select address from users

-> end

-> $$

call pro_test;//调用存储过程

mysql> create function fun_test(age int(11))//创建函数

-> return int(2,11)

-> begin

-> return (select id from users where users.address='beijing');

-> end

-> $$

Select fun_test; //调用函数

show procedure status \G //显示所有存储过程

show create procedure user_count \G //显示user_count存储过程

drop procedure pro_test;//删除pro_test

十四、MYSQL事务

begin;//开启事务

commit;//提交事务

rollback;//撤销

set autocommit=1;//设置自动提交,经提交的事务不能再撤销

读取未提交事务称为脏读

set global transaction isolation level read uncommitted;//设置隔离级别,修改之后要重新登录

show variables like '%tx%';//查看隔离级别

所有事务都可以看到其他未提交事务的执行结果,读取未提交的数据称为脏读。

update users set id=111 where id=2;//修改users id为111的数据变成id为2

show engine innodb status \G;//可以查看数据库中的锁状态

十五、mysql安全机制

select * from user \G;//可以查看所有用户及其权限,注意这个user是数据库mysql自带的table;

mysql -uroot -padmin -h127.0.0.1//登录mysql,用户为root,密码为admin,ip127.0.0.1

mysql -uroot -padmin -h127.0.0.1 mysql//使用mysql数据库

grant usage on *.* to lixin@192.168.0.100 identified by "12345";//为数据库创建一个名为lixin,指定ip为192.168.0.100, 密码为12345的新用户,这个用户只有连接数据权限,无修改权限

show grants;//显示当前用户权限

grant usage on *.* to lixin@192.168.0.100 identified by "abc";修改密码为abc

flush privileges;//修改用户之后刷新权限相关表

drop user lixin@192.168.0.100;//删除用户lixin

十六、mysql日志管理

在my.ini文件中加入log-bin启动日志文件,注释掉则停用,记录修改数据库的操作

加入log文件启动通用日志文件,记录所有操作

Mysqlbinlog lixin-bin.000001//查看lixin-bin.000001日志文件

Flush logs;//刷新日志文件并产生新的log文件

purge master logs to lixin-bin.30//删除小于30的所有lixin-bin文件

purge master logs before ‘2016-05-16 22:35:50’//删除2016-05-16 22:35:50之前创建的所有日志文件

flush logs //刷新日志文件

set global general_log=on;//启动通用日志

show variables like '%general_log%' \G;//显示通用日志状态

set global general_log=off;//关闭通用日志

慢查询:让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。