mysql
Posted test-365
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql相关的知识,希望对你有一定的参考价值。
第1章: 数据库和表;1
第2章: select语句;1
第3章: update和delete;1
第4章: 规范化;1
第5章: later;1
第6章: select进阶;1
第7章: 多张表数据库设计;1
第8章: 链接与多张表的操作;1
第9章: 子查询;1
第10章: 外链接、自连接与联合;1
第11章: 约束、视图与事务;1
第12章: 安全性1
1 数据库和表
保存东西的地方;
什么是数据库?
数据库是保存表和其他相关的SQL结构的容器;
表 : 数据库内的信息组成了表;
表在数据库中包含数据的结构,有行和列组成;
行 包含了表中某个对象的所有信息;
列 是存储在表中的一块数据,行是能够描述某个事物的集合。行和列构成了表;
字段夜场用来代称列,记录通常代表行;
mysql 数据类型
在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
Text 类型:
数据类型 | 描述 |
---|---|
CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。 |
TINYTEXT | 存放最大长度为 255 个字符的字符串。 |
TEXT | 存放最大长度为 65,535 个字符的字符串。 |
BLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 65,535 字节的数据。 |
MEDIUMTEXT | 存放最大长度为 16,777,215 个字符的字符串。 |
MEDIUMBLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 16,777,215 字节的数据。 |
LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串。 |
LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。 |
ENUM(x,y,z,etc.) | 允许您输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。
注释:这些值是按照您输入的顺序排序的。 可以按照此格式输入可能的值: ENUM(‘X‘,‘Y‘,‘Z‘) |
SET | 与 ENUM 类似,不同的是,SET 最多只能包含 64 个列表项且 SET 可存储一个以上的选择。 |
Number 类型:
数据类型 | 描述 |
---|---|
TINYINT(size) | -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。 |
SMALLINT(size) | -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。 |
MEDIUMINT(size) | -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。 |
INT(size) | -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。 |
BIGINT(size) | -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。 |
FLOAT(size,d) | 带有浮动小数点的小数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
*这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。
Date 类型:
数据类型 | 描述 |
---|---|
DATE() | 日期。格式:YYYY-MM-DD
注释:支持的范围是从 ‘1000-01-01‘ 到 ‘9999-12-31‘ |
DATETIME() | *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS
注释:支持的范围是从 ‘1000-01-01 00:00:00‘ 到 ‘9999-12-31 23:59:59‘ |
TIMESTAMP() | *时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00‘ UTC) 至今的秒数来存储。格式:YYYY-MM-DD HH:MM:SS
注释:支持的范围是从 ‘1970-01-01 00:00:01‘ UTC 到 ‘2038-01-09 03:14:07‘ UTC |
TIME() | 时间。格式:HH:MM:SS
注释:支持的范围是从 ‘-838:59:59‘ 到 ‘838:59:59‘ |
YEAR() | 2 位或 4 位格式的年。
注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。 |
*即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
查看创建的表 DESC 表名;
删除表 DROP TABLE 表名; drop table 会删除你表和表里的所有数据;
增加表数据 insert;
insert into 表名 (列名1,列名2,,,,,)values(值1,值2,,,,,);
三种insert 插入形式;
1改变列顺序;我们可以改变列名称的顺序,只要记得数据值的顺序也要一起调整。
举例: insert into my_contacts (interests,first_name,last_name,gender,email,birthday,profession,location,status,seeking)
values ( ‘kayaking‘,‘Jillina‘,‘Anderson‘,‘F‘,,dshfoissdfs.com‘,‘1980-09-09‘,‘’Tesdhal WRff‘’, ‘aaa’,‘sdafd’,‘sdfss’ )
注意:列明和数据值相互对应。
2省略列名;
列名列表可以省略,但数据值必须全部填入,而且必须与当初创建表时的列顺序完全相同
举例: insert into my_contacts
values ( ‘kayaking‘,‘Jillina‘,‘Anderson‘,‘F‘,,dshfoissdfs.com‘,‘1980-09-09‘,‘’Tesdhal WRff‘’, ‘aaaa’,‘dasfasd’,‘sdfa’ );
注意:列名 列表可以省略,但数据值必须全部填入,而且必须与当初创建表时的列顺序完全相同;
省略了所有列名,但这么做是一定要填入所有数据值,而且要和表中的列顺序完全相同;
3省略部分列;
可以值填入一部分列值;
insert into my_contacts (interests,first_name,last_name,gender,email,birthday)
values ( ‘kayaking‘,‘Jillina‘,‘Anderson‘,‘F‘,,dshfoissdfs.com‘,‘1980-09-09‘ );
这一次 只输入部分数据,但要明确指出数据值对应的列名;
select 语句
select * from表名; not null 非空;
create table 表名 (
last_name varchar (30) not null,
first_name varchar (30) not null
);
default 填补空白; 某些列通常有某个特定值,我们就可以吧特定的值指派为default 默认值;
跟在default 关键之后的值,会在每次新增记录时自动插入表中,只要没有另外指派其他值;默认值的类型必须和列的类型相同;
select * from 表名 where first_name =‘Anne’;
where 字句中,‘=’ 用来检查 first_name 列中的每个值,是否等于文本‘Anne’ 符合即返回整行,不符合则不返回改行。
insert 包含单引号的数据, 用反斜线处理引导 在字符串中的单引号前加上反斜线就可以实现(同事还能修复 insert语句); :
insert into表名 values (‘sdfklj‘,‘sdfsa‘,‘Drover‘s‘,‘dsfasf‘,,,,,);
另一种单引号 处理引导 转义 的方式是在它前面加一个单引号 : ‘
insert into表名 values (‘sdfklj‘,‘sdfsa‘,‘Drover‘’‘s‘,‘dsfasf‘,,,,,);
selelct 列名1,列名2,,,, from表名 where 条件;
结合查询
select location from doughnut where type =‘plain glazed‘
and rating =10;
select 列名 from表名 where main=‘soda’ and amount >1;
like select * from 表名 where location like ‘%ca’;
% 匹配所有以ca 结尾的值;
select 列名 from 表名 where first_name like ‘_im’; 例如 tim mim kim ;
_ 下划线只是一个位置字符的替身;
select drank_name from info where calories >=20 and calories <=60;
select drank_name from info where between 20 and 60;
select date_name from black_book where rating in (‘sdfsa‘,‘fdfff‘,‘were‘,‘cvxv‘);
select date_name from black_book where rating not in (‘sdfsa‘,‘were‘,‘cvxv‘);
select drink_name from drink_info where not carbs between 3 and 5;
select date_name from black_book where not date_name like ‘A%‘ and not date_name like ‘B%‘;
以上是关于mysql的主要内容,如果未能解决你的问题,请参考以下文章