这篇依然是数据库啊
创建数据
表命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
例如,建立一个名为MyClass的表。
表命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
例如,建立一个名为MyClass的表。
mysql> createtable MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
获取表结构
mysql> desc MyClass;
mysql> show columns from MyClass;
使用MySQL数据库desc表名时,我们看到Key那一 栏,可能会有4种值,即' ','PRI','UNI','MUL'。
1. 如果Key是空的, 那么该列值的可以重复 ,表示该列没有索引, 或者是一个非唯一的复合索引 的非前
导列;
2. 如果Key是PRI, 那么该列是主键的组成部分;
3. 如果Key是UNI, 那么该 列是一个 唯一值 索引 的第一列(前导列),并别不能 含有空值(NULL);
4. 如果Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL。
如果对于一个列的定义,同时满足上述4种情况 的多种 ,比如一个列既是PRI,又是UNI,那么"desc 表名"的时候,显示的Key值按照优先级来显示PRI->UNI->MUL。那么此时,显示PRI。
一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键。
一个唯一性索引列可以显示为MUL, 如果 多列构 成了一个唯一性复合索引,因为 虽然索引的多列组合是唯一的, 比如ID+NAME是唯一的,但是没一个单独 的列依然可以有重复的值,只要ID+NAME是唯一的即可。
删除数据表
命令:drop table <表名>
例如:删除表名为MyClass 的表
mysql> drop table MyClass;
DROP TABLE用于取消一个或多个表。你必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用此语句要小心!
注意:对于一个带分区的表,DROP TABLE会永久性地取消 表定义,取消 各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消的表有关联的区定义(.par)文件。
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));
获取表结构
mysql> desc MyClass;
mysql> show columns from MyClass;
使用MySQL数据库desc表名时,我们看到Key那一 栏,可能会有4种值,即' ','PRI','UNI','MUL'。
1. 如果Key是空的, 那么该列值的可以重复 ,表示该列没有索引, 或者是一个非唯一的复合索引 的非前
导列;
2. 如果Key是PRI, 那么该列是主键的组成部分;
3. 如果Key是UNI, 那么该 列是一个 唯一值 索引 的第一列(前导列),并别不能 含有空值(NULL);
4. 如果Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL。
如果对于一个列的定义,同时满足上述4种情况 的多种 ,比如一个列既是PRI,又是UNI,那么"desc 表名"的时候,显示的Key值按照优先级来显示PRI->UNI->MUL。那么此时,显示PRI。
一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键。
一个唯一性索引列可以显示为MUL, 如果 多列构 成了一个唯一性复合索引,因为 虽然索引的多列组合是唯一的, 比如ID+NAME是唯一的,但是没一个单独 的列依然可以有重复的值,只要ID+NAME是唯一的即可。
删除数据表
命令:drop table <表名>
例如:删除表名为MyClass 的表
mysql> drop table MyClass;
DROP TABLE用于取消一个或多个表。你必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用此语句要小心!
注意:对于一个带分区的表,DROP TABLE会永久性地取消 表定义,取消 各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消的表有关联的区定义(.par)文件。
对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会
生成一个NOTE。
RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。
生成一个NOTE。
RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。
表插入数据
命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
例如: 往表MyClass中插入二条记录, 这二条记 录表示:编号为1的名为To的成绩为96.45, 编号为
2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5。
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
注意:insert into每次只能向表中插入一条记录。
命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
例如: 往表MyClass中插入二条记录, 这二条记 录表示:编号为1的名为To的成绩为96.45, 编号为
2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5。
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
注意:insert into每次只能向表中插入一条记录。
查看当前默认储存引擎
语法:SHOW VARIABLES LIKE'storage_engine%':
语法:SHOW VARIABLES LIKE'storage_engine%':
修改存储引擎
修改my.ini配置文件
语法:default-storage-engine=InnoDB(改为其他存储存储)
设置表的存储引擎
语法:CREATE TABLE 表名(#省略代码)ENGINE=存储引擎;
语法:default-storage-engine=InnoDB(改为其他存储存储)
设置表的存储引擎
语法:CREATE TABLE 表名(#省略代码)ENGINE=存储引擎;
CREATE TABLE test_mysam(
tit INT
)ENGINE=MYISAM;
默认为InnoDB存储引擎 两个引擎的不同 会使表中存储数据时的格式不同
数据表的存储位置
<1>MyISAM类型表文件
*.frm:表结构定义文件
*.MYD:数据文件
*.MYI:索引文件
<2>InnoDB类型表文件
*.frm:表结构定义文件
ibdata1文件
数据表的存储位置
<1>MyISAM类型表文件
*.frm:表结构定义文件
*.MYD:数据文件
*.MYI:索引文件
<2>InnoDB类型表文件
*.frm:表结构定义文件
ibdata1文件
查询
查询产生一个虚拟表
看到的是表形式显示的结果,但结果并不真正存储
每次执行查询只是从数据表中提取数据,并按照表的形式显示出来
1.查询全部的行和列
语法:SELECT * FROM student
2.查询部分列
语法:SELECT `studentNo`,`studentName`,`address`
FROM `student`
WHERE `address='天津市河西区'`
3.使用AS命名列
SELECT `studentNo` AS' 学生编号',`studentName` AS '学生姓名',
`address `AS 学生地址
FROM `student`
WHERE `address` ='天津市河西区';
代码:
看到的是表形式显示的结果,但结果并不真正存储
每次执行查询只是从数据表中提取数据,并按照表的形式显示出来
1.查询全部的行和列
语法:SELECT * FROM student
2.查询部分列
语法:SELECT `studentNo`,`studentName`,`address`
FROM `student`
WHERE `address='天津市河西区'`
3.使用AS命名列
SELECT `studentNo` AS' 学生编号',`studentName` AS '学生姓名',
`address `AS 学生地址
FROM `student`
WHERE `address` ='天津市河西区';
代码:
SELECT studentNo AS '学号',studentName AS '姓名',phone AS '手机',address AS '地址',bornDate AS '出生日期'
FROM `student`
WHERE gradeID=1#条件为班级编号1的学生
执行命令得
执行命令得
4.查询空行
语法:SELECT `studentName` FROM `student` WHERE `email` IS NULL;
代码
语法:SELECT `studentName` FROM `student` WHERE `email` IS NULL;
代码
UPDATE student SET email=666
WHERE loginPwd=123
SELECT `studentName` FROM `student` WHERE `email` IS NULL;
常用函数
1.聚合函数
AVG() 返回某字段的平均值
COUNT() 返回某字段的行数
1.聚合函数
AVG() 返回某字段的平均值
COUNT() 返回某字段的行数
MAX() 返回某字段的最大值
MIN() 返回某字段的最小值
SUM() 返回某字段的和
2数学函数
SUM() 返回某字段的和
2数学函数
函数名
CEIL(x) 返回大于或等于数值x的最小整数
FLOOR(x) 返回小于或等于数值x的最大整数
RAND() 返回0-1的随机数
CEIL(x) 返回大于或等于数值x的最小整数
FLOOR(x) 返回小于或等于数值x的最大整数
RAND() 返回0-1的随机数
SELECT CEIL(2.3) 返回大于或等于数值为2.3的最小整数
SELECT FLOOR(2.3) 返回小于或等于数值为2.3的最大整数
SELECT RAND() 返回0-1之间的随机数
ORDER BY子句
ORDER BY 子句实现按一定顺序显示查询结果(ASC:升序 DESC:降序)
LIMIT子句
MySQL查询语句中使用LIMIT子句限制结果集 (做分页)
语法:SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY <排序的列名>[ASC 或 DESC]]
[LIMIT [位置偏移量,]行数]; / LIMIT ((页数-1)*条数),条数;
MySQL查询语句中使用LIMIT子句限制结果集 (做分页)
语法:SELECT <字段名列表>
FROM <表名或视图>
[WHERE <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY <排序的列名>[ASC 或 DESC]]
[LIMIT [位置偏移量,]行数]; / LIMIT ((页数-1)*条数),条数;
子查询
子查询是一个潜逃在SELECT 、INSERT、UPDATE、或DELETE语句或其他子查询中的查询
子查询在WHERE语句中的一般用法
语法:SELECT...FROM 表名 WHERE 字段 比较运算符 (子查询)
子查询是一个潜逃在SELECT 、INSERT、UPDATE、或DELETE语句或其他子查询中的查询
子查询在WHERE语句中的一般用法
语法:SELECT...FROM 表名 WHERE 字段 比较运算符 (子查询)
这篇的数据库就是这些了