1、大小写敏感
~~~~~~~
规定:一律用小写
lower_case_file_system
ON
大小写不敏感
OFF
大小写敏感
lower_case_table_names
。
原因:底层操作系统是否区分大小写,底层
windows
不区分大小写,
linux
区分大小写,所
默认为0,大小写敏感
2、MysqL 的注释
(1)单行注释可以用
"#"
select 1 as xx #zheshizhuhsi
(2)单行注释的第二种写法用
"-- "
注意这个风格下
"--
【空格】
"
也就是说
“--"
与注释之间是有空格的。
select 123 --
这是注释
(3)多行注释可以用
/* */
(4)内联注释
/*
! */
的,当没有接版本号时,是会执行里面的内容的。
3、库操作语句
三、创建数据表
-- 建立学生表
use tt;
create table if not exists `stu`(
`sid` int(11) UNSIGNED primary key auto_increment,
`name` varchar(20) not null,
`age` int,
`sex` enum('m','f','mid') DEFAULT 'mid',
`birth` datetime not null default Now(),
`email` VARCHAR(50),
`addr` VARCHAR(100) DEFAULT '北京',
`tel` VARCHAR(11)
)
use tt;
create table if not exists `stu`(
`sid` int(11) UNSIGNED primary key auto_increment,
`name` varchar(20) not null,
`age` int,
`sex` enum('m','f','mid') DEFAULT 'mid',
`birth` datetime not null default Now(),
`email` VARCHAR(50),
`addr` VARCHAR(100) DEFAULT '北京',
`tel` VARCHAR(11)
)
--创建课程表
create table course(
cid int(11) UNSIGNED primary key auto_increment,
cname varchar(20) not null
)
drop table course;
desc course;
--
创建成绩表
create table score(
sid int(11) UNSIGNED not null,
cid int(11) UNSIGNED not null,
cj int(11) UNSIGNED not null,
PRIMARY key(sid,cid),
FOREIGN key(sid) REFERENCES stu(sid) on delete CASCADE on UPDATE CASCADE,
FOREIGN key(cid) REFERENCES course(cid) on DELETE CASCADE on UPDATE
CASCADE
)ENGINE=INNODB DEFAULT CHARSET=utf8
删除数据表
drop table stu;
drop table course;
drop table score;
-- 4
、看数据表结构
desc stu
show tables;
四、修改表结构
--
末尾增加字段
alter table stu add beizhu varchar(250) comment '
备注
';
desc stu
alter table stu add xxx varchar(20) FirsT;
alter table stu add mr varchar(1) not null DEFAULT '
否
' AFTER birth;
alter table stu drop xxx
alter table stu CHANGE telphone tel
varchar(11);
alter table stu MODIFY mr bit(1) not null default 0;
select * from stu
五、记录增删改
insert into stu(name,age,sex,birth,email,addr,tel,beizhu)values(' 张 三 1',25,'m','1996-1-1','zhangsan@abc.com','上海','13900002222','
学渗透
');
insert into stu(name,age,sex,birth,email,addr,tel,beizhu)values(' 李 四 ',27,'m','1994-1-1','lisi@def.com','武汉
','1393342222','
学渗透
');
insert into stu values(4,'
李四
2',22,'f','1999-1-1',1,'lisi@def.com','
杭州
','1393342422','
学开发
');
insert into stu values(5,'
李四
3',23,'f','1998-1-1',1,'lisi@def.com','
北京
','1393342422','
学开发
');
--
添加 课程表
select * from course;
insert into course(cname) values('C
语言
'),('
计算机原理
'),('
地理
'),('
历史
');
--
添加 成绩表
select * from score;
desc score;
insert into score values(1,1,89),(1,2,56),(2,3,66),(2,2,34),(2,5,56),(4,1,90),(4,4,67),(4,2,56);
insert into score values (8,8,90);
select * from score;
-- delete
删除指定记录
delete from stu where sid=5
-- delete
删除全部记录
delete from ss
delete from stu
truncate table ss
truncate table stu
删除表内数据
--
别名 表设别名 字段设值别名
--
表别名
select * from stu where sid=1;
select * from stu as tt where tt.sid=1;
--
字段别名
select sid as
学号
,name as
姓名
from stu;
MysqL 数据库查询实战操作
1、基本查询语句
--
查询所有姓名为张开头的学生
select * from stuinfo where name like '
张
%';
select * from stuinfo where age>25;
--
查询家住北京和上海的学生
select * from stuinfo where addr='
上海
' or addr='
北京
';
select * from stuinfo where addr in('
上海
','
北京
');
--
没有留下邮箱的人
select * from stuinfo where email is null;
update stuinfo set email=null where sid=5;
--
有留下邮箱的人
select * from stuinfo where email is not null;
--
查询张三的信息
select * from stuinfo where name='
张三
';
select * from stuinfo where sid=1;
--
查询已婚学生信息
select * from stuinfo where mr=1;
select * from stuinfo where email like '%def%';
select * from stuinfo where email like 'z%' or email like 'l%';
select * from score order by cj desc;
select * from score order by cj desc limit 0,1;
-- 聚合函数
--
总共多少学生
select count(*) as
学生总数
from stuinfo;
--
求总分
--
求平均分
--
求最高分
--
男生多少人,女生多少人
select sex as
性别
,count(*) as
个数
from stuinfo group by sex
--
男生人数
select sex as
性别
,count(*) as
个数
from stuinfo
group by sex
having sex='m';
select sex as
性别
,count(*) as
个数
from stuinfo
where sex='m';
--
每个学生的平均成绩
select sid,avg(cj) from score
group by sid;
--
求每门课程的平均成绩
select cid,avg(cj) from score
group by cid;
--
求学号为
2
的学生的平均成绩
select sid,avg(cj) from score
group by sid
having sid=2;
--
每门课程的最高分是多少分
select cid,max(cj) from score
group by cid
group by sid
--
每个人平均分,从大到小排
select sid,avg(cj) from score
group by sid
order by avg(cj) desc
2
、函数
--
时间函数
select Now();
select sysdate();
-- curtime
当前时间
select curtime(),curtime(2)
-- curdate
当前日期
select curdate(),curdate()+2;
--
时间变量
select CURRENT_TIME;
--
时间函数
--
找出出生在
1987
年的学生信息
select * from stuinfo
select * from stuinfo where year(birth)='1987';
--
找出所有的
90
后
select * from stuinfo where year(birth) BETWEEN 1990 and 1999
--
字符串函数 见表
-- length utf-8
汉字占有
3
个字节
-- right
和
left
左右截图
select right('
买买提
,
土尔松
',3)
select left('
买买提
,
土尔松
',3)
-- concat
字符串连接
select CONCAT('
买买提
',',','
土尔松
')
--
将数据库中所有姓李的改成姓王的
update stuinfo set name=concat('
王
',RIGHT(name,CHAR_LENGTH(name)-1)) where name like '
李
%';
select ORD('2');
select ORD('abc');
-- mid
函数
-- mid()
函数用于得到一个字符串的一部分。这个函数被
MysqL
支持,但不被
MS sql Server
和
Oracle
支持。在
sql Server
,
Oracle
数据库中,我们可以使用
sql SUBSTRING
函数或者
select mid('abcd',2,2)
-- sleep
函数 延时
select sleep(5);
范例:
create table utemp1(
uid int PRIMARY key auto_increment,
name varchar(20) not null
)
insert into utemp1(name)values('zs'),('ls')
select * from utemp2
create table utemp2(
tid int primary key auto_increment,
age int not null
)
alter table utemp2 add tname varchar(25)
insert into utemp2(age) values(11),(19),(20)
select * from utemp1 UNION select * from utemp2
select * from utemp1 union select 1,2
p1 union select 1,2
可以
,union
合并的是
"
结果集
",
不区分在自于哪一张表
.
2
、取自于
2
张表
,
通过
"
别名
"
让
2
个结果集的列一致。那么
,
如果取出的结果集
,
列名字不一
样
,
还能否
union.
3
、
union
满足什么条件就可以用了
?
只要结果集中的列数一致就可以
.
(如都是
2
列或者
N
列)
4
、
union
后结果集
,
可否再排序呢
?
注意
: order by
是针对合并后的结果集排的序
.
5
、如果
Union
后的结果有重复
(
即某
2
行
,
或
N
行
,
所有的列
,
值都一样
),
怎么办
?
6
、如果不想去重怎么办
?
union all
(
1
)使用
select into outfile
及
load data infile
来进行备份和
恢复
---
表数据(记录)导出
先决条件:
1
、
"secure_file_priv"
设置为空
2
、对目录具有写权限
select * from utemp1 into outfile '/var/lib/MysqL-files/utemp1data.txt';
use student;
show VARIABLES like "secure_file_priv";
select * from utemp1 into outfile '/var/lib/MysqL-files/utemp1data.txt';
- -
恢复导入
-- load data
命令
--
导入表数据
(
记录
)
--
要求两个
temp
表应该是字段类型相同
--
不支持 远程 本地可以
create database ll;
desc utemp1;
use ll;
create table temp(
id int primary key auto_increment,
`name` varchar(20) not null
)
select * from temp;
-- MysqL
(local)
load data infile '/tmp/utemp1data.txt' into table temp;
-- MysqLdump
-- dump
出表
utemp1
-- dump
出库
tt
create database tttt
Use tttt;
show tables;
表示导入成功
cd /var/lib/MysqL-files
目录中
MysqL -u root -p
create database aaaa;
use aaaa
原文地址:https://www.jb51.cc/wenti/3280164.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。