第十九课--数据库(3)

这篇依然是数据库啊

创建数据
表命令: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)文件。
对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会
生成一个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每次只能向表中插入一条记录。
查看当前默认储存引擎
语法:SHOW VARIABLES LIKE'storage_engine%':
修改存储引擎  
修改my.ini配置文件
语法: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.查询全部的行和列
语法: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;
代码
 
UPDATE student SET email=666
WHERE loginPwd=123
SELECT `studentName` FROM `student` WHERE `email` IS NULL;
常用函数
1.聚合函数
AVG()  返回某字段的平均值
COUNT()  返回某字段的行数
MAX()  返回某字段的最大值
MIN()  返回某字段的最小值
SUM()   返回某字段的和
2数学函数
函数名
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)*条数),条数; 
子查询
子查询是一个潜逃在SELECT 、INSERT、UPDATE、或DELETE语句或其他子查询中的查询
子查询在WHERE语句中的一般用法
语法:SELECT...FROM 表名 WHERE 字段 比较运算符 (子查询)
这篇的数据库就是这些了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值