SQL(Structured Query Language,结构化查询语言)
它不区分大小写 1.DDL:(Database definition language)定义和管理数据对象 create database 库名; 如果使用了use 库名; 下面创建表的库名可以省略 create table [if not exists] [库名].表名( 字段名1 列数据类型 [索引] [属性], 字段名2 列数据类型 [索引] [属性], ... 字段名N 列数据类型 [索引] [属性] )[表类型] [default charset utf8(设置默认字符集)]; 表名称和字段名需要用户自己定义名称(但是不能用关键字的) SQL是不区分大小写的,但是表就是一个文件名, Windows不区分大小写,Linux区分大小写的, 写项目的时候一定要注意.所以自己定义的名称, 一般为小写; 2.DML:(Database Manipulation Language)用于对数据的操作 insert into 表名(字段1,字段2..字段N) values(值1,值2..值N); updata 表名 set 字段1='值1'[,字段2='值2',...,字段N='值N'] where 条件1='值1' [and 条件2='值2' and ... and 条件N='值N']; 3.DQL:(Database Query Language)数据库查询语言 select 字段名 from 表名; 如果为所有字段 字段名可以用 * 代替; 4.DCL:(Database Control Language)数据库控制语言 \s 查看状态 show databases 查询所有的库 show tables 查询所有的表; desc 表名 看表结构; show variables 配置文件中的变量 1.执行SQL语句,连接到数据库服务器 命令:mysql[如果没有配置环境变量,要在MYSQL的bin目录下的命令] mysql -h loaclhost -u root -p 123 数据值和列类型 [细分都是按占内存空间大小区分的,如果数值超过所定义的数据类型,会按此数据类型所能支持的最大值插入] 1.数值型; 整型(整数) 注:unsigned可选 表示无符号. 非常小的整型([unsigned]tinyint) [1个字节] {有符号:[-128~127] 无符号:[0~255]} 较小的整型([unsigned]smallint) [2个字节] {有符号:[-32768~32767] 无符号:[0~65535]} 中等大小的整型([unsigned]mediumint) [3个字节] {有符号:[-8388608~8388607] 无符号:[0~16777215]} 标准的整型([unsigned]int) [4个字节] {有符号:[-2147483648~2147483647] 无符号:[0~4294967295]} 大整数型 ([unsigned]bigint) [8个字节] {有符号:[-9223372036854775808~9223372036854775807] 无符号:[0~18446744073709551615]} 浮点型(小数) 注:M为总共有多少位数,D表示小数点后位数,浮点数超出数值范围会四舍五入,存在误差! 单精度[float(M,D)] [4个字节] 双精度[double(M,D)] [8个字节] 定点数[decimal(M,D)] [M+2个字节] (实际是以字符串形式存放) 2.字符型;[可以表示任何类型] 注:m为指定的长度 较小字符串: char(m) [为固定长度字符串] [最大255个字节] varchar(m)[为可变长度字符串(根据实际长度判断,始终为实际长度+1个字节)] [最大255个字节] [不常用,详细参考mysql官方手册]二进制字符串(包含字节字符串,而不是字符字符串,没有字符集) binary varbinary 较大文本 大文本数据[text] (文章) hediumtext longtext 二进制大数据[blob] (照片) hediumblob longblob 枚举[enum] [1或2个字节] 最多可以有65535个成员 集合[set] [1,2,3,4,8个字节] 最多可以有64个成员 枚举一次只能用一个值插入,集合一次可以用多个集合中的值,中间使用 逗号','分开; 3.日期型; 日期型[DATA] 格式[YYYY-MM-DD] 时间型[TIME] 格式[HH:MM:SS] 日期时间[DATATIME] 格式[YYYY-MM-DD HH:MM:SS] 时间邮戳[TIMESTAMP] 格式[YYYYMMDDHHMMSS] 年[YEAR] 格式[YYYY] 时间格式创建表时最好不要作用这些中的时间格式; (PHP中的时间戳 从1970-1-1 0:0:0 到目前,是一个整数) 所以最好用整型来保存时间,方便运算; 4.NULL; 数据字段属性 1.unsigned 可以让空间增加一倍,不允许有负数出现. 只能用在数值型字段. 2.zerofill 不足位置补前导0,只有用在数值型字段 3.auto_increment 自动增长,只能是整数,数据每增加一条,就会自动增加1,字段的值不允许重复的, 就算字段已经被删除. 4. NULL和 NOT NULL 5.default 缺省值(默认值) 创建索引 1.主键索引(primary key) 主要作用是确定数据库表里一条特定数据(唯一数据)记录的位置, 最好为每一张数据表定义一个主键,一个表只能有一个主键, 主键的值不能为空; 2.唯一索引(unique) 和主键索引一样,都可以防止创建重复的值,每个数据表中可以有多个唯一索引, 一般创建唯一索引不是为了提高查询速度,而只是为了让它不重复; 3.常规索引 可以提升数据库的属性,在数据库的优化的时候,优先考虑; 可以单独使用(和表一样是独立的数据对象),也可以在创建表的时候直接创建. index 关键字和 key 关键字是同义词. 语法: (1).单独给已经创建的表创建常规索引: create index 索引名 on 表名(字段名1[,字段名2,...,字段名N]); (2).在创建表时创建索引 create table 表名( id int not null, uid int not null, sid int not null, number int not null, primarty key(id), key 索引名1(uid), index 索引名2(sid) )default charset utf8; 4.全文索引 fulltext类型索引,MyISAM表类型使用,只有在varchar char text 文本字符串上使用 也可以多个数据列使用 例子: create table books( id int, bookname varchar(30), price double, detail text not null, fulltext(detail,bookname), index ind(price), primary key(id) )default charset utf8; 使用: 之前方法,效率很低:select * from books where bookname where like %php%; 使用全局索引,高效率:select bookname,price from books where MATCH(detail) AGAINST('php'); select match(detail) against('php) from books;