查看数据库列表:
show databases;
连接数据库:
mysql -uroot -p[密码]
选择数据库进入:
use 数据库名
查看表结构:
desc [数据库名] . [表名]
创建数据库:
create database 数据库名;
创建表:
create table 表名 (定义字段)
Create table users (name char(20) not null,passwd char(30)default ‘’, primary key(name));
mysql 创建表:
mysql> create table user(
-> userid int(4) primary key not null auto_increment,
-> username varchar(16) not null,
-> userpassword varchar(32) not null
-> );
删除库、表:
drop table 名
drop database 库名
插入数据:
Insert into 表名(字段) values (字段值)
Insert into user(name, passwd )values(‘sun’,123);
更改数据:
Update 表名 set 字段名1=值1 where 条件
Update user set user_passwd=password(‘’) where name=’zhangsan’;
删除数据
Delete from 表名 where 条件
查询数据
Select
设置用户权限:grant
Grant all on *.* to ‘root’@’192.168.1.108’ identified by ‘123456’;
Flush privileges;
查看用户权限
Show grand;
Show grand for ‘root’@’locahost’
撤销用户权限
撤销用户读的权限
Revoke select on imployee.* from ‘root’@’locahost’
Flush privileges;
union 合并两张表,都查询出来
select s.* from [表名]
union
select c.* from [表名];
MyISAM和InnoDB区别
MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。
MySQL通配符
_:任意单个字符
%:任意长度的任意字符
数据库的备份和恢复
方法一:可直接备份目录 /var/local/mysql/var
方法二:使用专用备份工具 mysqldump
操作:mysqldump -u 用户名 -p [密码][选项][数据库名][表名] >/备份路径/备份文件名
常见选项:
--all-databases
--opt
恢复操作:mysql -u root -p [数据库名]</备份路径/备份文件
使用别名查看表格
select s.name,s.age from num1 s;
插入表格多个变量
insert into num1(name,age) values("laoyang", 19),("xiaoyang",24),("xiaosu",23);
通过外键查看表格
select name,c.course,c.score from stu s,stu_s c where c.stu_id = s.id;
left outer join 左外联
select s.*,c.* from student s left outer join stu c on c.id =s.id;
Right outer join 右外联
select s.*,c.* from student s right outer join stu c on c.id =s.id;
内连接
select s.*,c.* from student s inner join stu c on c.id ;
三表内连
select * from asfhj a inner join demo_stu b on a.sid=b.sid inner join demo_teacher c on c.tid=a.id;
事务的特征(acid)
原子性:所有元素必须作为一个整体,任何元素失败,则整个事务失败。
一致性:当事务完成时,数据必须处于一致状态,开始时数据处于一致状态,进行中可能处于不一致状态,完成时数据必须处于一致
隔离性:所有事务时彼此隔离的,事务必须时独立的。保护数据安全。
持久性:
视图
create view 视图名 as select 字段名 from 表名;
查看MySQL现在已经提供什么储存引擎
mysql> show engines;
查看mysql当前默认的存储引擎:
mysql> show variables like '%storage_engine%';
查看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):
mysql> show create table 表名;
修改表的存储引擎:
ALTER TABLE engineTest ENGINE = INNODB;
查看所有用户
select * from mysql.user \G
删除某个用户
drop user 用户名@'%';
修改某个用户密码
set password for '用户名'@'localhost'=password('passwd');
修改某一列为自增:
mysql> alter table test change id id int AUTO_INCREMENT;
mysql> create table t24(id int,name char(10));
mysql> alter table t24 add primary key(id); //添加主键
mysql> alter table t24 modify id int auto_increment;//加入自动增加
删除主键唯一约束,还原到建表时的状态*/
mysql> alter table t24 modify id int; //去掉auto_increment
mysql> alter table t24 drop primary key;
mysql> alter table t24 modify id int;//修改默认值为null
在MySQL中修改字段名
格式:
alter table 表名 change 旧字段名 新字段名 字段属性;
举个例子:
修改users表的name字段为username
alter table users change name username varchar(25);
在MySQL中增加字段名
alter add命令格式:alter table 表名 add字段 类型 其他;
例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0:
mysql> alter table MyClass add passtest int(4) default '0';
在MySQL中删除字段名
ALTER TABLE table_name DROP field_name;
多表查询
查询“zhanglaoshi”教的学生都有谁?
SELECT teacher.t_name,student.s_name FROM s_and_t INNER JOIN student ON student.s_id=s_and_t.s_id
INNER JOIN teacher ON teacher.t_id=s_and_t.t_id
WHERE teacher.t_name='zhanglaoshi'
约束
主键约束
他能够唯一确定一张表的一条记录,也就是我们通过给某个字段添加字段不重复且不为空。
Primary key
联合主键:同一张表中两个主键值加起来不重复就可以
忘记创建主键的话:alter table 表名 add primary key;
删除主键约束:alter tables 表名 drop primary key;
自增约束
Auto_increment
唯一约束
约束该字段的值不能重复
Create table user (
Id int,
Name varchar(20),);
Alter table user add uniqe(name);添加唯一约束
删除唯一约束:alter table user drop index name
非空约束
修饰的字段不能为null
Not null
默认约束
当我们插入字段值的时候,如果没有传值,就会使用默认值,如果传输了数据,则不会使用默认值
例如:Default 10
查询的是时候就会发现默认值就是10。
外键约束
涉及到最少两个表;
班级表
Create table class (
id int
Name varchar(20));
学生表
Create table student(
Id int,
Name varchar(20),
Class_id int ,
Foreign key(class_id) references class(id));添加外键约束
- 主表中没有的数值,再副表中,是不可以使用的
- 主表中的记录被副表引用,是不可以被删除的