MySql常用SQL语句


mysql是基于c/s架构的,那么服务器端必定需要占用端口,这个端口是3306
-------------------
#mysql -h 主机名 -u 用户名 -p:在‘超级终端’中可以使用命令的方式进入到mysql数据库的控制管理交互程序。
h:后面接的是主机名,表示你要连接到哪台主机的MySQL数据库。
u:后面接的是用户名,MySQL默认的就是root。
p:指定需要使用密码登陆MySQL数据库,如果密码为空,该参数可以省略。

-----------
#show databases;:查看mySql中的数据库数据
#select database();:查看正在使用的数据库
#create database 数据库名;:进行对应数据库信息的创建操作
#create database 数据库名 character set utf8:在创建数据库的时候制定编码格式,一般为utf8
#use 数据库名;:选择要操作的数据库
#create table 数据表名():进行对应数据表信息的创建操作
#not null:字段属性不为空
#int unsigned:字段属性整型不包含负数
#primary key:设置为主键
#aotu_increment:自增长,aotu_increment=1000,自增长从1000开始
#describe 表名:查看对应的表结构
#drop table 数据表名;:进行对应数据表的删除操作
#drop database 数据库名;:进行对应数据库的删除操作

-----------
#alert table 表名 add 属性名 类型;:为指定数据表中添加对应的属性
#alert table 表名 change 老的属性名 新的属性名 类型;:为指定的数据表中的属性进行修改操作
#alert table 表名 drop 属性名;:进行指定数据表中对应属性的删除操作
#alert table 数据库表名 rename 新数据库表名:重命名数据库表

-----------
#insert into 数据表名 (属性1、属性2、属性3) values (内容1、内容2、内容3):对应数据的添加操作
#delete from 数据表名:删除指定数据表中的数据
#update 数据表 set 属性1=内容1 :数据表对应数据的修改操作
#select 列名称 from 数据库表名 where 查询条件
#distinct:过滤查询出来的重复数据
#and/or:逻辑与/逻辑或。如果在查询条件中,使用了or与and,那么and的优先级要高于or,解决的办法是添加小括号()
#not:非
#is null/is not null:为空/不为空
#like/in:like与通配符使用实现模糊查询,in判断字段是否在其后面的小括号中
#通配符%/_:%表示任何字符出现任意次数;下划线只能匹配一个字符。
#concat:对搜索出来的数据按照一定格式来显示;concat(name,'(',sum,')')
#group by:分组查询(group by 必须在where子句之后,在order by子句之前

#having:类似于之前使用的where过滤一样,如果想要对分组的结果进行过滤的话,那么就需要使用having
#order by:指定字段进行排序
#limit(3,3):分页显示
第1个数字,表示开始显示的位置
第2个数字,表示显示个记录的个数
默认显示的位置是从0开始的

#inner join:内联结查询
#left join:左联结查询
#right join:右联结查询
#union:组合查询

#常用聚合函数:可与分组配合使用
avg():返回某列的平均值
count():返回某列的行数
max():返回某列的最大值
min():返回某列的最小值
sum():返回某列值的和

-------------------
常用的数据类型:
1、整型
tinyint:有符号值:-128到127 无符号值:0到255(2^8-1)
smallint:有符号值:-32768到32767 无符号值:0到65535(2^16-1)
mediumint:有符号值:-8388608到8388607 无符号值:0到16777215(2^24-1)
int:有符号值:-2147483648到2147483647 无符号值:0到4294967295(2^32-1)
bigint:有符号值:-2^63到2^63-1 无符号值:0到2^64-1

2、浮点型
float(M,N):小数加整数部分一共是M位,N表示小数位;总共占用4字节
double(M,N):小数加整数部分一共是M位,N表示小数位;总共占用8字节

3、时间类型
date(4字节):1000-01-01/9999-12-31 YYYY-MM-DD 日期值
time(3字节):'-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
year(1字节):1901/2155 YYYY 年份值
datetime(8字节):1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值

4、字符类型
char:0-255字节 定长字符串
varchar:0-255字节 变长字符串
tinytext:0-255字节 短文本字符串
text:0-65535字节 长文本数据


-------------------
顺序 子句 说明 是否必须使用

1 select 要返回的列或表达式
2 from 从中检索数据的表 仅在从表选择数据时使用
3 where 行级过滤
4 group by 分组 仅在按组计算聚集时使用
5 having 组级过滤
6 order by 输出排序顺序
7 limit 要检索的行数


-------------------事务-------------------
#事务:就是一段sql 语句的批处理,但是这个批处理是一个atom(原子) ,不可分割,要么都执行,要么回滚(rollback)都不执行。

#事务必须满足的4个条件(ACID):
原子性(Autmic):事务在执行性,要做到“要么不做,要么全做!”,就是说不允许事务部分得执行。即使因为故障而使事务不能完成,在rollback时也要消除对数据库得影响!
一致性(Consistency):事务得操作应该使使数据库从一个一致状态转变倒另一个一致得状态!就拿网上购物来说吧,你只有即让商品出库,又让商品进入顾客得购物篮才能构成事务!
隔离性(Isolation):如果多个事务并发执行,应象各个事务独立执行一样!
持久性(Durability):一个成功执行得事务对数据库得作用是持久得,即使数据库应故障出错,也应该能够恢复!

#注意:Alter table table_name type=InnoDB;将数据表的引擎修改为innodb,才能进行对应的操作


方法1:
#begin/start transaction:开启事务
#rollback:回滚
#commit:提交

方法2:
#mysql默认的autocommit=1 表示自动提交,可以理解每条语句一输入到mysql就commit 了
#set autocommit=0 :取消自动提交
#commit:自动提交