《第二版MYSQL视频教程-韩忠康》由会员分享,可在线阅读,更多相关《第二版MYSQL视频教程-韩忠康(42页珍藏版)》请在金锄头文库上搜索。
1、SQL之操作创建表2013年9月10日22:43create table db_name.tbl_name(列名 字符型定义,列名 字符型)表属性;设置默认数据库2013年9月10日22:46Use db_name;查看表2013年9月10日22:48有哪些表Show tables like pattern;例如show tables like php_%;%是mysql的通配符。某个表的创建信息show create table tbl_name;查看表结构(描述表结构)2013年9月10日22:50Describe tbl_name; 简写是desc tbl_name;删除表2013年9月
2、10日22:51drop table tbl_name; (如果表不存在,报错)完整版:drop table if exists tbl_name; (如果表不存在,不报错)适用于database。修改表名2013年9月10日22:51Rename table old tbl_name to new tbl_name;支持同时修改多个表名,中间用,间隔。支持夸数据库重命名。Rename table exam_user to 1234.user;可以利用跨数据库重命名,为数据库重命名创建一个新的数据库,旧的数据库内的表,都rename到新的数据库内,再删除旧的数据库。修改列定义2013年9月10
3、日22:54修改表结构 alter table tbl_nameadd/drop/change/modify修改表选项Alter table tbl_name 新的表选项。例如:alter table student character set utf8;1、增加一个新的列add新列定义2、修改一个列的定义Modify列定义3、删除一个列drop列定义4、重命名一个列ChangeCrud2013年9月10日22:43Create, read, update, delete.增删改查1. 创建数据(插入数据)2. 获得数据(查询数据)3. 删除数据4. 修改数据 创建数据 2013年9月10日
4、23:06 Insert into 表名(字段列表)values(值列表) 如果需要在插入时 为所有的字段设置值,那么可以省略字段列表。 要求是值得顺序,应该与表中的字段的顺序一致。获得数据(查询数据)2013年9月10日23:09Select 字段列表 from 表名 查询条件字段列表,可以使用*代替,表示所以字段。查询条件可以省略,表示所以的记录都获得。相当于where 1;Where是条件的意思;1表示永远为真。有条件的:删除数据2013年9月10日23:12Delete from 表名 条件。删除需要在逻辑上严格给条件否则容易造成数据误操作。导致损失。语法上可以没有where。如果需要
5、删除所有数据,可以使用where 1。修改数据2013年9月10日23:13Update 表名 set 字段=新值 条件校对规则2013年9月10日23:06每一套,编码字符集都有与之相关的校对规则。什么事校对规则,在当前编码下,字符之间的比较顺序是什么。查看变量设置Show variables常见校对规则:_ci,不区分大小写;_cs,区分大小写;_bin编码比较。每个字符集都支持不定数量的校对规则可以通过如下指令查看Show collation;可以用like。可以看到:字符集_地区名_比较规则(ci,cs,bin)不区分,区分,字节比较。在设置字符集的时可以设置当前字符集所采用的校对规则
6、。如果不设置校对规则,那么每一个字符集,、都有一个默认的校对规则。以GBK为例,比较chinese_ci和bin之间的区别。Order by关键字,可以在获得数据时,将数据按照某个字段的排序。create table tbl3(name varchar(10) character set gbk collage gbk_chinese_ci;create table tbl4(name varchar(10) character set gbk collage gbk_bin;insert into tbl3 values (a);insert into tbl3 values (B);ins
7、ert into tbl3 values (c);insert into tbl4 values (a);insert into tbl4 values (B);insert into tbl4 values (c);整形2013年9月10日23:22可以用unsigned控制是否有符号,不写就认为有符号。定义显示宽度通过规定数据的先是宽度,达到统一显示的目的。类型(M) M表示显示的最小宽度是多少。需要使用前导零填充达到目的。称之为zerofill。也存在布尔bool类型,但是就是tinyint(1)的别名。小数2013年9月10日23:26单精度 float 有效数字6位左右双精度 dou
8、ble有效数字16位左右支持,控制数值的范围。Type(M,D)M表示所有的数值位数(不包括小数点,和符号)D表示允许的小数位数。定点数Decimal(M,D)M总位数D小数位数。(范围存在)M默认为10,D默认为0.小数也支持zerofill,和unsigned。日期时间2013年9月10日23:271、年月日时分秒Datetime范围:1000-01-01 00:00:00到9999-12-31 23:59:592、时间戳Timestamp存储时是整形,但是表示时是日期时间检索时+0可以检索时间戳。支持任意分隔符的日期支持0值,表示当前是没有规定:2013-04-0表示4月整个月。(逻辑想
9、法)3、time类型一天中的时间表示时间间隔,在表示时间间隔时,可以使用天表示。格式:D HH:MN:SSD天4、year类型此时日期的范围,就不是1000-9999了,而是1901-2155,一个字节表示。字符串类型2013年9月10日23:291、Char(M)M表示允许的字符串长度。在char中表示严格限定的长度。2、Varchar(M)M表示允许的字符串长度。在varchar中表示允许的最大长度。Char(5)Varchar(5)5个字符1个字符Varchar需要一个字节保存字符串总长度。abc5个字符4个字符abcdf5个字符6个字符abcdefgM表示的是字符数,而不是字节数,但是
10、,总的长度的使用是按照字节计算的。最大长度是保存的最大字节数,M是保存的最大字符数。注意,字段的最大长度,除了类型本身的限制,记录总长度也有限制。真实的varchar的长度总长度65535Varchar特点,当类型数据超过255个字符的时候,采用2个字节表示长度65535-2=65533整条记录,需要一个额外的字节,用于保存当前字段的null值。除非所有的字段都不是null,这个字节才可以省略。一个记录,无论有多少个字段存在null,都是使用统一的一个字节来表示,而不是每个字段一个字节。3、text文本,有很多兄弟类型Tinytext longtext表示的字符串长度不一样。4、enum枚举类
11、型枚举类型用整形方式保存,节约空间。5、set集合类型最多占用八个字节,最多可以表示出64个状态。定义列属性2013年9月10日23:38是否为空:规定一个字段的值,是否可以为nullNullnot null默认 可以为null默认值属性:Default value 来声明默认值,在没有为该字段设置值时是启动的。而默认值的设置需要使用固定值。常见的是,一个字段不能为空,而且存在默认值。主键丨唯一索引主键:PK,primary key.可以惟一标识,某条记录的字段或者字段的集合,就是集合。组合主键:主键可以是 真是实体的属性,但是常用的好的解决方案,是利用一个与实体信息不相关的属性,作为唯一标识
12、。主键与业务逻辑关系不发生关系,只用来表示记录。设置主键的语法:使用Primary key 完成。两种方案:1、字段上设置主键字符在插入时不能为空,或者冲突。2、在定义完字符后,可以定义。优势:可以定义多列主键(组合主键),用来标识记录。一个主键内包含两个字段。一个主键内包含多个字段,而不是多个字段都是主键。只需要一个唯一标识即可,mysql规定只能存在一个主键。要求:常见的设计,每个表都应该存在一个可以唯一标识的主键字段,最好与实体没有联系,不是实体属性字段。自动增长:为每条数据提供给一个唯一的标识,每次插入记录时,将某个字段的值自动加1,使用auto_increment标识。需要整形,还需
13、要有索引。插入数据时,可以选择插入NULL,或者不插入;自动增长的初始值,是可以设置的,默认是1;通过表的选项:auto_increment=num;如果num的值小于已经存在主键的值,则按现在最大主键继续增长。可以手动插入该列的值,并会自动排序,但是如果是主键的话,不能重复。该列可以更新。如果删除已存在主键的记录,删除后添加的新记录:外键 foreign key2013年9月10日23:57概念:如果一个实体(student)的某个字段(student:class_id),指向(引用)另一个实体(class)的主键(class:class_id),就称student实体的class_id是外键。被指向的实体,称之为主实体(主表),也叫父实体()父表。负责指向的实体,称之为从实体(从表),也叫子实体(子表)。作用:用于约束处于关系内的实体。增加子表记录时,是否有与之对应的父表记录。在删除或者更新主表记录时,子表应该如何处理相关的记录。定义一个外键: