新手7天学会MySQL语法教程及案例 - 易启发资源网

新手7天学会MySQL语法教程及案例

作者: 易启发

全网最全的网络资源分享网站

手机扫码查看

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

广告位

数据类型

整数类型

tinyint

-128~127

smallint 

-32768~32767

mediumint

-8388608~8388607

int(integer)

-2 31 ~2 31 -1

bigint

-2 63 ~2 63 -1

浮点类型

float

存储要有 8 个字节,数据精确度为 7 位小数

double

存储要有 8 个字节,数据精确度为 15 位小数

定点数类型

decimal(p,[s])

其中 p 为精度,s 为小数位数,s 默认值为 0,p 默认为 10

numeric(m,d) 和 decimal

用法一样,m 为精度,d 为小数位数

字符串类型

char(n) 

固定长度的非二进制字符串 n 的取值范围 1<=n<=255

varchar(n)

可变长度的字符串 n 的取值范围: 0~65535

text

允许长度 0~65535 字节,值的长度+2 个字节

mediumtext

允许长度 0~167772150 字节,值的长度+3 个字节

longtext

允许长度 0~4294967295 字节,值的长度+4 个字节

日期与时间类型

类型日期格式日期范围存储空间
yearyyyy1901~21551 个字节
timehh:mm:ss-838:59:59~838:59:593 个字节
dateyyyy-mm-dd1000-01-01~9999-12-33 个字节
datetimeyyyy-mm-dd hh:mm:ss1000-01-01 00:00:00~9999-12-3 23:59:598 个字节
timestampyyyy-mm-dd hh:mm:ss1970-01-01 00:00:01 utc ~2038-01-19 03:14:07 utc4 个字节

数据完整性

primary key主键约束,非空唯一,只有一个列用于主键
auto_increment自增,整数自动增长
not null非空约束
foreign key外键约束,参照主表可以为空
default默认值约束
unique唯一约束

创建数据库数据表操作

演示操作这里我创建了3张表

create database wowdb;
use wowdb;
create table studentinfo-- 学生表
(
	Sno char(10) not null primary key,-- 学生编号,不能为空,主键
	Sname char(10) not null,-- 学生姓名,不能为空
	Ssex char(2),-- 学生性别
	Ssp char(20),-- 学科名字
	Sdept char(20),-- 所属部门
	Sbirth datetime,-- 日期
	Sfrom varchar(30),-- 住址
	Schg char(10),-- 补充
	Spa char(8),-- 所属组织
	Snation char(8),-- 民族
	remark char(10)-- 评论
);
create table curriculum-- 课程表
(
	Cno char(10) not null primary key,-- 课程编号
	Cname char(10) not null,-- 课程名称
	Tname char(8),
	Cdept char(20),
	CCredit real
);
create table course-- 选课表表
(
	Sno char(10) not null,
	Cno char(10) not null,
	Grade real,-- 成绩,可以为空
	Remark varchar(50),-- 评价,可以为空
	foreign key(Sno) references studentinfo(Sno),
	foreign key(Cno) references curriculum(Cno)
);

增 删 改 查 操作

增添 单 列字段

alter table studentinfo add test1 varchar(20) not null default '测试';

增添 多 列字段

alter table studentinfo 
add column test2 varchar(11) not null default 0,
add column test3 int(11) default null;

增添 单 条数据

insert into studentinfo values ('010','李春刚','男','计算机应用','CS','1985-05-10 00:00:00','河源',NULL,'团员','汉',NULL,'50','20',null);
insert studentinfo(Sno,Sname) values ('001','李春刚');

增添 多 条数据

insert into studentinfo values
('002','东学婷','女','计算机应用','CS','1986-05-10 00:00:00','包头','转系','团员','蒙',NULL),
('003','张五男','男','电子商务','MA','1984-05-10 00:00:00','上海','退学','团员','汉',NULL),
('004','刘%','男','电子商务','MA','1985-05-10 00:00:00','巴盟',NULL,'团员','汉',NULL),
('005','吴惠','女','软件开发','CS','1985-05-10 00:00:00','通辽',NULL,'团员','汉',NULL),
('006','王涛','男','软件开发','CS','1984-05-10 00:00:00','赤峰',NULL,'团员','满',NULL),
('007','郭凤丽','男','应用电子','IS','1984-05-10 00:00:00','广州',NULL,'团员','蒙',NULL),
('008','贾惠','男','应用电子','IS','1983-05-10 00:00:00','深圳',NULL,'团员','汉',NULL),
('009','刘一%','男','软件开发','CS','1985-05-10 00:00:00','东莞',NULL,'团员','满',NULL);
insert into curriculum values-- 插入数据
('01','计算机应用','王晓梅','IS',4),
('02','高等数学','李一','MA',6),
('03','网页制作','张铁柱','CS',6),
('04','软件工程','付大鹏','CS',4),
('05','数据库','白一格','CS',6);

insert into course values-- 插入数据
('001','02','85',NULL),
('001','03','75',NULL),
('001','04','90',NULL),
('002','05','50',NULL),
('003','01','85',NULL),
('003','02','75',NULL),
('004','02','92',NULL),
('004','03','60',NULL),
('005','01','85',NULL),
('005','04','46',NULL),
('006','03','52',NULL),
('006','05','95',NULL),
('007','04','96',NULL),
('007','05','85',NULL),
('008','04','76',NULL),
('008','05','68',NULL);

删除单数据库

drop database wowdb;

删除多数据库

不写删除多数据库

删除单表

select @@foreign_key_checks;-- 查看外键是否有效

set foreign_key_checks = 0;-- 有外键时需要设置外键无效
drop table studentinfo;
set foreign_key_checks = 1;-- 设置外键有效

删除多表

drop table course,curriculum,studentinfo;
-- 或
drop table if exists course,curriculum,studentinfo;

删除 单 列字段

alter table studentinfo drop test1;

删除 多 列字段

alter table studentinfo
drop test2,
drop test3;

删除单表数据

delete from studentinfo;
或
select @@foreign_key_checks;-- 查看外键是否有效

set foreign_key_checks = 0;-- 有外键时需要设置外键无效
truncate table studentinfo; -- 不可回滚
set foreign_key_checks = 1;-- 设置外键有效

删除指定数据

select @@foreign_key_checks;-- 查看外键是否有效

set foreign_key_checks = 0;-- 有外键时需要设置外键无效
delete from studentinfo where Sno = '006';
set foreign_key_checks = 1;-- 设置外键有效

修改指定数据表

update studentinfo set Spa = '党员' where Sno = '007';
update course set Remark = '合格';-- 不加条件

查询数据语法

select 字段名 from 表名 where 条件内容
order by 哪些字段排序 asc|desc
limit 限定返回记录数

查询数据库名

show databases;

查询表名

use wowdb;
show tables;

查询全表数据

select * from studentinfo;

投影查询

select Sname,Ssex,Ssp from studentinfo;-- 查询姓名,性别,专业

表头英文转中文 加入别名操作

select Sname as 姓名,Ssex 性别,Ssp 专业 from studentinfo 学生表;
select Sname 姓名,Ssex 性别,Ssp 专业 from studentinfo 学生表;

多表查询时的别名

select 学生表.Sname as 姓名,Ssex 性别,Ssp 专业 from studentinfo 学生表;

单条件查询

select * from studentinfo where Ssex = '女';
select * from studentinfo where Sno > 3;

多条件查询

select * from studentinfo where Ssex = '女' and Spa = '团员';

消除重复行

select Ssp from studentinfo;-- 重复行
select distinct Ssp from studentinfo;-- distinct 消除重复

LIMIT关键字

select * from studentinfo limit 3;-- 查询前3条记录

分页查询显示

select * from studentinfo limit 2,3;-- 从第2条数据后查3个

单列排序

