mysql的基本操作

mysql查看库:show databases;查看所有表:show tables;使用数据库;use 数据库名字

创建数据库:create database student

 mysql的数据类型:

整数类型 :tinyint    1个字节     小整数值

    SMALLINT   2个字节    大整数类型
    int    4个字节    大整数类型
    bigint   8个字节   极大整数值

浮点类型: float   4个字节  小数

    double   8个字节   小数

字符串类型: char   定长类型  'aa'   ‘a ’  '1'    '11aa'

    varchar   变长类型   'aa'    'a'

枚举类型:  enum   enum('男','女')

集合: set   set('1','2','3')

时间类型:  datetime   具体的时间

    timestamp   时间戳

无符号位:  unsigned

auto_increment  :   经常和主键使用,每次递增1

主键 : primary key(`id`)

默认: default

指定显示中文 :  ENGINE= MYISAM CHARACTER SET utf8

插入数据 :   insert into table_name(name,Sex,Birth,Department,Address) values('张三','男',2017-01-01,'计算机系','北京');

基本查询:
select * from 表名
查询所有的数据
select name,age from 表名
查询指定的字段
select * from 表名 limit 1
只显示第一条数据
select * from 表名 limit 2,5
2表示起始位置,5表示要显示的数据条数
select name as '姓名' from 表名

关键字查询:

where
select * from 表名 where name='张三'
where后面跟条件语句

in
select * from 表名 where xxx in('中文系','计算机系')

运算查询
select * from 表名 where age>22
select * from 表名 where age-5>15
select * from 表名 where age>15 and age<22
select * from 表名 where age between 15 and 22
between....and....:在...之间....

模糊查询
like
select * from 表名 where name like '张%'
%表示匹配所有
select * from 表名 where name like '%三'
select * from 表名 where name like '张_'
select * from 表名 where name like '_三_'

聚合查询(函数)
count:统计
select count(*) from student
select count(*) from student where age>20
select count(id) from student
sum:总和
select sum(score) from score
avg:平均
select avg(score) from score
max:最大值
select max(score) from score
min:最小值
select min(score) from score

排序
order by
select * from student order by birth
order by ...asc:默认升序可以省略asc
select id,name,birth from student order by birth desc
desc是降序,不可以省略

分组
group by
select xxx,sum(score) from score group by xxx
having
select xxx,sum(score) as sum_score from score group by xxx having sum_score>500

排序分组
select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc
group by.... order by...
select 类别, 摘要, sum(数量) as 数量之和
from A
group by all 类别, 摘要
group by all...

having和where
select 类别, SUM(数量)from A
where 数量 >8
group by 类别
having SUM(数量) >10

联表查询
select A.id,A.name,B.name from A,B where A.id=B.id;
Inner join内连接
select * from A inner join B on A.name = B.name;
left join
select * from A left join B on A.name = B.name;
select * from A left outer join B on A.name = B.name;
right join
select * from A right join B on A.name = B.name
三表联查

去重
distinct
select distinct 字段名 form 表名

合并
union
select * from A union select * from B

alter
删除列
ALTER TABLE 【表名字】 DROP 【列名称】
增加列
ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL COMMENT '注释说明'
修改列的类型信息
ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 BIGINT NOT NULL COMMENT '注释说明'
重命名列
ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称】 BIGINT NOT NULL COMMENT '注释说明'
重命名表
ALTER TABLE 【表名字】 RENAME 【表新名字】
删除表中主键
Alter TABLE 【表名字】 drop primary key

查看表的创建语句
show create table 表名

复制表
1,先使用show create table 表来查看创建的语句
2,复制上面命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构
3,复制表的内容,可以使用 INSERT INTO ... SELECT 语句来实现
insert into 新表名(字段1,字段2,字段3) select 字段1,字段2,字段3 from 旧表名

导出数据
SELECT ... INTO OUTFILE
select * from 表名 into outfile '存储文件的位置:/tmp/tutorials.txt'
导出sql格式的数据
mysqldump -u root -p RUNOOB runoob_tbl > dump.txt
导出整个数据库的数据
mysqldump -u root -p RUNOOB > database_dump.txt
备份所有数据库
mysqldump -u root -p --all-databases > database_dump.txt
将数据表及数据库拷贝至其他主机
mysqldump -u root -p database_name table_name > dump.txt
将备份的数据库导入到MySQL服务器中
mysql -u root -p database_name < dump.txt

 

导入数据
使用 LOAD DATA 导入数据
LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
使用 mysqlimport 导入数据
mysqlimport -u root -p --local database_name dump.txt

数据库的锁
mysql有三种锁
页级、表级、行级
MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking)
BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁
InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

 

posted @ 2018-06-13 12:00  老僧观天下  阅读(182)  评论(0编辑  收藏  举报