




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、第一课:MySQL 安装配置2安装2卸载、删除原有MySQL版本2MySQL4.1版本安装3启动后确认与权限设置3修改密码的三种方法5增删修查用户的权限5目录、配置文件、数据文件的认识6安装以后的目录分布6数据、日志文件的认识7简要介绍备份、还原数据库8作业9二、第二课SQL语句基础一101,MySQL的数据类型:10数值形:10字符串形10日期和时间型11NULL值112,MySQL数据列类型11数值列类型(自增长列)11字符串列类型13日期时间列类型133,表相关操作14创建带有自增长列的表14创建MyISAM/innoDB/Merge/Heap 类型的表14创建临时表15创建带有主键、唯一键、外键约束的表15修改表16删除表164,作业:17三、第三课SQL基础二17索引17Select 语句18Select 语句基本语法介绍:18limit 分页中常用18函数19数学函数19字符串函数24日期函数31控制流函数38汇总函数40汇总函数条件中Having 的用法与Where 有什么区别 。44表关联的含义44子查询46子查询作为标量操作数47使用子查询进行比较48使用ALL进行子查询49行子查询50关联子查询51FROM子句中的子查询52子查询错误53四、第五课SQL基础四57数据增删改SQL57数据库事务57作业:57五、第六课SQL高级二57SQL语句的自查工具:Explain58解释EXPLAIN的用法。58id58select_type59table59type59key62key_len63ref63rows63Extra63作业讲解67MySQL SQL培训教材 提纲如下:一、 第一课:MySQL 安装配置安装 卸载、删除原有MySQL版本1, 查看自己的机器上的MySQL是否已经启动,如果已经启动,请停止它。命令: netstat antp ,看看 3306 端口是否开启。2, 检查 /etc/init.d/ 下是否有 mysqld 之类的文件,如果有,请删除。3, 检查 是否存在 /etc/f 文件,此文件是MySQL的配置文件。 4, 检查 是否存在 /usr/local/mysql/ 目录,如果有 将它改名称。MySQL4.1版本安装 1, 得到一个tarball,防止在 /usr/local/ 目录。2, 解开这个压缩包。tar xvzf mysql-max-5.0.24-linux-i686-glibc23.tar.gzrootfxs001 local# ll mysql-max-5.0.24-linux-i686-glibc23 -ddrwxr-xr-x 14 503 users 4096 Mar 6 2005 mysql-max-5.0.24-linux-i686-glibc23-rw-r-r- 1 root root 44705559 Oct 24 14:08 mysql-max-5.0.24-linux-i686-glibc23.tar.gz3, 建立mysql组、用户,设定 /usr/local/mysql 目录,初始化权限等:groupadd mysqluseradd -g mysql mysqlcd /usr/localln -s /usr/local/mysql-max-5.0.24-linux-i686-glibc23 mysqlcd mysqlscripts/mysql_install_db -user=mysqlchown -R root .chown -R mysql datachgrp -R mysql . 4, 拷贝MYSQL提供的样例配置文件 f,设置mysql 的启动脚本。cd support-files/rootfxs001 support-files# cp f /etc/frootfxs001 support-files# cp mysql.server /etc/init.d/mysqld5, 启动mysql。service mysqld startps xuwww |grep mysqlroot 30253 0.0 0.2 4380 1248 pts/0 S 14:59 0:00 /bin/sh ./bin/mysqld_safe -datadir=/usr/local/mysql/data -pid-file=/usr/local/mysql/data/.pidrootfxs001 support-files# netstat -antp |grep 3306tcp 0 0 :3306 :* LISTEN 30279/mysqld rootfxs001 support-files#已经看到 MYSQL进程启动了。启动后确认与权限设置1, 登陆mysqlrootfxs001 data# /usr/local/mysql/bin/mysql -urootWelcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 1 to server version: 4.1.10a-max-logType help; or h for help. Type c to clear the buffer. 初始化用户权限设置口令刚刚在一台Linux机器上进行了MYSQL服务的安装,在验证服务正常后,第一个要做的任务就应该是设置密码,MYSQL的密码是保存在 mysql 库中的 user 表中。/usr/local/mysql/bin/mysql urootmysql select Host,user,password From user ;+-+-+-+| Host | user | password |+-+-+-+| localhost | root | | | root | | | | | localhost | | |+-+-+-+4 rows in set (0.00 sec)此状态是刚刚安装过后的样子,没有密码,因此登陆不需要指定密码。mysql update user set password =PASSWORD(123456) ;mysql select Host,user,password From user ;+-+-+-+| Host | user | password |+-+-+-+| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost | | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+-+-+-+4 rows in set (0.00 sec)mysql flush privileges ;Query OK, 0 rows affected (0.00 sec)在 刷新之前其实还是可以用 无密码方式登陆的,刷新是更新MYSQL的缓存。mysql delete from user where user= ;Query OK, 2 rows affected (0.00 sec)删除掉这个无关的默认用户,这个用户的存在就是风险。mysql flush privileges ;Query OK, 0 rows affected (0.00 sec)mysql select Host,user,password From user ;+-+-+-+| Host | user | password |+-+-+-+| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |+-+-+-+2 rows in set (0.00 sec)rootfxs001 mysql# /usr/local/mysql/bin/mysql -uroot ERROR 1045 (28000): Access denied for user rootlocalhost (using password: NO)试一下,不能登了。rootfxs001 mysql# /usr/local/mysql/bin/mysql -uroot -p123456Welcome to the MySQL monitor. Commands end with ; or g.带上密码就可以了。修改密码的三种方法方法一:使用mysqladmin格式:mysqladmin -u用户名 -p旧密码 password 新密码例1:E:mysqlmysqladmin -uroot password root 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 例2:再将root的密码改为root123。 E:mysqlmysqladmin -uroot -proot password root123方法二:直接更新 user 表mysqlUPDATE user SET password=PASSWORD(test123) WHERE user=test;mysql FLUSH PRIVILEGES;mysql SET PASSWORD FOR test=PASSWORD(test123);mysql FLUSH PRIVILEGES;方法三:使用 grant格式:grant 权限 on 数据库.表格| 其他 to 用户主机 IDENTIFIED BY 口令例1:给test用户在本地localhost 所有权限(除了GRANT OPTION),口令为 test(相当于修改了test 用户的口令)mysqlgrant all on *.* to testlocalhost identified by test;等同于mysqlgrant all on *.* to test localhost identified by PASSWORD *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 ; 验证登陆情况/usr/local/mysql/bin/mysql -uroot -p123456增删修查用户的权限语法:Grant privileges (Columns) on what to account identified by password with grant options or resource management options ;MySQL权限系统保证所有的用户只执行允许做的事情。当你连接MySQL服务器时,你的身份由你从那儿连接的主机和你指定的用户名来决定。连接后发出请求后,系统根据你的身份和你想做什么来授予权限。MySQL在认定身份中考虑的是【你的主机名】【用户名字】,以此来判断不同的连接来源是不同的用户,并根据这些信息来赋予这个连接不同的操作权限。 MySQL存取控制包含2个阶段:阶段1:服务器检查是否允许你连接。(登陆阶段)阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。例如,如果你从数据库表中选择(select)行或从数据库删除表,服务器确定你对表有SELECT权限或对数据库有DROP权限。(每个操作阶段)MYSQL的权限控制是通过 mysql库中表:user,db,host, tables_priv和columns_priv 一起控制的,在MYSQL启动时,系统将这些信息读入到内存中,如果有新的变动(做了Grant或者Revoke命令后)后,必须运行命令 flush privileges 。以下举例来说明:grant all on *.* to testu33 identified by 123456 ;将所有数据库中的所有表的所有权限赋给 testu用户(必须从33 这台机器上登陆mysql)。但是登陆后不能设置其他用户的权限。grant select on *.* to testu2% identified by 123456 ;设置一个可以从任何地方登陆进来的只可以访问任何表的用户testu2,注意是“只读”.和 select 相对应的有:INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES 。grant all on *.* to testu3/ identified by 123456 ;设定一个可以从 10.4.5. 网段登陆进来的可以做任何事情的帐户。grant all on *.* to testu401 identified by 123456 with grant option ;给 testu4 用户一个超级管理员权限目录、配置文件、数据文件的认识安装以后的目录分布rootfxs_wxl_001 mysql# lltotal 92-rw-r-r- 1 root mysql 19071 Jul 28 2006 COPYING-rw-r-r- 1 root mysql 5712 Jul 28 2006 EXCEPTIONS-CLIENT-rw-r-r- 1 root mysql 7752 Jul 28 2006 INSTALL-BINARY-rw-r-r- 1 root mysql 1380 Jul 28 2006 READMEdrwxr-xr-x 2 root mysql 4096 Jul 28 2006 bin-rwxr-xr-x 1 root mysql 801 Jul 28 2006 configuredrwxr-x- 4 mysql mysql 4096 Feb 3 14:42 datadrwxr-xr-x 2 root mysql 4096 Jul 28 2006 docsdrwxr-xr-x 3 root mysql 4096 Jul 28 2006 includedrwxr-xr-x 2 root mysql 4096 Jul 28 2006 libdrwxr-xr-x 3 root mysql 4096 Jul 28 2006 mandrwxr-xr-x 8 root mysql 4096 Jul 28 2006 mysql-testdrwxr-xr-x 2 root mysql 4096 Jul 28 2006 scriptsdrwxr-xr-x 3 root mysql 4096 Jul 28 2006 sharedrwxr-xr-x 5 root mysql 4096 Jul 28 2006 sql-benchdrwxr-xr-x 2 root mysql 4096 Jul 28 2006 support-filesdrwxr-xr-x 2 root mysql 4096 Jul 28 2006 testsrootfxs_wxl_001 mysql# ll data/total 21048-rw-rw- 1 mysql root 1072 Feb 3 14:42 fxs_wxl_001..err-rw-rw- 1 mysql mysql 6 Feb 3 14:42 fxs_wxl_001..pid-rw-rw- 1 mysql mysql 5242880 Feb 3 14:42 ib_logfile0-rw-rw- 1 mysql mysql 5242880 Feb 3 14:42 ib_logfile1-rw-rw- 1 mysql mysql 10485760 Feb 3 14:42 ibdata1drwxr-x- 2 mysql mysql 4096 Feb 3 14:42 mysql-rw-rw- 1 mysql mysql 15161 Feb 3 14:42 mysql-bin.000001-rw-rw- 1 mysql mysql 493595 Feb 3 14:42 mysql-bin.000002-rw-rw- 1 mysql mysql 98 Feb 3 14:42 mysql-bin.000003-rw-rw- 1 mysql mysql 57 Feb 3 14:42 mysql-bin.indexdrwxr-x- 2 mysql mysql 4096 Jul 28 2006 testrootfxs_wxl_001 mysql# ll data/test/total 0rootfxs_wxl_001 mysql# ll data/mysql/total 680-rw-rw- 1 mysql mysql 0 Feb 3 14:42 columns_priv.MYD-rw-rw- 1 mysql mysql 1024 Feb 3 14:42 columns_priv.MYI-rw-rw- 1 mysql mysql 8820 Feb 3 14:42 columns_priv.frm-rw-rw- 1 mysql mysql 876 Feb 3 14:42 db.MYD-rw-rw- 1 mysql mysql 4096 Feb 3 14:42 db.MYI-rw-rw- 1 mysql mysql 9494 Feb 3 14:42 db.frm-rw-rw- 1 mysql mysql 0 Feb 3 14:42 func.MYD-rw-rw- 1 mysql mysql 1024 Feb 3 14:42 func.MYI数据、日志文件的认识数据目录二进制包的默认路径为/usr/local/mysql/data目录,或者是你可以在启动的时候用-datadir指定数据目录,需要注意的几个地方,1),不要在数据目录自己手动创建文件,mysql删除数据库的时候是根据扩展名来删除的,如果有的话,数据库不会被删除,show databases可以看到 。2)Mysql的数据库和数据表名可由数字、字符串以及下划线、$组成,最多64个字符,表的最大尺寸myisam表为4G(max_rows,avg_row_length来定义),innodb表类型默认页面尺寸是16K,源码编译时可选择864K的大小和磁盘有关show create table tbl_nameshow create database db_name数据目录主要内容Hostname.pid 这个MYSQL 的进程号Hostname.err MYSQL 的错误日志,启动、运行中如果有错误会打印到此。Hostname.log故障诊断又叫常规查询日志,记录用户操作的每一步,在实系统中会增长的非常的快,因此慎用。在f配置文件中加 log 配置项。 Hostname-slow.log慢查询日志,可以用命令mysqldumpslow 来查看内容,也可以直接观察。log-slow-queries 增加这个选项表示要生成慢查询日志。log-queries-not-using-indexes 没有使用索引的SQL也记录到慢查询日志中。long_query_time 慢,到底多慢才记录。(秒)默认值是 10 秒。Hostname.nnn-log-update 。变更日志,已经建议取消的选项。Hostname-bin.nnn二进制变更文件,(update,delete,update,truacate 等SQL语句的汇集)flush-logsmax_binlog_size1Greset masterpurge master logs to binlog-do-db=只记录某个数据库的变更binlog-ignore-db=Hostname-bin.index 存放当前的binlog的文件名。启动以后的特征简要介绍备份、还原数据库备份test 整个数据库 /usr/local/mysql/bin/mysqldump -uroot -p123456 test testDBBackup.SQL还原 test 数据库/usr/local/mysql/bin/mysql -uroot -p123456 test testDBBackup.SQL登陆 MySQL/usr/local/mysql/bin/mysql uroot p123456 test作业1, 安装配置好自己机器上的MySQL,使自己能登陆。要求:安装版本mysql-max-5.0.24-linux-i686,源文件请见:2,如何设置你旁边的同学能登陆,而其他人则不能登陆?3,如何设置你旁边的同学登陆进来后 只能读取表数据而不能改?二、 第二课SQL语句基础一 1,MySQL的数据类型:数值形:MySQL中的数值分整型和浮点型两种。MySQL支持科学记数法。整型可以是十进制,也可是十六进制数。select 50 as itt, 5E+2 + 0x11,5E-2 + 10 ;+-+-+-+| itt | 5E+2 + 0x11 | 5E-2 + 10 |+-+-+-+| 50 | 517 | 10.05 |字符串形MySQL支持以单或双引号包围的字符序列。如“MySQL tutorial”、Mysql Database。MySQL能识别字符串中的转义序列,转义序列用反斜杠()表示。下面是一个转义序列列表。转义序列 含义 0 NUL(ASCII的0值) , 单引号 , 双引号 ,b 后退符 ,n 换行符 ,r 回车符 ,t 制表符 , 反斜杠 ,Z Ctrl+Z 如果字符串本身包含有单双引号,则用以下三种方法中的一种来表示:字符串的引号和字符串两端的引号双同,则双写该引号。如:mysqls test。用与字符串的引号不同的引号把字符串引起来,如:mysqls test。用反斜杠转义引号,如:mysql test,mysql test。这样就不用理会字符串两端的是单引号还是双引号了。字符串可由一个十六进制数表示,如0x61表示字符a。由MySQL 4.0开始,字符串值也可用ANSI SQL表示法Xval来表示。如X61表示字符a。select Its dog ,Its dog,Its dog as zhuanyi ,Its n a boy as huanhang ;+-+-+-+-+| Its dog | Its dog | zhuanyi | huanhang |+-+-+-+-+| Its dog | Its dog | Its dog | Its a boy |+-+-+-+-+1 row in set (0.00 sec)日期和时间型默认按照 YYYY-MM-DD 或 HH:Mi:SS 的形式。NULL值和任何类型的值进行运算返回NULL:select sd =sdd,sk =NULL , NULL=NULL,NULL is NULL,NULL is null ;+-+-+-+-+-+| sd =sdd | sk =NULL | NULL=NULL | NULL is NULL | NULL is null |+-+-+-+-+-+| 0 | NULL | NULL | 1 | 1 |+-+-+-+-+-+1 row in set (0.00 sec)2,MySQL数据列类型数值列类型(自增长列)mysql有整数和浮点数值的列类型,如表1所示。整数列类型可以有符号也可无符号。有一种特殊的属性允许整数列值自动生成,这对需要唯一序列或标识号的应用系统来说是非常有用的。每种数值类型的名称、取值范围、存储空间。类型说明说明存储取值范围tinyint(m)非常小的整数1字节有符号值:-128 到127(- 27 到27 - 1)无符号值:0到255(0 到28 - 1) smallint(m)较小整数2字节有符号值:-32768 到32767(- 215 到215 - 1)无符号值:0到65535(0 到21 6 - 1) mediumint(m)中等大小整数3字节有符号值:-8388608 到8388607(- 22 3 到22 3 - 1 ) 无符号值:0到16777215(0 到22 4 - 1) int(m)标准整数4字节有符号值:-2147683648 到2147683647(- 231 到231- 1) 无符号值:0到4294967295(0 到232 - 1) bigint(m)较大整数8字节有符号值:-9223372036854775808 到9223373036854775807(- 263到263-1) 无符号值:0到18446744073709551615(0到264 1) float(m, d)单精度浮点数4字节最小非零值:1.175494351e 38double(m,d)双精度浮点数8字节最小非零值:2.2250738585072014e - 308decimal (m, d)一个串的浮点数m字节(mysql 3.23 )可变;其值的范围依赖于m 和dMySQL提供了五种整型: tinyint、smallint、mediumint、int和为integer的缩写。这些类型在可表示的取值范围上是不同的。整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大。 MySQL 提供三种浮点类型: float、double和decimal。与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的(当然,也有负的最大和最小值)。 在选择了某种数值类型时,应该考虑所要表示的值的范围,只需选择能覆盖要取值的范围的最小类型即可。选择较大类型会对空间造成浪费,使表不必要地增大,处理起来没有选择较小类型那样有效。对于整型值,如果数据取值范围较小,如人员年龄或兄弟姐妹数,则tinyint最合适。mediumint能够表示数百万的值并且可用于更多类型的值,但存储代价较大。bigint在全部整型中取值范围最大,而且需要的存储空间是表示范围次大的整型int类型的两倍,因此只在确实需要时才用。对于浮点值,double占用float的两倍空间。除非特别需要高精度或范围极大的值,一般应使用只用一半存储代价的float型来表示数据。 在定义整型列时,可以指定可选的显示尺寸m。如果这样,m应该是一个1 到255的整数。它表示用来显示列中值的字符数。例如,mediumint(4)指定了一个具有4个字符显示宽度的mediumint列。如果定义了一个没有明确宽度的整数列,将会自动分配给它一个缺省的宽度。缺省值为每种类型的“最长”值的长度。如果某个特定值的可打印表示需要不止m个字符,则显示完全的值;不会将值截断以适合m个字符。 对每种浮点类型,可指定一个最大的显示尺寸m 和小数位数d。m 的值应该取1 到255。d的值可为0 到3 0,但是不应大于m - 2(如果熟悉odbc 术语,就会知道m 和d 对应于odbc 概念的“精度”和“小数点位数”)。m和d对float和double 都是可选的,但对于decimal是必须的。在选项m 和d时,如果省略了它们,则使用缺省值。 字符串列类型 MySQL提供了几种存放字符数据的串类型,其类型如下:下表给出了MySQL定义串值列的类型,以及每种类型的最大尺寸和存储需求。对于可变长的列类型,各行的值所占的存储量是不同的,这取决于实际存放在列中的值的长度。这个长度在表中用l 表示。类型说明最大尺寸说明存储需求Char(m)m 字节定长字符串m 字节varchar(m)m 字节可变长字符串l + 1字节tinyblob,tinytext28- 1字节非常小的blob(二进制大对象), 非常小的文本串l + 1字节blob,text216 - 1 字节小blob, 小文本串l + 2字节mediumblob,mediumtext224- 1字节中等的blob, 中等文本串l + 3字节longblob,longtext232- 1字节大blob, 大文本串l + 4字节enum(“value1”, “value2”, .)65535 个成员枚举;列可赋予某个枚举成员1 或2字节set (“value1”, “value2”, .)64个成员集合;列可赋予多个集合成员1、2、3、4 或8字节表5:串列类型最大尺寸及存储需求 l 以外所需的额外字节为存放该值的长度所需的字节数。mysql 通过存储值的内容及其长度来处理可变长度的值。这些额外的字节是无符号整数。请注意,可变长类型的最大长度、此类型所需的额外字节数以及占用相同字节数的无符号整数之间的对应关系。例如,mediumblob 值可能最多224 - 1字节长并需要3 个字节记录其结果。3 个字节的整数类型mediumint 的最大无符号值为224 - 1。这并非偶然。日期时间列类型 mysql 提供了几种时间值的列类型,它们分别是: date、datetime、time、timestamp和year。下表给出了mysql 为定义存储日期和时间值所提供的这些类型,并给出了每种类型的合法取值范围。类型名取值范围存储需求说明date“1000-01-01”到“9999-12-31”3字节“yyyy-mm-dd”格式表示的日期值time“-838:59:59”到“838:59:59”3字节“hh:mm:ss”格式表示的时间值datetime“1000-01-01 00:00:00” 到“9999-12-31 23:59:59”8字节“yyyy-mm-dd hh:mm:ss”格式timestamp19700101000000 到2037 年的某个时刻4字节“yyyymmddhhmmss”格式表示的时间戳值year1901 到21551字节“yyyy”格式的年份值表7: 日前时间列类型的取值范围和存储需求3,表相关操作创建语法Create table .创建带有自增长列的表 Create table test (seq int AUTO_INCREMENT,vv char(10),primary key(seq) ;自己来指定从什么地方开始:Create table test2 (seq int AUTO_INCREMENT ,vv char(10) ,primary key( seq) ) auto_increment=12 ;insert into test2(vv) values (qqoo23232),(qwe),(234232) ;思考:到什么地方结束由什么因素来确定?修改这个自动增长的列的下一个开始值:alter table test2 auto_increment=99 ;truncate table test2 后,该表中的序号将从头开始。创建MyISAM/innoDB/Merge/Heap 类型的表 表类型: MyISAM 普通表。(数据文件、索引文件、表定义文件) Create table test4 (code varchar(10) type = innodb ;Innodb表的特点:支持事务、默认表空间存放。 Crteate table test5 (code varchar(10) type =heap ; 内存表,在磁盘上只有表结构定义,一般无数据文件,MySQL重启后数据消失。看表创建的语句: Show create table 创建临时表 临时表的特点、缺点 临时表同连接有关,它的存在范围只在这个连接保持的期间,断开后这个表就自动消失,注意表和表里数据都消失了,这个表在别的连接也是不可见。create temporary table tt (Code varchar(10) ;如何复制查询结果集到一个新表Create table test5 select * From test2 ;如果复制一个表的定义成一个新表Create table test6 select * From test2 where 1=0 ;创建带有主键、唯一键、外键约束的表主键:Create table test7 (Code char(10),Name char(15) ,primary key(Code) ;Create table test8 (Code char(10),Name char(15) ,primary key(Code,Name) ;唯一键Create table test9 (code char(10),Name char(15),age ) ;Create UNIQUE index on test9 (Code) ;主键和唯一键 对表中的数据是有 约束力的。外键:是两个表之间的关系。在 Emp 表上的DeptNo加了外键,这个键是 Dept 表的ID字段,约束力体现在:向 Emp表中添加数据时,如果添了一个在Dept表中不存在的DeptNo内容,则这条内容不能插入成功。create table dept (id varchar(10),Name varchar(10), PRIMARY KEY (id) Type=INNODB;create table emp (Code varchar(10),Name varchar(10),DeptNo varchar(10), Foreign key (deptNo) references dept(id) on delete CASCADE ) Type=INNODB ;ALTER TABLE yourtablename ADD CONSTRAINT symbol FOREIGN KEY id (index_col_name, .) REFERENCES tbl_name (index_col_name, .) ON DELETE CASCADE | SET NULL | NO ACTION | RESTRICT ON UPDATE CASCADE | SET NULL | NO ACTION | RESTRICTOn delete cascade 是 主表删除了,从表数据跟着被删除。On delete set NULL 是主表删数据了,从表的这列数据将设置成NULL。No action = RESTRICT 都是不容许主表上的删除或者更新操作。1,主表中那个被引用的那列必须包含索引。2,表类型必须是innodb类型的表。3,外键的存在有两个约束力:1)对从表中的数据不能插入主表中没有的。2)从表中已经引用的数据,如果想在主表中删除的话,那得看从表是怎么定义的(得服从)。 创建有默认值列的表Create table test2 (Code varchar(10),ttime timestamp default current_timestamp) Insert into test2 (Code) values (001) ;Insert into test2 (Code) values (002) ;修改表更改原有表的结构。例如,您可以增加或删减
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年管理体系认证基础考试真题(含答案)
- 摇臂拍摄基础知识培训
- 内蒙古自治区通辽市2024-2025学年八年级下学期期末语文试题(解析版)
- 摄影图像基础知识培训课件
- 热工检测技术试题及答案
- 300万平方米纸质包装技改项目可行性研究报告模板-立项备案
- 2025餐饮劳动的合同范本
- 2025高级工程师标准劳动合同
- 摄制部基础知识培训总结
- 2025年探讨无证房屋的租赁合同效力
- 湖北省襄阳市枣阳市2024-2025学年七年级下学期期末考试英语试卷(含答案无听力部分)
- 光储充一体化项目可行性研究报告
- 2025年供热公司培训试题及答案
- 冠心病的防治指南
- 临建工程施工合同范本(2025版)
- G2电站锅炉司炉证考试题库及答案
- 架桥机架梁施工技术交底
- 科研协作管理办法
- 屠宰加工人员职业技能模拟试卷含答案
- 多胎减胎患者护理指南
- 精益管理课件
评论
0/150
提交评论