MySQL基础语法总结
一、MySQL的库操作
本文章主要是复习MySQL时,总结了一下MySQL的基础语法,如有问题多多指教
MySQL的登陆和退出操作
//登陆
MySQL -u 用户名 -p密码
//退出
exit;
1.数据库创建
//数据库的创建
create database 数据库名;
2.数据库的查看
//查看已经创建好的数据库
show databases;
3.删除数据库
//删除数据库
drop database 数据库名;
4.数据库的进入
use 数据库名;
二、关于表的操作
1.表的创建
1.1常用数值类型
1.2常用字符类型
1.3日期时间类型
1.4完整性约束表
完整性约束 | 对插入数据的时候有约束 |
---|---|
primary key | 表示当前属性为该表的主键,可以区分不同的行记录 不能重复 |
foreign key | 修饰的属性为该表的外键,表之间关联使用的键 |
not null | 表示属性不能为空 |
unique | 表示属性的值是唯一的 属性值不能重复 |
auto_increment | MYSQL特色,表示属性是自增的,自增类型为整形 |
default | 给属性设定默认值 |
主键 :通过主键推出其他的所有属性的值。
如果不满足上述条件说明主键设置的有问题。
一个表只能有一个主键 ,主键不能为空,不能重复
1.5表的相关操作
(1)查看库中的所有表
show tables;
(2)查看表的结构
desc 表名;
查看表的相关属性
show create table 表名:
(3)创建表
create table 表名 (
属性名1 数据类型 完整性约束(可以没有的),
属性名2 数据类型 完整性约束,
属性名3 数据类型 完整性约束,
..........
属性名N 数据类型 完整性约束);
例如:创建一个学生表,包含学生学号、姓名、年龄、性别
create table Student(
stu_id int not null,
name varchar(10)not null,
age int,
sex varchar(10));
(4)修改表
添加字段
alter table 表名 add 列名 类型;
alter table Student add birthday datetime;
修改表名
alter table 表名 rename 新名;
alter table Student rename Stu;
修改字段-数据类型
alter table 表名modify 列名 类型 约束;
alter table Student modify sex varchar(5);
修改字段-属性重命名
alter table 表名 change 旧属性名 新属性名 新数据类型
alter table Student change sex sexs varchar(10);
删除字段
alter table 表名 drop 列名;
alter table Student drop age;
2.插入数据
(1)属性不可缺省方式:
test_user(id int ,name varchar(20),age int)
insert into(into可以不写) 表名 values
(属性值1,属性值2,属性值3,属性值4......);
//例如:插入学生小李
insert Student values(stu_id,name,sex)values
(2,'小李','男');
(2)属性可缺省方式:
insert into(into可以不写) 表名 (属性1,属性2,属性3,属性4......)values
(属性值1,属性值2,属性值3,属性值4......);
//例如:插入学生小明
insert Student values
(1,'小明',12,'男');
字符串类型 日期时间 加 ‘’ 如: ‘Bob’ ‘1990’**
3.删除语句
delete from 表名 where 筛选条件
//例如:删除年纪大于60岁的人
delete from student where age > 60;
delete from 表名——删除整个表中数据
4.修改语句
update 表名 set 属性1=新值1,属性2=新值2......where 筛选条件
//例如:修改5号同学名字为小虎年龄为20
update student set name = '小虎', age = 20 where stu_id = 5;
5.查询语句
select * from 表名 where 筛选条件;
*代表显示全部属性
select 属性1,属性2.....from 表名 where 筛选条件;
in(元素1,元素2,…,元素n)——表示在集合中的数据
select * from 表名 where 属性 in ();
//例如:学号为1,2,4学生的信息
select * from student where stu_id in(1,2,4);
6.各种特殊使用
between 取值1 and 取值2——取值1<=结果<=取值2
//学生年龄在12到20直接的——[12,20]
select * from student where age between 12 and 20;
like '字符串’
在没有通配符时:like等效于=;
查询空值——is [not] null
消除重复结果select distinct 属性 from 表名
对查询结果排序
(升序)select * from 表名 order by 属性(asc);
//例如:对学生的年龄排序
//升序
select * from student order by age;
//(降序)
select * from student order by age desc;
分组——group by
select * from student group by sex;//对性别分组
group by 与group_concat()
group by 与集合函数一起使用
group by与having一起使用
显示记录数大于等于3的,如下
having表达式作用于分组后的记录,用于选择满足条件的分组
group by 与with rollup一起使用
最后记录count(sex)的值为上面分组和
limit 限制查询结果数量
limit的初始位置为0,
limit 0,2;——输出0,1条数据
7.集合函数
count——统计记录数
按学号分组
sum()函数——求和函数
对学号为1的成绩求和
avg()函数——求平均值
course_id——不同科目
max()函数——最大值
各科目的最大值
min()函数——最小值
各科目的最小值
cast(属性 as dec(n.m)——小数保留设置
8.复合查询
内连接查询
select 表1,属性名……表2 from表1,表2 where 表1.EX=表2.EX and……
//例如:查询学生的成绩
左连接查询
A、B两表,以A表为左(主)
select A.……B.…… from A left join B on A.EX=B.XE
例如:通过左连接以Student为主表,查询学生的成绩
右连接查询
A、B两表,以B表为右(主)
select A.……B.…… from A right join B on A.EX=B.XE
例如:通过右连接以Student为主表,查询学生的成绩
9.子查询
语法:select 属性列表 from 表1 where 连接方式(select 属性列表 from 表2 where 刷选条件)
连接方式:in、not in、exists、not exists 比较运算符 还有any、all
exists:当内层查询查询到结果记为true,外层才执行
not exists:当内层查询查询到结果记为false,外层才执行
any:与任何一个比较,满足一个条件就可以
all:与任何一个比较,满足全部条件才可以
例如:查询学生成绩大于60的信息
10.合并查询(union)
语法:查询语句1
union
查询语句2……;
注:本内容用的的两张表分别为