zoukankan      html  css  js  c++  java
  • 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),也支持表级锁,但默认情况下是采用行级锁。
    表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
    行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高
    页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

  • 相关阅读:
    ACM第六周竞赛题目——A LightOJ 1317
    数学概念——J
    数学概念——I
    数学概念——D 期望
    数学概念——A 几何概型
    数学概念——E 期望(经典问题)
    数学概念——F 概率(经典问题)birthday paradox
    数学概念——H 最美素数
    数学概念——G 最大公约数
    UVa1328
  • 原文地址:https://www.cnblogs.com/hally/p/9177068.html
Copyright © 2011-2022 走看看