Mysql介绍
Mysql是一个中小型的关系数据库管理系统,是用来存储数据的。目前我使用的版本是Mysql5.5,它在性能上相比之前的版本有了很大的提升。在Mysql5.1.x之前的版本中,默认的存储引擎是MyISAM,每个MyISAM在磁盘上会将数据存储成三个文件。第一个文件是表结构文件,为.frm文件存储表定义。第二个文件是数据文件,其扩展名是.MYD。第三个文件是索引文件,其扩展名是.MYI。MyISAM存储引擎的特点是表级锁、不支持事务和全文索引,在大并发,重负荷生产系统上,表锁的特性显得有些力不从心。从Mysql5.5.x开始,默认的存储引擎变更为InnoDB Plugin引擎。InnoDB给Mysql提供了具有提交、回滚和崩溃恢复能力的事务安全存储引擎。InnoDB锁定在行级,InnoDB也支持外键。并且Mysql5.5.x不仅支持异步复制而且还支持半同步复制。
Sql语句–操作库、表
1.创建数据库
CREATE DATABASE db_name CHARACTER SET charset_name
CHARACTER SET:指定数据库采用的字符集
show global variables like “%datadir%”
创建一个名称为mydb1的数据库:create database mydb1;
创建一个使用utf8字符集的mydb2数据库:create database mydb2 character set gbk;
2.查看、删除数据库
显示数据库语句: show DATABASES
显示数据库创建语句:show DATABASE db_name
数据库删除语句:DROP DATABASE db_name
3.MYSQL常用数据类型
字符串型:varchar,char varchar相对于char在存储数据上是可变的,数据长度有多少,就在数据库中存储多少个字符。 char不计数据长度每次都会固定读取20个字符的数据。但是在查询效率上char比varchar更高,因为varchar需要先获取长度,在读取,而char可以直接读取。
大数据类型:BLOD、TEXT
数值型:TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
逻辑型:BIT 0 1
日期型:DATE、TIME、DATETIME、TIMESTAMP
4.创建表练习
创建一个员工表employee—查看表结构:desc表名
创建一个员工表employee
create table employee(
id int primary key auto_increment ,
name varchar(20),
gender varchar(2) ,
birthday date,
entry_date date,
job varchar(20),
salary double,
resume text
);
创建完毕之后利用desc employee 来查看表结构。
定义单表字段的约束
定义主键约束:primary key:不允许为空,不允许重复。
删除主键
如果主键是自增的话,要现将主键的自增删除,再删除主键。
删除自增:alter table tablename modify id int;
alter table tablename drop primary key ;
主键自动增长 :auto_increment
定义唯一约束 – 唯一索引:name varchar(20) unique
定义非空约束:salary double not null
5.查看表信息
查看表结构:desc tabName
查看当前所有表:show tables
查看当前数据库表建表语句:show create table tabName
6.修改表
修改表的名称:rename table 表名 to 新表名;
修改列的名称:ALTER TABLE table_name change old_column new_column
typefiled;
修改表的字符集:alter table user character set utf8;
删除表:drop table tabName;
7.数据库表中的数据操作
数据库的CRUD
insert – 插入数据
select – 读取数据
update – 更新数据
delete – 删除数据
使用 INSERT 语句向表中插入数据:
insert into table_ name(column_name1,column_name2 ) values(value1,value2);
使用 update语句修改表中数据
update table_name SET col_name1=expr1 WHERE where_definition
使用 delete语句删除表中数据
delete from tbl_name WHERE where_definition
使用select语句查询表中数据
select * |{column1|expression, column2|expression,…} from table;
这里还值得注意一点的是where和having的区别:where在分组前进行条件过滤,having在分组后进行条件过滤。使用where的地方都可以用having替换。但是having可以使用分组函数,而where后不可以使用。