2) 查询数据记录 SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式]; 例:查询全部数据 SELECT * FROM market; 例:查询指定数据 select id,name from market where id=4; 例:以列表方式竖向显示 select from market\G; 例:只显示头2行 select * from market limit 2; 例:显示第2行后的前2行 select * from market limit 2,2; 3) 修改、更新数据表中的数据记录 UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式]; 例:修改age update market set age=19 where id=4; update market set age=20,passwd='111111' where id=4; #同时修改age和passwd
4) 在数据表中删除指定的数据记录 DELETE FROM 表名 [WHERE 条件表达式]; 例:删除当前表中id为4的数据 delete from market where id=4; 2.5 修改表名和表结构 1) 修改表名 ALTER TABLE 旧表名 RENAME 新表名; 例: alter table market rename sales; 2) 扩展表结构(增加字段) ALTER TABLE 表名 ADD address varchar(50) default '地址未填写!'; #default '地址未填写!':表示此字段设置默认值 地址未填写!;可与 NOT NULL 配合使用 3)修改字段(列)名,添加唯一键 ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key]; 例:修改字段并添加唯一键,然后创建数据测试。 alter table market change name user_name char(30) unique key; #CHANGE可修改字段名、数据类型、约束等所有项。
4) 删除字段 ALTER TABLE 表名 drop 字段名; 例:删除表中 passwd字段 ALTER TABLE market drop passwd; 2.6 使用 if 判断 创建表并测试自增和填充 use ali; #先进入指定的库 create table if not exists yy ( id int(4) zerofill primary key auto_increment, name char(20) not null, sid int(18) not null unique key, age int(3) not null, address char(100)); 分析: #if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建 #int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001 #auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次 #unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键 #not null:表示此字段不允许为NULL 测试:创建数据测试自动补齐和自增长。 测试:数据创建失败,id的补齐和自增情况
3.1.2 方法二:创建的时候同时导入 create table test02 (select * from info); show create table test02\G; #获取数据表的表结构、索引等信息
3.2 清空表——删除表内的所有数据 3.2.1 方法一:deldte删除 DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。 delete from info; #delete from 表名; 3.2.2 方法二:truncate删除 TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录 truncate table info; 3.2.2 方法三:创建临时表 临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。 ##添加临时表test03 create temporary table test03 ( id int(4) zerofill primary key auto_increment, name varchar(10) not null, cardid int(18) not null unique key, hobby varchar(50)); show tables; ## 查看当前库中所有表 insert into test03 values(1,'zhangsan',123456789,'watch a film'); ##在临时表中添加数据 select * from test03; ##查看当前表中所有数据 quit ##退出数据库 mysql -u root -p ##重新登录后进行查看 select * from test03; ##查看之前创建的临时表中所有数据,发现已经被自动销毁 3.3 创建外键约束 create table pro (pid int, pname char(20)); create table student (id int, name char(10), age int, proid int); alter table pro add constraint PK_pid primary key (pid); alter table student add constraint FK_proid foreign key (proid) references pro (pid); pro表结构如下: student表结构如下: 注意:与外键关联的子表的字段必须设置为主键。要求主表外键字段和子表的字段具备相同的数据类型、字符长度和约束。 #为子表添加一个主键约束。主键名建议以“PK_”开头。 alter table pro add constraint PK_pid primary key (pid); #为 branch 表添加外键,并将 student表的 proid 字段和 pro 表的 pid 字段建立外键关联。外键名建议以“FK_”开头。 alter table student add constraint FK_proid foreign key (proid) references pro (pid); 测试删除:从表的数据未删除,主表的数据无法删除
查看和删除外键约束: desc test03; show create table student\G #查看表约束 alter table student drop foreign key FK_proid; 解除外键约束 alter table student drop key FK_proid; 删除外键 desc student;