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 , id2 ,id4 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;
更新视图数据