mysql简单命令操作

来源:互联网 发布:pdf文字编辑器for mac 编辑:程序博客网 时间:2024/06/05 11:05

create database testDataBase;
创建数据库(注意要以;结尾)

show databases;
查看所有的数据库

use test;
选择test数据库

drop database test;
删除test数据库

show engines;
查看mysql支持的引擎

show tables;
查看数据库中所有的表

describe t_test;
查看t_test表的结构(desc t_test;简写形式);

show create table t_test;
查看表的详细定义

drop table t_test;
删除t_test表

alter table t_test rename t_table;
把t_test表重新命名为t_table表

alter table t_test add loving char(20);
给t_test表添加一个loving字段,数据类型和长度为char(20)

alter table t_test add friends char(125) first;
在表的第一个字段添加friends列;

alter table t_test add trouble char(125) after name;
在指定字段后面添加字段

alter table t_test drop trouble;
删除表字段

alter table t_test modify name integer;
修改name字段类型为integer类型

alter table t_test change name newname integer;
修改字段name列名为newname,数据类型保持integer不变(可以同时把数据类型改变,实现列名和数据类型同时改变);

alter table t_test modify newname int(11) after gender;
修改列的位置,把newname列放到gender列之后;

create table t_test (id integer ,name char(20),gender char(3),constraint pk_name primary key(name)  //添加主键约束,设置主键);


create table t_test (id integer primary key auto_increment ,  //设置主键以及自动增长;name char(20),gender char(3));

create table t_test ( id integer primary key auto_increment, name char(20) not null ,age integer unique );
设置主键自动增长,不为空和唯一约束

show tables;
查看所有的表

delete from t_stu where stuid=1;
删除一行数据

insert into t_stu values (1,’sdongwan’,1,1);
添加一行数据

update t_stu set cname=’sdongwan’ where cid = 1;
更新一行数据

select * from t_stu where stuid=1;
查询一行数据

create table t_test ( id integer primary key auto_increment , brith datetime not null , age enum(‘18’,’19’,’20’) );
枚举字段的使用

select id , id*2 ,id*4 from t_test;
mysql算术运算符

select name from t_test where name like ‘sd%’;
like粗略选择

select abs(-2) ,abs(-55);
使用mysql内置的函数

select encode(‘kill’,’doublekill’);
使用doublekill作为密码对kill进行加密

select decode(encode(‘kill’,’doublekill’),’doublekill’);
使用doublekill作为密码对kill进行解密

select * from t_test where id in (4,5) order by id;
查询id为4或者5的行

添加外键约束:
外键所在的表是子表,外键参考的列所在的表是父表;
在插入数据时,要先插入父表数据,才能插入子表数据,否则直接插入子表数据会不成功;

alter table t_stu add constraint FK_CID foreign key(cid) references t_classroom(cid);
添加外键约束,外键约束名字为FK_CID ,外键列cid, 参考列t_classroom(cid);

alter table t_stu drop foreign key FK_CID;
删除外键名为FK_CID的外键约束

alter table t_stu add constraint PK_CID foreign key(cid) references t_classroom(cid) on delete cascade on update restrict;
添加外键约束,并且设置删除和更新的方式

CASCADE
在父表上update/delete记录时,同步update/delete掉子表的匹配记录

SET NULL
在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null)

NO ACTION
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

RESTRICT
同no action, 都是立即检查外键约束

SET NULL
父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

连接

内连接(两个表有同名的字段):

select stuid,name,gender,t_stu.cid,cname from t_stu inner join t_classroom ;
查询两个表内连接后字段值

select stuid,name,gender,t_stu.cid,cname from t_stu inner join t_classroom where t_stu.cid=t_classroom.cid;
跟上面的sql语句一样

左连接的结果集包括指定的左表全部数据与匹配的右表数据,右表中没匹配的全为空值.关键字 left join

select stuid,name,gender,t_stu.cid,cname from t_stu left join t_classroom on t_stu.cid=t_classroom.cid;
表t_stu左连接t_classroom;
结果:
+——-+———-+——–+—–+———-+
| stuid | name | gender | cid | cname |
+——-+———-+——–+—–+———-+
| 1 | zbo | boy | 1 | 高三十班 |
| 2 | sdongwan | boy | 1 | 高三十班 |
| 3 | nn | girl | 3 | NULL |
+——-+———-+——–+—–+———-+

右连接的结果集包含指定的右表全部数据与匹配的左边数据,左边中没匹配的全为空值.关键字 right join

select stuid,name,gender,t_stu.cid,cname from t_stu right join t_classroom on t_stu.cid=t_classroom.cid;
表t_stu右连接t_classroom;
结果:
+——-+———-+——–+——+———-+
| stuid | name | gender | cid | cname |
+——-+———-+——–+——+———-+
| 1 | zbo | boy | 1 | 高三十班 |
| 2 | sdongwan | boy | 1 | 高三十班 |
| NULL | NULL | NULL | NULL | 网工 |
+——-+———-+——–+——+———-+

having和where使用的区别:

where针对表中的列发挥作用,查询数据
having对查询结果中的列发挥作用,筛选数据
having使用在order by之前,group by之后

select name from t_stu group by name having name in (‘sdongwan’,’za’) order by name asc;
查询 name,并且按照name升序排序

索引

create index index_name on t_stu(name);
在表t_stu的name列上面创建一个索引name;

show index from t_stu;
查看t_stu表中的全部索引

drop index index_name on t_stu;
删除t_stu表上的index_name索引

视图(类似银行的服务窗口,把指定数据拿出来创建视图,这样就不用直接操作数据库,提高安全性):
create view stuView(name,gender) as select name,gender from t_stu;
从表select出name,gender来创建视图view

desc stuView;
查看视图结构

对视图的操作同直接操作数据库一样:
select * from stuView;
查询视图的全部数据

drop view if exists stuView;
删除视图stuView;

create or replace view stuView as select name,gender,cid from t_stu ;
更新视图结构

update stuView set name = ‘dengchaori’ where cid=1;
更新视图数据