一,对数据库的操作:
1,(展示库单)show databases; 展示登陆用户中的所有数据库,在用户成功登陆mysql的用户账户后即可使用该语句;
2,(增加库)create database 数据库名+character set 数据库格式; 创建数据库,注意database后面没有加s,另外character set可以省略不写,当不写该语句时系统默认将该数据库定义为utf8格式;
3,(删除库)drop database 数据库名; 删除数据库;
4,(修改库)alter database 数据库名+character set gbk; 将数据库j1702的数据格式改为gbk类型(注意数据库名不能修改);
5,(打开库)use 数据库名; 使用数据库语句(可以理解为进入改数据库);当执行该语句成功后就可以对该数据库内的所有数据表进行相应操作;
二,对数据表的操作:
1,(展示表单)show tables; 展示该数据库里所有的数据表,注意tables有加s;
2,(查看表结构)desc table 表名; 展示数据表的详细结构,与“show columns from 表名 ”功能相同;
3,(查看表数据)select * from 表名; 展示数据表的详细数据,展示的是该表中存储的数据,注意与desc语句的区别;
select techer.name from techer where techer.id=5;//展示的是techer表中name列和id=4行所指向的数据
4,(增加表单)新建数据表:如下代码,此时新建的表为空表,数据要通过后面插入
mysql> create table techer(//新建techer数据表 -> id INT primary key auto_increment,//id 为数据表字段;primary key 为id添加主键约束;auto_increment 为id添加自增长约束 -> name CHAR(20) not null,//not null 对name字段添加不为空约束 -> sex enum('男','女') not null, -> class int default '0' //default '0' 添加默认值为0的约束条件;注意最后的字段后面不用加逗号 -> );
5,(增加/删除字段)alter table 表名 add(drop) 字段 类型; 向表中添加(或者删除)字段
6,(增加约束)alter table 表名 add 约束(字段);向表中指定字段添加约束
7,(修改字段)alter table 表名 change 旧字段 新字段 新字段类型; 将表中旧字段替换成新的字段
8,(修改表名)rename table 旧表名 to 新表名; 修改表名
9,(删除表单)drop table 表名; 删除表,注意要加table关键字
三,对表中数据的操作:
0, (导入文档数据)load data local infile 'C:/Users/jfhlg/Desktop/pet.txt' into table pet lines terminated by' '; 导入txt数据文档到数据表,'C:/Users/jfhlg/Desktop/pet.txt'表示txt文档的路径
1,(增加数据)insert [into] 表名[(字段1,字段2,...)] values(数据1,数据2,...); 向表中插入数据;注意[]里的可以省略,字段与数据是一一对应关系,当表名后面不加字段时,values后面的数据必须与创建时的字段一一对应,例如:insert into techer values(0,'王二小','男',3); 当主键设为自增长时,传入的值为0时,数据是默认插入到表中的最后面一行;
2,(查看全表数据)select * from 表名; (整表查看)查看表中的所有数据
3,(查看局部表数据)select * from 表名 order by 字段 limit index1,index2; (多行查看)查找表中指定字段的指定行范围的数据(其中index1表示起始行的脚标位置;index2表示index1位置后的多少行(index2可以超过行的总是,即不会越界错误))
4,(查看局部表数据)select * from 表名 where 字段=(值); (单行查看)查找表中指定字段中指定值所在行的数据(不会有越界错误,当越界时,提示为空)
5,(删除表数据)delete from 表名 where 字段(一般为主键)=(值); (单行删除)删除表中指定字段中指定值所在行的数据;当删除的是中间某行数据时,该行将会被空出来,在对该行进行数据查询时会显示为空;可以对该行再次进行插入数据操作(所指定的值应在该字段中是唯一值,否则将报错)
6,(修改表数据)update 表名 set 字段=新值 where 字段(一般为主键)=(值); (单行修改)修改表中指定字段中的数据(一般通过主键来指定修改位置)
7,alter table 子表 add constraint 外键名 foreign key (子表中的字段) references 父表(字段); 添加两个表的外键链接
8,select techer.name as '姓名',techer.id as '编号' from techer; 给techer表的name和id字段分别起别名
9,联合查询
1,select * from emp,dep where dep.id=emp.dep_id; 显示的是满足条件dep.id=emp.dep_id的两个表的所有数据的所有组合
2,select * from dep left join emp on dep.id=emp.dep_id; 左表(dep)中的所有数据都要查询出来,右表(emp)中有的
就显示出来,没有对应记录的就显示为NULL
3;select * from dep right join emp on dep.id=emp.dep_id; 右表(emp)中的所有数据都要查询出来,左表(dep)中有就显示出来,
没有对应记录就显示为NULL
4,select * from dep left join emp on dep.id=emp.dep_id
union
select * from dep right join emp on dep.id=emp.dep_id; 查询的是以上两个结果的并集(注意 这三个语句是一个 整体,只在最后一个语句有分号)
5,select dep.name as 'dep_name',emp.name as 'emp_name' from dep,emp where dep.id=emp.dep_id and dep.id=4;
↑这是控制要选择的列信息 这是提↑供数据的表 ↑这是控制要选择的行信息
6,select dep.name from dep where dep.id in(select emp.dep_id from emp where emp.age=20); 先在emp表中查出年龄为20的员工的部门id的集合,如果dep表中的部门id在后面in的集合里面,就查询出该id对应的部门名称(其中emp表中的dep_id是dep表的外键,与dep表中的id相关联)
7,将上面6中语句中的in改成not in则查询出来的结果相反
8,select * from dep where exists (select * from emp where age<18); exists的作用是:其前面的语句是否会被执行是由其后括号里面的语句的结果是否为空来决定的,即,后面的结果为空,前面的语句就不会被执行,反之不会被执行
9,select * from dep where id>any(select dep_id from emp);只要any后面括号里面的语句的结果有一个是符合any条件的,则any前面的语句将要被执行,否则反之