《MySQL网络数据库.ppt》由会员分享,可在线阅读,更多相关《MySQL网络数据库.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库、表和数据类型,主要内容命名规则数据库的创建、使用和删除表的创建、修改和删除数据类型,命名规则,数据库名、表名、列名的命名规则字母、数字、“_”和“$”组成,但不能只含数字任何字符开头均可,包括数字、“_”和“$”最多64个字符,别名最多256个字符大小写字母的敏感性SQL关键字和函数名:在任何操作系统中不区分大小写数据库与表名:windows中不区分,UNIX中区分大小写列与索引名:在任何操作系统中不区分大小写别名:在任何操作系统中都区分大小写注意:如果引用的表不在当前数据库里或列不在当前的表里,可用: db_name.tb_name 如:bc_db.product tb_name.c
2、olname 如:product.p_no db_name.tb_name.colname 如:bc_db.product.p_no,数据库的创建、使用和删除(1),建立一个新数据库create database 数据库名;创建一个数据库实际是在MySQL数据目录下创建一个目录,等价于“mkdir 数据库名”创建数据库需有创建数据库的权限当已经存在某个数据库时不能再进行创建,否则出错删除一个数据库drop database if exists 数据库名;删除一个数据库会删除数据库中所有表和数据,慎重指定当前数据库use database 数据库名;虽然可以使用db_name.tb_name方式
3、访问表,但使用use命令指定当前库,减少多次输入库名的麻烦,数据库的创建、使用和删除(2),示例Mysqlcreate database bc_db; 创建数据库Mysqlselect database(); 返回当前使用库的名称Mysqluse bc_db; 击活数据库Mysqlselect database();Mysql create database bc_db; 不能再创建,报错Shellmysql u wen p bc_db 允许登录数据库服务器时直接打开数据库注:创建数据库后,该库并不是当前数据库,表的创建、修改和删除(1),数据库,表1,表n, ,一个数据库中可以包含一个或多个
4、表,每个表中有若干个列,每列存放的数据类型相同,一个表中可以有若干条记录,表的创建、修改和删除(2),创建表(CREATE)格式create TEMPORARY table IF NOT EXISTS 表名 列属性定义 表特性参数 SELECT语句描述;其中:TEMPORARY:创建临时表 IF NOT EXISTS:避免重复建表,表的创建、修改和删除(3),列属性定义格式: 列名 列类型 关键字其中:列名命名规则如前所述列类型可以是数值、字符、日期、枚举等,详见下节关键字为,表的创建、修改和删除(4),不同数据类型的默认值,表的创建、修改和删除(5),表特性参数SELECT语句描述部分 利用
5、SELECT子句在建表时插入数据(可用于复制表结构或整表),表的创建、修改和删除(6),实例create table product ( p_no char(10) not null primary key, p_name char(50) not null, unit char(10) not null, price decimal(10,2) not null, place char(100) null);,create table customer ( c_no char(15) not null primary key, name char(10) not null, phone ch
6、ar(30) null, address char(100) null, count_no char(30) not null, email char(50) null);,create table sales ( s_no int(4) not null auto_increment primary key, sale_time datetime not null, c_no char(15) not null, p_no char(10) not null, num int(4) not null, money decimal(10,2) not null);,表的创建、修改和删除(7),
7、实例(续) create table copy_product1 select * from product; 全部复制 create table copy_product2 select p_no,p_name,place from product where price100; 复制部分字段、部分记录 create table copy_product3 select * from product where 1=0; 只生成结构,不要记录内容 create temporary table copy_product4 select * from product; 建临时表 show tab
8、les; 列出当前库中所有表 show databases; 列出所有数据库 describe product;列出指定表中所有字段内容,表的创建、修改和删除(8),修改表ALTER TABLE 表名 RENAME AS 表改名 CHANGE/MODIFY 更改列类型 ALTER 修改当前列缺省值 ADD 增加一列 DROP 删除一列 ADD/DROP INDEX 索引的增加和删除 TYPE=表类型; 改变表类型注意:用户对表要有select、insert、delete、update、create、drop的权限,表的创建、修改和删除(9),实例 alter table product ren
9、ame as product_1; 更改表名 alter table product change place place_1 char(200); 更改列名称和定义 alter table product modify place_1 char(150) default “ ” not null; 更改列定义 alter table product alter place set default “beijing”; 修改当前列缺省值 alter table product add col_1 int unsigned not null; 增加一列 alter table product a
10、dd col_1 int unsigned not null first; alter table product add col_1 int unsigned not null after p_name; alter table product drop col_1;删除指定列,删除表 DROP TABLE IF EXISTS 表名,表名注:可以同时删除几个表若不能肯定表是否存在,使用IF EXISTS选项实例 drop table copy_product1,copy_product2; drop table if exists copy_product1;,表的创建、修改和删除(10),
11、数据类型(1),MySQL数据类型及变量字符串类型用或“”括起的字符序列,识别转义字符(如n、t、b、”、%等例: Mysqlselect “string”, “string”, “strings”; Mysql select “This is n a test xb of n string”;数值类型整数,包括十进制和十六进制数(0x作前缀,不能是0X)浮点数,可以用小数或科学计数法表示,形如-3.14e+2(e或E均可,指数为整数)例: Mysqlselect 2.5, 3.14e+2, -0x1a;用户变量采用变量名:=表达式或set 变量名=表达式句法。变量是对某一线程而言,用于每一客
12、户端特定连接,线程退出,变量释放。用户变量名区分大小写例: Mysqlset myvar=7.1+6.3,myvar2=“test”; Mysql select myvar, myvar2; Mysql select v1:=1+v2:=2, v2, v3;,数据类型(2),MySQL列类型数值数据类型整数,如12、-45,用于存放年龄、人数、库存量等。浮点数,如1.2e+3、3.14,用于货物单价、成绩等。,注:前5种可设置unsigned,区分有符号和无符号数,而float和double提供最大(M,D)、最小非零值, INTEGER= INT 、 REAL= DOUBLE 、 NUMER
13、IC= DECIMAL,数据类型(3),例: mysqlcreate table t_mdtest ( -c_tinyint tinyint, c_tinyint_u tinyint unsigned, -c_smallint smallint, c_smallint_u smallint unsigned, -c_mediumint mediumint, c_mediumint_u mediumint unsigned, -c_int int, c_int_u int unsigned, -c_bigint bigint, c_bigint_u bigint unsigned, -c_flo
14、at float(8,2), c_float_u float(8,2) unsigned, -c_decimal decimal(5,1); mysqldescribe t_mdtest;,数据类型(4),数值的精度M和小数位数DM指定最大的显示尺寸,D指定小数位数超出取值范围的值自动按边界值截取float和double类型数据采用四舍五入法则截取decimal作为字符串存储而不是浮点数存储,如-3.14,存储的是-、3、.、1、4五个字符,有效取值范围由M、D决定,总位数为M+2。若改变M固定D,则取值范围随M的变大而变大,若固定M而改变D,则取值范围随D的变大而变小,数据类型(5),数值数
15、据类型列的属性ZEROFILL 用于数值类型,显示值加前导零,以适应显示宽度要求,超过宽度的按实际宽度显示Mysqlcreate table t_zerofill(c_zerofill int(5) zerofill);Mysqlinsert into t_zerofill values(1),(100),(10000),(1000000);Mysqlselect * from t_zerofill;AUTO_INCREMENT 用于整数数据类型的列 ,一般从1开始,每行增加1,对于使用“auto_increment”属性的列,应定义为“not null”,并定义为“primary key”或
16、“unique”键Mysqlcreate table t_autoincrement( -c_auto int auto_increment not null unique);UNSIGNED 适合于整数数据类型的列,进行“非负”限制,扩大取值范围,数据类型(6),序列数插入“null”或“0”值到AUTO_INCREMENT属性列中,自动生成下一个序列号(+1)插入一个记录明确指定AUTO_INCREMENT列值时,若已存在该值,报错(不能重复);若不存在,被插入,以后自动增加从该值继续+1创建表时可以指定初始序列编号Mysqlcreate table t_autoincrement( -c
17、_auto int auto_increment not null primary key) -auto_increment=1000;函数last_insert_id()得到最近产生的序列号,无AUTO_INCREMENT列时,函数返回0,数据类型(7),字符数据类型,数据类型(8),字符串类型是一种“通用”数据类型,可以用来表示任意的值。如存储声音、图像等二进制数据;可以进行模式匹配,并指定是否区分大小写CHAR与VARCHARCHAR是定长数据类型,每个值都占用M字节;VARCHAR是变长数据类型,每个值用最小字节数存储,再用1字节存长度CHAR处理效率高一般在一个表中不同时使用CHAR
18、和VARCHAR两种类型,自动转换。只有CHAR长度3时可共存。Mysqlcreate table t_long(c_char char(2),c_varchar varchar(3);Mysqldescribe t_long;可以指定default值,还可指定BINARY属性(比较时区分大小写)BLOB与TEXTBLOB和TEXT系列存储二进制对象,如文字、声音、影像、混合数据BLOB区分大小写, TEXT不区分大小写一般不用于索引,而用类似记载摘要的列索引,如需要必须指定约束尺寸不能指定default值,数据类型(9),ENUM与SETENUM用于从列表中取某个值,SET可从列表中取一个或
19、多个值列中数据不区分大小写ENUM定义值的顺序就是存储的顺序(1开始),排序按编号进行,与字符内容无关。NULL无顺序编号,0为空串编号。Mysqlcreate table t_enum (c_enum ENUM(“AA”,”BB”,”CC”);Mysqlinsert into t_enum values(“AA”),(“BB”),(“CC”),(”),(NULL);Mysqlselect c_enum,c_enum+0, c_enum+1, c_enum*3 from t_enum;Mysqlselect c_enum from t_enum where c_enum=“CC”;Mysqls
20、elect c_enum from t_enum where c_enum=3;SET定义值的顺序决定存储的顺序,但不是顺序编号的, 每个成员对应一个二进制位,第一个对应0位,第二个 对应1位,数据类型(10),Mysqlcreate table t_set(c_set SET(“AA”,”BB”,”CC”,”DD”);Mysqlinsert into t_set values(“AA”),(“BB”),(“CC”),(”DD”),(“”),(NULL);Mysqlinsert into t_set values(“AA,CC”);Mysqlselect c_set,c_set+0,bin(c
21、_set+0) from t_set;,数据类型(11),日期和时间数据类型,注意:允许不严格日期值,如2001-6-31,2002-00-00日期类型必须年-月-日顺序,DATA_FORMAT()函数可以以任意形式显示日期值字符串表示日期时分隔符任意,如“01-06-03”,“01/06/03”,“01.06.03”等价,数据类型(12),DATE、TIME、DATETIME数据类型DATE以“YYYY-MM-DD”格式表示日期TIME以“HH:MM:SS”格式表示时间,可以用于表示某具体时刻,也可表示时间间隔(见取值范围)DATETIME以“YYYY-MM-DD HH:MM:SS”格式表示
22、日期和时间,若将DATE类型数据赋给DATETIME列,自动追加00-00-00时间部分TIMESTAMP数据类型以“YYYYMMDDHHMMSS”格式存储,当取值为NULL时,自动设置为当前的日期和时间(邮戳)可以指定显示列宽为2、4、6、8、10、12或14(若1-13奇数值,增1处理),与实际存储值无关,数据类型(13),YEAR数据类型以“YYYY”格式表示年份,也可指定显示宽度为2或4两位数字年份转换为4位数字年份时,“0069”转换为“20002069”,“7099”转换为“10701999”日期和时间数据类型的输入格式,数据类型(14),选择数据类型要存储数值的数据类型先定大类,是数值、字符串或日期,有时按需要选择,如是否数值计算,是否排序,日期是否精确到日等等取值范围的限制确定该类中使用长、中或短类型数据,是否采用无符号数字段的主要用途是否区分大小写(二进制),是否对其索引系统性能和效率上的要求数值运算一般比字符串快,短字符串比长字符串运行快且磁盘消耗小,定长类型比可变类型性能更好,