MySQL基础,基本SQL,SELECT查询详解定义
MySQL是⼀个⼩型开源的关系型数据库管理系统(RDBMS),使⽤SQL(结构化查询语⾔)语⾔进⾏数据库管理。
优点
1.开源
MySQL是开放源代码的数据库,任何⼈都可以获得源代码,修正缺陷。任何⼈能以任何⽬的来使⽤MySQL数据库
2.跨平台
MySQL能够实现跨平台操作,⽀持市⾯上各种主流系统,如Windows,UNIX,Linux,MacOS等操作系统。
3.开发成本低
任何⼈都能在MySQL的官⽹下载该软件,有些社区版本是可以免费试⽤的。即使有些付费功能,价格也相对于Oracle,DB2和SQL server这些商业软件,MySQL具有绝对的价格优势。
4.功能强⼤,使⽤⽅便
MySQL是⼀个真正的多⽤户、多线程的SQL数据库服务器。
使⽤SQL语⾔管理数据库
1. 数据库管理语句:
注:因为MySQL不严格区分⼤⼩写所以我就⽤驼峰命名法来记
1.Show DataBases(查看数据库列表)
2.Create Datebase aa (创建数据库aa)
3.Drop Database aa (删除数据库aa)
4.Show Engines (查看当前版本数据库⽀持的引擎类型)复制代码
2.数据表的基本操作:
创表,主键、外键、唯⼀、不能为空等约束,例如部门表和员⼯表:
CREATE TABLE dept
(
id INT(11) PRIMARY KEY, //创建主键约束
name VARCHAR(22) UNIQUE //创建唯⼀约束
mysql语句分类)
CREATE TABLE employee
(
id INT(11) PRIMARY KEY AUTO_INCREMENT, //设置⾃动递增
name VARCHAR(25) Not Null, //创建⾮空约束
deptId INT(11),
sex char DEFAULT '男', //指定默认值为男
CONSTRAINT employee FOREIGN KEY(deptId) REFERENCES dept(id) //创建外键约束
)
DESCRIBE employee //查看表的基本结构
DESC employee //同上
SHOW CREATE TABLE employee //查看表的详细信息复制代码
3.修改数据表:
以上表为例
ALTER TABLE dept RENAME deptment //修改dept表名为deptment
ALTER TABLE employee MODIFY sex VARCHAR(30) //修改employee表的sex字段类型为VARCHAR
ALTER TABLE employee ADD salary FLOAT NOT NULL //给employee表新增字段salary 类型float不能为空复制代码
ALTER TABLE employee ADD salary FLOAT FIRST //在employee表的第⼀列新增字段
ALTER TABLE employee ADD salary FLOAT AFTER name //在employee表的neme字段后⾯新增字段
ALTER TABLE employee DROP salary // 在employee表中删除字段
ALTER TABLE employee DROP FOREIGN KEY employee //删除employee表的外键约束复制代码
4.删除数据表:
DROP TABLE deptment,employee //同时删除没有被关联的两张表deptment、employee
酷信源码有什么好的地方注:想删除有被关联外键的主表必须先解除外键关联然后才能删除
原因是如果直接删除了主表会破坏数据的完整性复制代码
MySQL的数据类型和运算符
1.整形
数据类型存储要求有效取值范围⽆符号取值范围
TINYIN 1字节 -128 - 127 0 - 255
SMALLINT 2字节 -32768 - 32767 0 - 65535
MEDIUMINT 3字节 -8388608 - 8388607 0 - 16777215
INT(INTEGER) 4字节 -2147483648 - 2147483647 0 - 4294967295
BIGINT 8字节 -9223372036854775808 - 9223372036854775807 0 - 18446744073709551615复制代码
2.浮点型
类型名称说明存储需求
FLOAT 单精度浮点数 4个字节
DOUBLE 爽精度浮点数 8个字节
DECIMAL(M,D),DEC 压缩的“严格”定点数 M+2个字节复制代码
3.⽇起时间类型
类型名称⽇期格式⽇期范围存储需求
YEAR YYYY 1901-2155 1字节
TIME HH:MM:SS -838:59:59 - 838:59:59 3字节
DATE YYYY-MM-DD 1000-01-01 - 9999-12-31 3字节
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 - 8字节
9999-12-31 23:59:59
TIMESTAMB YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 - 4字节
2038-01-19 03:14:07 复制代码
4.字符串类型
类型名称说明存储需求
CHAR(M) 固定长度⾮⼆进制字符串 M字节,1<=M<=255
VARCHAR(M) 变长⾮⼆进制字符串 L+1字节再次L<=M且1<=M<=255 复制代码常见运算符
1.算数运算符
运算符作⽤
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算,返回商
% 求余运算,返回余数复制代码
2.⽐较运算符
运算符作⽤
= 等于
<=> 安全等于(可以⽐较NULL)
发现读秀百链续数据库是什么<>(!=) 不等于
<= ⼩于等于
>= ⼤于等于
< ⼩于
> ⼤于
IS NULL 判断是否为NULL
IS NOT NULL 判断是否不为NULL
LEAST 当有多个参数时,返回最⼩值
GREATEST 当有多个参数时,返回最⼤值
BWTWEEN AND 判断⼀个值是否在两个值之间
ISNULL 判断是否为NULL
IN 判断⼀个值是IN列表中的任意⼀值
NOT IN 判断⼀个值不是IN列表中任意⼀个值
LIKE 通配符匹配
REGEXP 正则表达式匹配复制代码
3.逻辑运算符
运算符作⽤
NOT 或者 ! 逻辑⾮
AND 或者 && 逻辑与
OR 或者|| 逻辑或
XOR 逻辑亦或复制代码
4.聚合函数
主要⽤于某列值的和,平均值,记录数等就需要⽤到聚合函数
函数说明
AVG() 返回平均值
COUNT() 返回记录的⾏数
用数字组词语COUNG() 返回⼀列中值的个数
MAX() 返回某列的最⼤值
MIN() 返回某列的最⼩值
SUM() 返回某列的和复制代码
SELECT(查询)语句详解
SELECT 属性列表 FROM 表名 [WHERE 条件表达式] [GROUP BY 属性名 [HAVING 条件表达式]] ORDER BY属性名 [ASC|DESC]
现有表
(1)学⽣表:(学号,姓名,性别,年龄,系),student(sno,sname,ssex,sage,sdept)
(2)课程表:(课程号,课程名,先⾏基础课名),course(cno,cname,cpno)
(3)学⽣选课表:(学号,课程号,成绩),sc(sno,cno,grade)
sno sname ssex sage sdept
1 刘敏⼥ 19 计算机
2 周松男 21 计算机
parse的用法3 张明男 20 经贸
4 孟欣⼥ 21 信管
cno cname cpno
1 数据库 4
2 操作系统 3
3 信息系统 null
4 数据结构 2
sno cno grade
1 1 89php正则验证字符串全是数字
1 2 97
1 3 67
2 1 78
2 2 90
1.单表查询
select cno, cname from course //查询表中部分字段
select * from sutdent //查询表所有记录(如果表字段多,查*会导致查询的数据量过⼤会⼤⼤降低传输效率,除⾮需要查询所有字段,尽量不要⽤*)select sno, sname, year(now())-sage //查询经过计算的值(学⽣出⽣年),year(now())为函数嵌套
select distinct sdept from student //查询并去重复关键字distinct
select * from student where ssxe = '⼥' //带条件的where字句查询
select * from student where sage between 20 and 25; //查询两个值之间的数⽤ between 0 and 9
select * from student where sage in (18,20,23) //查询数据集合中包含的值⽤in,反之则⽤ not in
select * from student where sname like '张%' //查询姓"张"的学⽣('张%'的意思是以张开头)
select * from student where sname like '_敏%' //查询第⼆个字段为‘敏’的学⽣信⼼(_表⽰有⼀个占位符的通配符)
select * from course where cpno is null // 查询先⾏课为null的课程,反之则⽤ not null
select * from sc where cno =1 and grade >= 80 //多条件查询时and作和or作为条件连接和逻辑运算符来使⽤
select * from sthdent where sdept='计算机' or sdept = '经贸系' //同上
select * from student order by sage desc //order by排序字句 desc 降序
select * from student order by sage desc ,sno desc //先按年龄排序,如果相同则按学号排序
复制代码
2.聚合函数
select count(*) from student where sdept = '计算机' //查询计算机系的学⽣⼈数
select count(distinct sno) //查询选修了课程的⼈数使⽤distinct 去掉了重复项
select avg(sags) from student where sdept = '计算机' //查询计算机系的平均年龄
select max(grade) from sc where cno =1 //查询选修1号课程的最⾼分
复制代码
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论