1. SQL语句的分类
SQL语句可分为三类,分别是:
DDL—数据定义语言(Data Define Language):create(创建),alter(修改),drop(删除),TRUNCATE(截断),RENAME(重命名); |
2. 数据库操作
注意:使用DDL语言时,必须在动词后跟上数据库对象名词(例如:TABLE、VIEW、INDEX、SCHEMA、TRIGGER等)。
数据库的链接
# mysql -h 127.0.0.1 -u root -p |
常用的参数解释:
-A 不预读数据库信息,提高连接和切换数据库速度,使用--disable-auto-rehash代替 |
创建数据库:
create database test |
查看数据库:
show databases; |
选择数据库:
use mysql; |
删除数据库:
drop database test1; |
3. 表操作
创建表:
create table student( |
语法解析(下文MySQL列属性单独解析):
如果不想字段为NULL可以设置字段的属性为NOT NUL,在操作数据库时如果输入该字段的数据为NULL,就会报错.
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1.
PRIMARY KEY关键字用于定义列为主键.可以使用多列来定义主键,列间以逗号分隔.
ENGINE 设置存储引擎,CHARSET 设置编码, comment 备注信息.
查看表的创建语句
show create table 表名; |
查看表的结构
desc 表名; |
删除数据表(删)
drop table [if exists] 表名; |
alter 修改表名(改)
alter table 旧表名 rename to 新表名; |
增加表字段
alter table 表名 add 新列名 字段类型 [字段选项]; |
修改字段类型
alter table 表名 modify 字段名 新的字段类型 [新的字段选项]; |
change 重命名字段
alter table 表名 change 原字段名 新字段名 新的字段类型 [新的字段选项]; |
修改字段排序
/*关键字:first 修改字段排序,把某个字段放在最前面*/ |
4. 数据操作
插入数据(增)
insert into 表名(字段列表) values(值列表); |
查询数据(查)
select name from user where age>0;--查name字段,age大于0 |
删除数据(删)
delete from 表名[删除条件]; |
修改数据(改)
update 表名 set 字段1=新值1,字段n=新值n [修改条件]; |
排序
select * from user order by age ; |
限制记录数
select * from emp limit 100;//查询100条数据 |
聚合
select count(id) from emp ; //count():记录数 |
group by分组
select count(name) as count,sex from user group by sex;//按性别分组,并列出性别和数量 |
5. 表连接
- left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录;
- right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录;
- inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行;
- full join:外连接,返回两个表中的行:left join + right join;
- cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
内连接
只返回两个表中连接字段相等的行
select * from user as A , tb_account as B where A.id=B.id; |
查询结果
左外连接
包含左表中所有的记录以及右表中连接字段相等的记录
select * from user as A left join tb_account as B on A.id=B.id; |
查询结果
右外连接
包含右表中所有的记录以及左表中连接字段相等的记录
select * from user as A right join tb_account as B on A.id=B.id; |
嵌套查询
//in, not in |
记录联合
//union:返回去重之后的结果 |