MySQL常用语句

一、显示(show)
//显示帮助
help show; #显示所有可以显示的信息语法;

//显示数据库
show databases;

//选中数据库
use tablename; #回车后显示Database changed 表示选中成功;

//显示表
show tables;

//显示列
show columns from tablename;
或者
describe tablename;
或者
show columns in tablename;

//其他
//显示服务器状态信息
show status;
//显示创建数据库的sql语句
show create database databasename;
//显示创建表的sql语句
show create table tablename;
//显示数据库用户
show grants;
//显示服务器错误信息
show errors;
//显示服务器警告信息
show warnings;

二、数据库的操作
	1、查看数据库
	show databases;
	2、创建数据库
	create database databasename;
	3、删除数据库
	drop database databasename;
	4、使用数据库
	use databasename;

三、数据表的操作
	1、查看数据库中可用的数据表
	show tables;
	2、查看数据表结构
	show columns from databasename;
	或者
	show columns in databasename;
	或者
	describe tablename;
	3、创建表
	create table if not exists tablename(
		id tinyint not null auto_increment,
		name varchar(20) not null,
		score int(3) not null default 0,
		primary key(id)
	)ENGINE=InnoDB;
	default charset=utf8;
	或者
	drop table if exists tablename;
	create table tablename(
		id tinyint not null auto_increment,
		name varchar(20) not null,
		score int(3) not null default 0,
		primary key(id)
	)ENGINE=InnoDB;
	4、删除表
	drop table tablename;
	或者(有条件)
	drop table if exists tablename;
	5、复制表
	//复制表结构和数据
	create table if not exists newtablename select * from oldtablename;
	//只复制表结构
	create table if not exists newtablename select * from oldtablename where 1=2;
	或者
	create table if not exists newtablename like oldtablename;
	//只复制数据(新表与旧表表结构完全一致)
	insert into newtablename select * from oldtablename;
	//只复制数据(新表与旧表表结构部分列一致)
	insert into newtablename(field1, field2, field3) select field1,field2,field3 from oldtablename;
	6、重名民表
	rename table oldtablename to newtablename;
	或者
	alter table oldtablename rename newtablename;

四、表结构(列)的操作
	1、增加新列
	alter table tablename add columnname datatype[(20)] [not null];
	2、删除列
	alter table tablename drop columnname;
	3、修改列
	alter table tablename modify columnname datatype[(20)];
	4、修改表选项
	alter table tablename charset set gbk;

五、表数据的操作
	############查询############
	
	1、查询数据
	//单列查询
	select prod_name from products;
	
	//多列查询
	select prod_name, prod_price from products;
	
	//所有列查询
	select * from products; #通配符(*)
	
	//去重查询
	select distinct vend_id from products; #distinct 作用于所有列为不仅是前置它的列;
	select all vend_id from products;#默认为all,所有记录,可省略;
	
	//限制记录数(行数)查询
	//limit offset, row_count
	//offset:偏移量,可省略,默认为0,即从第几行开始;
	//row_count:查询的记录数
	select * from products limit 5;
	select * from products limit 2,10;
	
	2、排序数据
	//单列排序 
	select prod_name from products order by prod_name;
	
	//多列排序
	select prod_id, prod_name, prod_price from porducts order by prod_price, prod_name;
	
	//指定方向排序
	select prod_name from products order by prod_price desc; #降序
	select prod_name from products order by prod_price asc; #升序,默认可省略
	select prod_id, prod_name, prod_price from porducts order by prod_price desc, prod_name asc;
	
	例子:查询价格最高的10条记录
	select * 
	from products 
	order by prod_price desc 
	limit 0,10;
	#order by子句一定要在from子句之后;limit子句一定要在order by子句之后;
	
	3、过滤数据
	//where 子句操作符
	//8种条件操作符:= <> != < <= > >= between
	//2中逻辑操作符:and、or、in、(not in)
	
	//单值where子句
	select prod_name, vend_id from products where prod_price = 2.50; #where子句一般在from子句之后,order by子句之前;
	select prod_name, vend_id from products where prod_price between 2.50 and 10.00; #左右都是闭区间
	select prod_name, vend_id from products where prod_price is null; #检查空值
	select prod_name, vend_id from products where prod_price is not null; #检查非空
	
	//多值where子句
	select * from products where vend_id=1003 and prod_price < 10; #and子句
	select * from products where vend_id=1002 or vend_id=1003; #or子句
	
	例子:查询供应商为1002或者1003且价格高于10的商品名称和价格
	//and和or组合使用,运算优先级:and > or
	//解决方案:添加括号。
	//代码规范:and 和 or组合使用的时候,不管默认计算是不是你想要的,都最好添加括号,增加可读性;
	错误示范:select prod_name, prod_price from products where vend_id=1002 or vend_id=1003 and prod_price >= 10;
	相当于:select prod_name, prod_price from products where vend_id=1002 or (vend_id=1003 and prod_price >= 10);
	参考答案:select prod_name, prod_price from products where (vend_id=1002 or vend_id=1003) and prod_price >= 10;
	
	//in 与 not in
	//sql优化:in 好于 or;
	select * from products where vend_id in (1002, 1003) order by prod_name; #in 功能上与 or 相似;
	相当于
	select * from products where vend_id=1002 or vend_id=1003 order by prod_name;
	select prod_name from products where vend_id in (select distinct vend_id from products where prod_price >= 10) order by prod_name asc; #子查询
	
	//MySQL中not对in、between、exists取反
	select * from products where vend_id not in (1002, 1003) order by prod_name; #not in
	
	//通配符:%:多个字符 _:仅一个字符
	//sql优化:慎用,效率低;
	select prod_name from products where prod_name like '%lin%'; #首字母就是通配符的,检索效率是最低的;
	select prod_name from products where prod_name like '_lin_';
	
	//正则表达式过滤数据
	select * from products where prod_name regexp '.000' order by prod_name;
	select * from products where prod_name regexp '1000|2000' order by prod_name;
	select * from products where prod_name regexp '[123] Ton' order by prod_name;
	select * from products where prod_name regexp '\\.' order by prod_name;
	//简单正则表达式测试
	select ('hello' regexp '[0-9]'); #返回值0:未匹配 1:匹配
	
	
未完。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值