基本操作
#1 操作文件夹(库) 增 create database db1 charset utf8; --指定格式为utf8 查 show databases; --查看所有的数据库 show create database db1; --查看已经建好的数据库信息 改 alter database db1 charset gbk; --修改数据库的字符编码 删 drop database db1; 其他 use database_name; ---使用某个数据库,相当于进入这个数据库(文件夹) select database(); ---显示当前所在的数据库 #2 操作文件(表) 切换到文件夹下:use db1 增 create table t1(id int,name char(10))engine=innodb;--增加一个表,后面追加了他的数据引擎 create table t2(id int,name char(10))engine=innodb default charset utf8;--增加一个表,后面追加了他的数据引擎和 查 show tables;--查看表中的所有表 show create table t1; --查看已有的表的类型和desc功能差不多,就是表先形式不好。 desc t1;---查看表结构 改 alter table t1 add age int; -----------------给已有的表中添加字段(重点) 列:alter table ti add 添加的名 类型; alter table t1 modify name char(12); --------修改字段的类型。 rename table 原表名 to 新表名 -------------修改表名 --------------------------------------------------------------- 2.修改字段 (以t2表为例) alter table t2 modify salary int not null; # 更改salary字段的数据类型,并加not null的约束条件。 alter table t2 change salary salaries int; # 更改salary字段的名字为salaries,注意 会改变约束条件,需要的话,需要添加; 其实相当于删除了salary字段,重新创建了一个salaries字段。 删 drop table t1; --直接删除一个表。 #3 操作文件的一行行内容(记录) 增 insert into db1.t1 values(1,'egon1'),(2,'egon2'),(3,'egon3'); insert into db1.t1(name) values('egon1'),('egon2'),('egon3'); 查 select * from t1; select name from t1、、、、、、; select name,id from t1; 改 update t1 set name='SB' where id=4; + update t1 set name='SB' where name='alex'; 删 delete from t1 where id=4; #对于清空表记录有两种方式,但是推荐后者 delete from t1; truncate t1; #当数据量比较大的情况下,使用这种方式,删除速度快 #自增id create table t5(id int primary key auto_increment,name char(10)); create table t4(id int not null unique,name char(10)); insert into t5(name) values ('egon5'), ('egon6'), ('egon7'), ('egon8'), ('egon9'), ('egon10'), ('egon11'), ('egon12'), ('egon13'); #拷贝表结构 create table t7 select * from t5 where 1=2; alter table t7 modify id int primary key auto_increment; insert into t7(name) values ('egon1'), ('egon2'), ('egon3'), ('egon4'), ('egon5'), ('egon6'), ('egon7'), ('egon8'), ('egon9'), ('egon10'), ('egon11'), ('egon12'), ('egon13'); delete from t7 where id=1; #删记录 update t7 set name=''; #修改字段对应的值
练习
语法: 1. 修改表名 ALTER TABLE 表名 RENAME 新表名; 2. 增加字段 ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…], ADD 字段名 数据类型 [完整性约束条件…]; ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] FIRST; ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; 3. 删除字段 ALTER TABLE 表名 DROP 字段名; 4. 修改字段 ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…]; ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…]; ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…]; 示例: 1. 修改存储引擎 mysql> alter table service -> engine=innodb; 2. 添加字段 mysql> alter table student10 -> add name varchar(20) not null, -> add age int(3) not null default 22; mysql> alter table student10 -> add stu_num varchar(10) not null after name; //添加name字段之后 mysql> alter table student10 -> add sex enum('male','female') default 'male' first; //添加到最前面 3. 删除字段 mysql> alter table student10 -> drop sex; mysql> alter table service -> drop mac; 4. 修改字段类型modify mysql> alter table student10 -> modify age int(3); mysql> alter table student10 -> modify id int(11) not null primary key auto_increment; //修改为主键 5. 增加约束(针对已有的主键增加auto_increment) mysql> alter table student10 modify id int(11) not null primary key auto_increment; ERROR 1068 (42000): Multiple primary key defined mysql> alter table student10 modify id int(11) not null auto_increment; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 6. 对已经存在的表增加复合主键 mysql> alter table service2 -> add primary key(host_ip,port); 7. 增加主键 mysql> alter table student1 -> modify name varchar(10) not null primary key; 8. 增加主键和自动增长 mysql> alter table student1 -> modify id int not null primary key auto_increment; 9. 删除主键 a. 删除自增约束 mysql> alter table student10 modify id int(11) not null; b. 删除主键 mysql> alter table student10 -> drop primary key;
常用的查询语句:
1、字符串的模糊查询:
SELECT * FROM tb_stu WHERE sname = '小刘' SELECT * FROM tb_stu WHERE sname like '刘%' SELECT * FROM tb_stu WHERE sname like '%程序员' SELECT * FROM tb_stu WHERE sname like '%PHP%'
2、查询前n条记录
select * from class LIMIT 2,4;
limit 后面是从,之前是从哪里开始,后面是查询几条数据
3、查询从指定位置开始的n条记录
SELECT * FROM tb_stu ORDER BY id ASC LIMIT $n
$n是倒数的索引位置
4、 查询从指定位置开始的n条记录
SELECT * FROM tb_stu ORDER BY id ASC LIMIT $_POST[begin],$n
5、查询非空数据
SELECT * FROM tb_name WHERE address <>'' order by addtime desc
6、显示数据表中重复的记录和记录条数
SELECT name,age,count(*) ,age FROM tb_stu WHERE age = '19' group by date
group by是以什么分组
7、十八对数据进行降序/升序查询
SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 DESC 降序 SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 ASC 升序
ORDER BY是排序
DESC 降序
ASC 升序