-- 查询学生按时间升序
select * from studentinfo order by Sbirth;-- asc默认升序可以省略
select * from studentinfo order by Sbirth desc;-- 降序

多列排序

select * from studentinfo order by Sbirth asc,Sno asc;-- 如果时间相同按编号升排序

字符串函数

concat(str1,str2...strn)将str1,str2...strn连接为一个完整的字符串
insert(str,x,y,instr)将字符串str从第x开始,y个字符串长度的子串替换为字符串instr
lower(str)将字符串str中的所有字母变成小写
upper(str)将字符串str中的所有字母变成大写
left(str,x)返回字符串最左边的x个字符
right(str,x)返回字符串最右边的x个字符
lpad(str,n,pad)使用字符串pad对字符串str最左边进行填充,直到长度为n个字符长度
rpad(str,n,pad)使用字符串pad对字符串str最右边进行填充,直到长度为n个字符长度
ltrim(str) 去掉str左边的空格
rtrim(str)去掉str右边的空格再串
repeat(str,x) 返回字符串str重复x次的结果
replace(str,a,b) 使用字符串b替换字符串str中所有出现的字符串a
strcmp(str1,str2)比较字符串str1和str2
trim(str)去掉字符串行头和行尾的空格
substring(str,x,y)返回字符串str中从x位置起y个字符串长度的字符串

字符串函数用法

select concat('he','llo');-- 连接字符串
select insert('hello',1,3,'a');-- 插入字符串,从第1个字母到第3个字母替换为a(初始字符串,数值,数值,替换的内容)
select lower('Str'); -- 转换小写
select upper('str');-- 转换大写
select left('hello',3);-- 返回最左边的3个字符
select right('hello',2);-- 返回最右边的2个字符
select lpad('hello',10,'a');-- 左边进行填充直到长度为10个字符长度
select rpad('hello',10,'a');-- 右边进行填充直到长度为10个字符长度
select ltrim('    hello');-- 去掉str左边的空格
select rtrim('hello     ');-- 去掉str右边的空格再串
select repeat('hello',3);-- 返回字符串str重复x次的结果
select replace('hello','o','b');-- o替换成b   
select strcmp('hello','iello');-- 比较 ,-1表示小于,0表示等于,1表示大于
select trim('   hello   ');-- 去掉字符串行头和行尾的空格
select substring('hello',1,3);-- 第一个开始截取3个

日期函数

now()返回系统日期和时间,格式"yyyy-MMMM-dd HH:mm:ss"
curdate()返回系统日期,格式"yyyy-MMMM-dd"
curtime()返回时间,格式"HH:mm:ss"
month(date)返回日期对应的月份(数字类型)
monthname(date)返回日期对应的月份的英文名称(字符串)
dayname(date)返回日期对应的工作日的英文名称
dayofweek(date) 返回日期对应的一周中的索引。1 表示周日,2 表示周一…….
weekday(date) 返回日期对应的工作日索引。0 表示周一,1 表示周二….6 表示周日
week(date) 计算日期是一年中的第几周。默认周日是一周的开始
weekofyear(date)计算日期是一年中的第几周。默认周一是一周的开始
dayofyear(date) 计算日期是一年中的第几天
dayofmonth(date)计算日期是一个月中的第几天
year(date) 返回日期中年份
quarter(date)  返回日期对应的一年中的季度值
minute(time) 返回时间的分钟部分
second(time) 返回时间的秒部分

日期函数

select now();
select curdate();
select curtime();
select month(now());
select week(now());
select year(now());

后面内容待更新。。。

分享到:
打赏
未经允许不得转载:

作者: 易启发, 转载或复制请以 超链接形式 并注明出处 易启发资源网
原文地址: 《新手7天学会MySQL语法教程及案例》 发布于2020-2-24
百度[百度已收录] 360[360未收录] 搜狗[搜狗已收录]

评论

切换注册

登录

忘记密码?

您也可以使用第三方帐号快捷登录

切换登录

注册

新手7天学会MySQL语法教程及案例

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